Vim片段,没有片段/模板插件

时间:2014-08-02 04:43:49

标签: vim vim-plugin

我经常使用vim,但是我的工作流程通常会迫使我与其他IDE进行交互,所以我不是一个像神一样的vim poweruser,也不是我想要很快成为其他人。 Vim不是我的IDE,也不是我想要的。这是一个快速而轻巧的编辑器,并不妨碍我。

我正在寻找简单的使用和配置,而不是超级能力或金星效率。

到目前为止,我一直在使用我的代码段预加载几个寄存器,然后保留一个备忘单,其中哪个寄存器具有哪个文本块。但是我的寄存器用完了,一个单字母数字字母并没有立即提醒我我预装的是什么。

存储任意数量的原始文本块的最简单方法是什么,然后使用单个关键字和1个热键(按任意顺序:关键字<>热键)检索它们。

  • 我不需要语言识别片段(聪明的关键字将成为我的解决方案)
  • 我不需要具有上下文感知能力或任何智能的片段
  • 我不打算使用迷你模板语言来简化我的片段,这太过分了。
  • 我的片段应该直接粘贴在他们定义的原始文本中,没有别的。

我想我可以开始编写仅将文本块打印到当前缓冲区的命名函数。这几乎就是我所需要的,但我希望能够更轻松地维护/更新我的代码段集合。


是否有任何覆盖我的用例的极简主义插件,或者我是否需要坚持我的.vimrc / python-commands方法?

次要更新 我没有意识到你可以用枫木连接这么多字母,这可能提供我需要的魔力。然后我仍然需要别名回到一些更大的函数集(可能使用python来定义命令)。

1 个答案:

答案 0 :(得分:6)

如果您需要无插件解决方案,可以使用:

  • <强>缩写

    :iabbrev obj    var foo = {};<Left><Left>
    :iabbrev func   function foo() {<CR><CR>}<Up><Tab>
    :iabbrev lipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer diam augue, egestas quis, aliquam ut, venenatis ut, quam. Quisque ut augue. Integer non neque a lectus venenatis fermentum. Morbi quis eros nec elit molestie vehicula. Integer nunc lacus, sodales posuere, rutrum quis, blandit at, mi. Vivamus imperdiet wisi vel mauris. Morbi mattis ante non metus. Sed turpis dui, fermentum ut, aliquam eget, vulputate ullamcorper, pede. Nam non dolor. Etiam lobortis, urna id bibendum convallis, ligula augue auctor eros, a dictum sapien mi a tellus. Proin vel justo. Nunc malesuada turpis a sapien.
    

    如果你不介意尾随空格,你可以展开那些<Space>,或者<C-]>。{/ p>

    请参阅:help abbreviations

  • 插入模式映射

    您可以使用<leader>创建任何复杂映射。

    这里的密钥(双关语)只是选择一个很少使用的密钥,并将其用作映射的命名空间。例如,在我的法语AZERTY键盘上,我有§键完全没用(不在Vim中使用,不用于法语,不用于我使用的任何编程语言)。如果我想构建一个映射库,我会将它用作这些片段的“领导者”:

    :inoremap §obj    var foo = {};<Left><Left>
    :inoremap §func   function foo() {<CR><CR>}<Up><Tab>
    :inoremap §lipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer diam augue, egestas quis, aliquam ut, venenatis ut, quam. Quisque ut augue. Integer non neque a lectus venenatis fermentum. Morbi quis eros nec elit molestie vehicula. Integer nunc lacus, sodales posuere, rutrum quis, blandit at, mi. Vivamus imperdiet wisi vel mauris. Morbi mattis ante non metus. Sed turpis dui, fermentum ut, aliquam eget, vulputate ullamcorper, pede. Nam non dolor. Etiam lobortis, urna id bibendum convallis, ligula augue auctor eros, a dictum sapien mi a tellus. Proin vel justo. Nunc malesuada turpis a sapien.
    

无论选择缩写还是映射,都可以将所有缩写或映射保存在专用文件中:

~/.vim/snippets.vim

并在~/.vimrc

中提供
runtime snippets.vim

如果您决定将该文件放在~/.vim/目录之外的某个位置,则可以使用以下内容进行搜索:

source ~/path/to/snippets.vim

<强> 修改

关于<leader> ...

<leader>实际上并不那么特别:您通常可以将其视为变量,但就像在数据库中插入$foo一样会插入$foo的值,注册{{ 1}}将注册<leader>something

假设您创建了自定义{current value of mapleader}something映射:

<leader>

Vim注册let mapleader = "," map <leader>b :bnext<CR> 。如果您决定稍后在当前会话中更改,b

<leader>

你还有:let mapleader = "%" 。只有进一步的映射才会使用新的,b

<leader>

您同时获得map <leader>b :bnext<CR> ,b

创建映射时,

%b表示。在使用中,它只是<leader>,b