Vim代码段,没有代码段/模板插件



我经常使用vim,但我的工作流程通常迫使我与其他IDE交互,所以我不是一个神一样的vim超级用户,也不想很快成为。Vim对我来说不是一个IDE,我也不希望它成为。它是一个快速而轻便的编辑器,不会妨碍我。

我追求的是使用和配置的简单性,而不是效率上的超级强大或金星。

到目前为止,我已经用我的代码段预加载了几个寄存器,然后为哪个寄存器有哪个文本块保留了一个备忘单。但我的寄存器快用完了,一个字母数字字母并不能立即提醒我预装了什么。

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

  • 我不需要有语言意识的片段(聪明的关键词将是我的解决方案(
  • 我不需要任何上下文感知或智能的片段
  • 我不打算使用迷你模板语言来简化我的代码片段,这太过分了
  • 我的片段应该直接粘贴到它们定义的原始文本中,而不是其他内容

我想我可以开始编写命名函数,只将一块文本打印到当前缓冲区中。这几乎就是我所需要的,但我希望有一种更简单的方法来维护/更新我的代码片段集合。


有没有任何极简主义插件可以覆盖我的用例,或者我需要坚持我的.virc/python命令方法?

次要更新我没有意识到你可以用地图引导器链接这么多字母,这可能会提供我所需要的魔法。然后,我仍然需要别名返回到一些更大的函数集(可能使用python来定义命令(。

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

  • 缩写

    :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-]>来扩展它们。

    参见: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的值一样,注册<leader>something会注册{current value of mapleader}something

假设您创建一个自定义<leader>映射:

let mapleader = ","
map <leader>b :bnext<CR>

Vim寄存器CCD_ 15。如果您决定在当前会话稍后更改<leader>

:let mapleader = "%"

你仍然会有,b。只有进一步的映射才会使用新的<leader>:

map <leader>b :bnext<CR>

您同时获得,b%b

创建映射时,<leader>仅表示。在使用中,它只是,b%b

最新更新