如何在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}