我是Vim的新手,我需要为这种陈述加快打字速度。
if (a == 'e') {
foo();
}
在其他文本编辑器中,我通常先键入if() {}
,然后将文本插入括号和花括号中。如果我在Vim中执行此操作,我需要切换回正常状态,将光标移动到()
的中间,然后移到{}
的中间...在i
和esc
之间切换。 ..
对于为Vim初学者输入这种语法,你有什么建议?如果您能逐步向我展示该示例的命令,我将不胜感激。
答案 0 :(得分:2)
答案 1 :(得分:1)
片段就像类固醇上的内置:abbreviate
一样,通常带有参数插入,镜像和内部多个停止。第一个非常着名(并且仍然广泛使用)的Vim插件之一是snipMate(受 TextMate 编辑器的启发);不幸的是,它不再维持;虽然有a fork。现代替代方案(虽然需要Python)是UltiSnips。还有更多内容,请参阅this list on the Vim Tips Wiki。
有三件事要评估:第一,摘录引擎本身的功能,第二,作者或其他人提供的片段的质量和广度;第三,添加新片段是多么容易。
答案 2 :(得分:1)
有两种方法可以解决您的目标:
缩写和旧的做事方式。你只需输入if
和空格,然后输入!您将在网络上找到大量示例。只有少数人会对上下文敏感(即他们不会在评论或字符串上下文中扩展),或者能够考虑当前的项目间距风格。在lh-cpp中,您将找到C和C ++的常用控制语句缩写,它们需要为类似语言复制(来自php ftplugin的runtime ftplugin/c/c_snippets.vim
应该这样做在你的情况下) - 在lh-misc我支持其他几种语言(对于VimL和shell)
Snippet引擎是做同样事情的时髦方式。这次,您可以输入i
或if
,然后<tab>
(或CTRL+SPACE
或...)。由于我们需要明确要求扩展,因此控制语句片段不需要了解当前上下文。其他人已经链接到时尚的片段引擎。来自lh-cpp的片段(依赖于mu-template)在扩展控制语句片段时会考虑project style(即某些项目需要)
和{
在同一行上,其他想要在两者之间换行,...)
答案 3 :(得分:0)
如果你想和香草Vim一起使用,这是我的答案。
在大多数情况下,我想首先输入括号并稍后填写条件是没有意义的,只需立即输入:
if (a == 'e')
然后你可以继续
输入{}<ESC>
:
if (a == 'e') {}
^ cursor is here
光标已经放置,因此您可以继续i<CR>
并输入正文(如果配置正确,Vim应该缩进)。
或输入{<CR>}<ESC>
:
if (a == 'e') {
}
^ cursor is here
然后您可以按O
(打开光标上方的新行)进入正文。可能Vim也会在这里自动缩进(它不在我的配置中)。
如果您确实想在输入之后填写条件:
if () {
}
^ cursor
您可以输入kf(a
。
如果有人在没有插件的情况下知道更好的方法,欢迎提出建议。