如何跳转到VIM中的括号

时间:2012-06-12 01:42:12

标签: vim

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

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

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

6 个答案:

答案 0 :(得分:7)

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

我建议习惯在你输入时在括号中间输入参数,并在完成参数后关闭parens。 (如果你正在努力学习vim,无论如何,这种变化看起来似乎不太大,无法适应 - 你必须适应的其他事物的数量已经非常惊人了。)

答案 1 :(得分:3)

Vim模态性质背后的想法是你将大部分时间花在普通模式上,而不是插入模式。只有当你想要插入文本时才进入插入模式,并且只要你想做一些没有插入原始文本的东西 - 你就会回到普通模式。

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

答案 2 :(得分:2)

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

答案:更常见的方法是输入函数参数,然后输入右括号。但是,是的,如果你已经键入了),然后你决定要回到一个角色,你可能只需点击Escape键,然后点击i插入当前位置。这只是两次击键,经验丰富的vi用户非常习惯于击中Escape键。

如果您实际输入了);,则需要点击退出键,然后点击hi。如果你这么做,你就会习惯它。

某些键组合成为第二天性。例如,你可以通过点击x来转换vi中的两个字符,删除光标下的字符并使光标位于下一个字符上;然后p,粘贴光标位置后的那个字符。我在生活中输入了xp足够的次数,我甚至都没想过......我的手指只知道那些钥匙在哪里。我只是想“噢,我需要换掉那些角色”,然后我的手指砰地一声xp

答案 3 :(得分:2)

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

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

对我来说,这甚至都不是我注意到的。很快就会对你有所帮助。

每当我开始一个新的if语句时,我立即打开并关闭大括号。添加结束括号后,我按 ESC O 打开我的右大括号上方的行(或 ESC k )。然后我又开始打字了。

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

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

答案 4 :(得分:1)

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

getActionBar

这是命令细分:

  • 将编辑模式中的.empty().append()映射到
  • .html()(恢复正常模式),
  • imap <C-S-h> <esc> :call search("[{[(]", "bes")<CR> i向后搜索一个开括号/括号并跳转到它,最后
  • <CTRL-SHIFT-h>返回插入模式

所以我可以输入<ESC>,然后:call search("[({[]", "bes")<CR>来跳回括号以提供参数。

有点相关:看一下vim-surround plugin,一旦掌握了它就会成为一种生产力助推器!

答案 5 :(得分:0)

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

如果你触摸类型,

hjkl比箭头键 “更好”,因为它在主行上。如果你没有触摸类型,你的手已经自然地做了很多的动作,并且伸手去拿箭头键。如果你没有触摸类型,则没有主页。

但是,您的问题实际上不是hjkl vs箭头问题。您可以通过养成只输入左括号,然后是参数,然后是右括号或使用“自动闭合”机制的习惯来解决它。

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

来以天真的方式执行此操作
inoremap ( ()<C-o>h

或使用the many plugins available之一。