目前,我正在尝试学习 VIM 并禁用所有模式的箭头键。在输入新函数时,我总是同时打开和关闭括号,以免忘记它们。因为,我不能返回(没有箭头键)我想知道它是如何在 VIM 中完成的,因为一旦关闭,你就在括号之外。
退出 INSERT 模式,进入括号并再次进入 INSERT 模式是标准做法吗?或者你只是让括号打开直到你完成?
我确实知道 AutoClose 脚本。这个问题更有助于理解 VIM 的做事方式,所以我想知道其他开发人员是如何克服这个问题的。
目前,我正在尝试学习 VIM 并禁用所有模式的箭头键。在输入新函数时,我总是同时打开和关闭括号,以免忘记它们。因为,我不能返回(没有箭头键)我想知道它是如何在 VIM 中完成的,因为一旦关闭,你就在括号之外。
退出 INSERT 模式,进入括号并再次进入 INSERT 模式是标准做法吗?或者你只是让括号打开直到你完成?
我确实知道 AutoClose 脚本。这个问题更有助于理解 VIM 的做事方式,所以我想知道其他开发人员是如何克服这个问题的。
忘记右括号会导致稍后突出显示问题,使您不太可能进一步忽略它们。
我建议养成在键入时在括号中间键入参数的习惯,并在完成参数后关闭括号。(无论如何,如果您正在尝试学习vim
,这种变化似乎并不会太大而无法适应——您必须适应的其他事情的数量已经非常惊人了。)
Vim 模态特性背后的想法是,您将大部分时间花在普通模式下,而不是插入模式下。仅当您想要插入文本时才进入插入模式,并且每当您想要执行不插入原始文本的操作时 - 您会返回正常模式。
无论如何,如果由于某种原因您不想离开插入模式,您可以按CTRL+o
运行单个正常模式命令。但我建议习惯于在模式之间切换——切换模式应该是 Vim 用户的第二天性。
问题:退出 INSERT 模式,移动到括号中并再次进入 INSERT 模式是标准做法吗?或者你只是让括号打开直到你完成?
回答:通常只键入函数参数,然后键入右括号。但是,是的,如果您已经输入了)
,然后您决定要返回一个字符,您可能只需按 Escape 键,然后i
在当前位置之前按插入。这只是两次击键,经验丰富的 vi 用户非常习惯按 Escape 键。
如果您实际键入);
,则需要按 Escape 键,然后按h
和i
。如果你经常这样做,你会习惯的。
某些键组合成为第二天性。例如,您可以在 vi 中通过点击x
, 来转置两个字符,以删除光标下的字符并使光标在下一个字符上;然后p
,将该字符粘贴到光标位置之后。我一生中打字xp
的次数已经够多了,我什至都没有考虑过……我的手指只知道那些键在哪里。我只是想“哦,我需要交换那些字符”,然后我的手指猛地伸出了xp
.
首先,在命令模式下%
将您移动到相应的括号、大括号或方括号。
回答您的问题:是的,立即关闭括号、大括号、方括号等的人......很可能退出命令模式,然后重新进入插入模式以返回编辑。
对我来说,这甚至不是我注意到的事情。很快对你来说也是一样的。
每当我开始一个新的 if 语句时,我都会立即打开和关闭大括号。添加右大括号后,我点击ESCO打开右大括号(或ESCki)上方的行。然后我又开始打字了。
这绝不会给我带来不便或问题。所有这些很快就会成为你的第二天性......
此外,您甚至不会再考虑那些箭头键......您只会使用h返回(或更好的东西)。
一种选择是使用键映射跳转到左括号/括号。我倾向于立即关闭括号/括号以确保它们是平衡的(即使 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 插件,一旦你掌握了它,它就是一个生产力助推器!
您根本不需要停止使用箭头键。这是一个愚蠢的想法。
hjkl
仅当您触摸类型时才比箭头键“更好” ,因为它位于主行。如果您不触摸类型,您的手已经自然地做了很多运动,其余的都可以伸手去拿方向键。如果您不触摸类型,则没有主行。
不过,您的问题并不是真正的hjkl
vs 箭头问题。您可以通过养成只输入左括号、然后是参数、然后是右括号的习惯或使用“自动关闭”机制来解决它。
您可以通过将此行添加到您的~/.vimrc
:
inoremap ( ()<C-o>h
或使用众多可用插件之一。