Vim代码片段,不带代码片段/模板插件

Vim代码片段,不带代码片段/模板插件,vim,vim-plugin,Vim,Vim Plugin,我经常使用vim,但我的工作流程通常会迫使我与其他IDE交互,因此我不是vim poweruser那样的神,也不想很快成为神。Vim对我来说不是IDE,我也不希望它成为IDE。这是一个快速而轻松的编辑器,不会妨碍我的工作 我追求的是使用和配置的简单性,而不是uber power或效率方面的金星 到目前为止,我一直在用我的代码片段预装几个寄存器,然后保留一个备忘单,记录哪个寄存器有哪个文本块。但我的寄存器快用完了,一个字母数字字母并不能立即提醒我预装了什么 存储任意数量的原始文本块,然后使用单个关

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

我追求的是使用和配置的简单性,而不是uber power或效率方面的金星

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

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

  • 我不需要有语言意识的代码片段(聪明的关键字将是我的解决方案)
  • 我不需要任何上下文感知或智能的代码片段
  • 我不打算使用迷你模板语言来简化我的代码片段,这太过分了
  • 我的代码片段应该直接粘贴到它们定义时使用的原始文本中,而不是其他内容
我想我可以开始编写命名函数,只将一块文本打印到当前缓冲区中。这几乎是我所需要的全部,但我希望有一种更简单的方法来维护/更新我的代码片段集合


是否有一些最简单的插件覆盖了我的用例,或者我需要坚持使用我的.vimrc/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.
    
无论您选择缩写还是映射,都可以将它们保存在专用文件中:

~/.vim/snippets.vim
并在您的
~/.vimrc
中找到它的来源:

runtime snippets.vim
如果您决定将该文件放在
~/.vim/
目录之外的某个位置,您可以使用以下资源获取该文件:

source ~/path/to/snippets.vim
编辑

关于

真的没有那么特别:你通常可以把它看作是一个变量,但是,就像在数据库中插入
$foo
会插入
$foo
的值一样,注册
某物
会注册
{mapleader当前值}某物

假设您创建了一个自定义的
映射:

let mapleader = ","
map <leader>b :bnext<CR>
您仍然有
,b
。只有进一步的映射才会使用新的

地图b:bnext
您可以同时获得
、b
%b


只有在创建映射时才有意义。在使用中,它只是
,b
%b

缩写可能就是您要查找的
h:iabbrev
,尽管设置很多内容会很烦人(特别是当它们是多行时)。或者只是插入模式映射。我不确定我也推荐。“FDNOFF”是多行块,如果你想用Python代码制作片段,考虑使用,即使它是插件,也可以考虑使用。如果我清除了当前的MaPADADER绑定,这和你提到的*唯一的*命名空间是一样的吗?没有领导者有什么区别?一种方式是否会比另一种方式更不正常?如果您已经有了
f
映射,添加
foo
映射将引入歧义,并导致Vim在键入
f
时等待一秒钟左右。我建议使用不同的“leader”是基于这样的假设,即您希望您的代码片段与常规的
映射分开;它没有什么特别之处,只是您可以在一个位置更改它的值,并且使用它的任何位置都会自动更新。否则,leader除了像您在回答中所说明的那样逐字输入值之外,并没有任何特权?(如果我改变主意的话,工作会更多)?听起来不错?如果是的话,我想你已经把我卖掉了。你做得很好。我已经制作了几个系列的键映射,它们都调用了2个python定义的命令,传递了1个简单的关键字,所有这些都在一个额外的代码片段文件(JSON打包)中处理。它很容易调用我定义的keymaps作为一个想要自动完成的快速参考卡。感谢您的帮助,一旦我调整了自动完成功能,我会尽量记住发布包装它的python实用程序。
let mapleader = ","
map <leader>b :bnext<CR>
:let mapleader = "%"
map <leader>b :bnext<CR>