Vim 键入控制流语句的更快方法(在C和php等中)?

Vim 键入控制流语句的更快方法(在C和php等中)?,vim,Vim,我是Vim的新手,我需要加快键入此类语句的速度 if (a == 'e') { foo(); } 在其他文本编辑器中,我通常先键入if(){},然后将文本插入括号和大括号中。如果我在Vim中这样做,我需要切换回正常,将光标移动到()的中间,然后移动到{}的中间。。。在i和esc之间切换 对于为Vim初学者键入这种语法,您有什么建议?如果您能一步一步地向我展示该示例的命令,我将不胜感激。这是一项代码段扩展的工作。看看或者 这是用于代码段扩展的作业。看看或者 代码片段类似于类固醇中内置的:缩

我是Vim的新手,我需要加快键入此类语句的速度

if (a == 'e') {
   foo();
}
在其他文本编辑器中,我通常先键入
if(){}
,然后将文本插入括号和大括号中。如果我在Vim中这样做,我需要切换回正常,将光标移动到
()
的中间,然后移动到
{}
的中间。。。在
i
esc
之间切换


对于为Vim初学者键入这种语法,您有什么建议?如果您能一步一步地向我展示该示例的命令,我将不胜感激。

这是一项代码段扩展的工作。看看或者


这是用于代码段扩展的作业。看看或者

代码片段类似于类固醇中内置的
:缩写
,通常在其中插入参数、镜像和多次停止。最早的、非常著名(并且仍然广泛使用)的Vim插件之一是(受TextMate编辑器的启发);不幸的是,它不再被维护;虽然有。一个现代的替代方案(尽管需要Python)是。还有更多,请参阅

有三件事需要评估:第一,代码片段引擎本身的特性,第二,作者或其他人提供的代码片段的质量和广度;第三,添加新代码段是多么容易。

代码段就像类固醇中内置的
:缩写
,通常在其中插入参数、镜像和多次停止。最早的、非常著名(并且仍然广泛使用)的Vim插件之一是(受TextMate编辑器的启发);不幸的是,它不再被维护;虽然有。一个现代的替代方案(尽管需要Python)是。还有更多,请参阅


有三件事需要评估:第一,代码片段引擎本身的特性,第二,作者或其他人提供的代码片段的质量和广度;第三,添加新代码片段是多么容易。

有两种方法可以解决您的目标:

  • 缩略语
  • 和代码片段引擎
缩写和旧的做事方式。您只需键入
if
和空格,然后输入tada!你可以在网上找到很多例子。只有少数会区分上下文(即它们不会在注释或字符串上下文中展开),或者能够考虑当前的项目间距样式。in,您会发现通常的控制语句缩写C和C++,它们需要复制类似的语言(A<代码>运行时FTTPULIN /C/CI片段。VIP-/COD>从PHPFTLUPIN应该在您的情况下)——在我支持其他几种语言(对于VimL和shell)


代码片段引擎是做同样事情的流行方式。这一次,您将能够键入
i
if
,然后键入
(或
CTRL+SPACE
,或…)。控制语句片段不需要知道当前上下文,因为我们需要显式地进行扩展。其他人已经给出了流行片段引擎的链接。lh cpp中的代码段(依赖于mu模板)在扩展控制语句代码段(即,一些项目希望
{
在同一行上,另一些项目希望中间有一个换行,…)

有两种方法可以解决您的目标:

  • 缩略语
  • 和代码片段引擎
缩写和旧的做事方式。你只需键入
if
和空格,还有tada!你会在网上找到很多例子。只有少数例子是上下文敏感的(即它们不会在注释或字符串上下文中展开)你可以找到C和C++常用的控制语句缩写,它们需要复制类似的语言(A<代码>运行时FTTPULIN /C/CI片段)。VPH-FTPuLuin应该在你的情况下这样做——我支持其他几种语言。(用于VimL和外壳)


代码段引擎是做同样事情的流行方式。这一次,您可以键入
i
if
,然后键入
(或
CTRL+SPACE
,或…)。控制语句片段不需要知道当前上下文,因为我们需要显式地进行扩展。其他人已经提供了指向流行代码片段引擎的链接。lh cpp(依赖于mu模板)的代码片段在扩展控制语句片段(即,某些项目需要
)时会考虑到
{
在同一行上,其他人希望在这两行之间换行,…)

如果你想使用vanilla Vim,这里是我的答案

在大多数情况下,我想没有必要先输入括号,然后再填写条件,只需立即全部输入即可:

if (a == 'e')
然后你可以继续

  • 通过键入
    {}

    光标已经放置,因此您可以继续使用
    i
    并键入正文(如果配置正确,Vim应该为您缩进)

  • 或者通过键入
    {}

    然后您可以通过按
    O
    (在光标上方打开新行)进入主体。可能Vim也会在此处自动缩进(它不在我的配置中)

如果您真的想在输入后填写条件:

if () {
}
^ cursor
您可以通过键入
kf(a
来执行此操作



如果有人知道在没有插件的情况下如何更好地实现这一点,欢迎提出建议。

如果您想使用vanilla Vim,这里是我的答案

在大多数情况下,我想没有必要先输入括号,然后再填写条件,只需立即全部输入即可:

if (a == 'e')
然后你可以继续

  • 通过键入
    {}

    光标已放置,因此您可以继续使用
    i
    并键入正文(如果配置正确,
    if () {
    }
    ^ cursor