如何在Vim中创建简短的摘要?

时间:2020-03-05 18:40:33  来源:igfitidea点击:

我最近开始使用Vim作为文本编辑器,目前正在开发自己的自定义项。

我想键盘映射几乎可以做任何事情,但是暂时我几乎完全将它们用作一种片段功能。

因此,例如,如果我输入def {TAB}(:imap def {TAB} def():<ESC> 3ha),它将扩展为:

def |(): # '|' represents the caret

这可以按预期工作,但是当我输入一个包含" def"的单词而对扩展它不感兴趣时​​,Vim等待一个完整的命令时,我感到很烦。

  • 有没有办法避免这种情况或者为此目的更有效地使用此功能?
  • 还有其他Vim功能更适合吗?

快速浏览了SnippetsEmu之后,它似乎是最好的选择,并且比我最初想象的要容易得多。

继续前面的示例:

:Snippet def <{}>():

定义后,我们可以通过输入def {TAB}来扩展代码段。

解决方案

回答

SnippetsEmu是一个有用的代码片段插件。

回答

正如MDCore所指出的那样,SnippetsEmu是一种受欢迎的Vim脚本,它可以完成更多任务。如果只需要扩展(不移回插入符号),则可以使用标准的:ab [breviate]命令。

:ab[breviate] [<expr>] {lhs} {rhs}
        add abbreviation for {lhs} to {rhs}.  If {lhs} already
        existed it is replaced with the new {rhs}.  {rhs} may
        contain spaces.
        See |:map-<expr>| for the optional <expr> argument.

回答

如果SnippetsEmu对于需求来说太重或者太雄心勃勃(对我而言),我编写了一个插件,可以根据文件类型管理片段。选择摘录时,它甚至具有制表符补全功能! :)

在这里获取:snippets.vim

回答

像texmate的狙击手:)
http://www.vim.org/scripts/script.php?script_id=2540

视频:
http://vimeo.com/3535418

snippet def 
     """ ${1:docstring} """
     def ${2:name}:
         return ${3:value}