8

目前,我正在尝试学习 VIM 并禁用所有模式的箭头键。在输入新函数时,我总是同时打开和关闭括号,以免忘记它们。因为,我不能返回(没有箭头键)我想知道它是如何在 VIM 中完成的,因为一旦关闭,你就在括号之外。

退出 INSERT 模式,进入括号并再次进入 INSERT 模式是标准做法吗?或者你只是让括号打开直到你完成?

我确实知道 AutoClose 脚本。这个问题更有助于理解 VIM 的做事方式,所以我想知道其他开发人员是如何克服这个问题的。

4

6 回答 6

7

忘记右括号会导致稍后突出显示问题,使您不太可能进一步忽略它们。

我建议养成在键入时在括号中间键入参数的习惯,并在完成参数后关闭括号。(无论如何,如果您正在尝试学习vim,这种变化似乎并不会太大而无法适应——您必须适应的其他事情的数量已经非常惊人了。)

于 2012-06-12T01:45:07.170 回答
3

Vim 模态特性背后的想法是,您将大部分时间花在普通模式下,而不是插入模式下。仅当您想要插入文本时才进入插入模式,并且每当您想要执行不插入原始文本的操作时 - 您会返回正常模式。

无论如何,如果由于某种原因您不想离开插入模式,您可以按CTRL+o运行单个正常模式命令。但我建议习惯于在模式之间切换——切换模式应该是 Vim 用户的第二天性。

于 2012-06-12T01:49:36.500 回答
2

问题:退出 INSERT 模式,移动到括号中并再次进入 INSERT 模式是标准做法吗?或者你只是让括号打开直到你完成?

回答:通常只键入函数参数,然后键入右括号。但是,是的,如果您已经输入了),然后您决定要返回一个字符,您可能只需按 Escape 键,然后i在当前位置之前按插入。这只是两次击键,经验丰富的 vi 用户非常习惯按 Escape 键。

如果您实际键入);,则需要按 Escape 键,然后按hi。如果你经常这样做,你会习惯的。

某些键组合成为第二天性。例如,您可以在 vi 中通过点击x, 来转置两个字符,以删除光标下的字符并使光标在下一个字符上;然后p,将该字符粘贴到光标位置之后。我一生中打字xp的次数已经够多了,我什至都没有考虑过……我的手指只知道那些键在哪里。我只是想“哦,我需要交换那些字符”,然后我的手指猛地伸出了xp.

于 2012-06-12T01:55:02.370 回答
2

首先,在命令模式下%将您移动到相应的括号、大括号或方括号。

回答您的问题:是的,立即关闭括号、大括号、方括号等的人......很可能退出命令模式,然后重新进入插入模式以返回编辑。

对我来说,这甚至不是我注意到的事情。很快对你来说也是一样的。

每当我开始一个新的 if 语句时,我都会立即打开和关闭大括号。添加右大括号后,我点击ESCO打开右大括号(或ESCki)上方的行。然后我又开始打字了。

这绝不会给我带来不便或问题。所有这些很快就会成为你的第二天性......

此外,您甚至不会再考虑那些箭头键......您只会使用h返回(或更好的东西)。

于 2012-06-12T01:59:03.333 回答
1

一种选择是使用键映射跳转到左括号/括号。我倾向于立即关闭括号/括号以确保它们是平衡的(即使 vim 会生气地让我知道如果发生这种情况我会错过它们——习惯的力量)。把这个映射放到你的 vimrc 中:

imap <C-S-h> <esc> :call search("[{[(]", "bes")<CR> i

下面是命令分解:

  • 以编辑模式映射<CTRL-SHIFT-h>
  • <ESC>(回到正常模式),
  • :call search("[({[]", "bes")<CR>向后搜索左括号/括号并跳转到它,最后
  • i返回插入模式

所以我可以输入foo();, 然后<CTRL-SHIFT-h>跳回到括号中提供参数。

有点相关:研究vim-surround 插件,一旦你掌握了它,它就是一个生产力助推器!

于 2017-08-02T16:19:47.400 回答
0

根本不需要停止使用箭头键。这是一个愚蠢的想法。

hjkl当您触摸类型时才比箭头键“更好” ,因为它位于主行。如果您不触摸类型,您的手已经自然地做了很多运动,其余的都可以伸手去拿方向键。如果您不触摸类型,则没有主行。

不过,您的问题并不是真正的hjklvs 箭头问题。您可以通过养成只输入左括号、然后是参数、然后是右括号的习惯或使用“自动关闭”机制来解决它。

您可以通过将此行添加到您的~/.vimrc:

inoremap ( ()<C-o>h

或使用众多可用插件之一

于 2012-06-12T05:39:01.067 回答