vim navigation - 最后一个不是分号或逗号的字符

时间:2012-08-15 02:42:51

标签: vim navigation

我经常使用PHP和Javascript,我发现我经常在一个地方的中间添加一个开括号((调用函数或其他东西)然后我需要移到最后关闭它的线...

示例(编辑前):

array(
  'key' => 'value sometimes long and with \',() in string',

示例(在初始编辑之后 - 关闭paren )上的退出插入模式):

array(
  'key' => Class::method('value sometimes long and with \',() in string',
                        ^ cursor here after exiting insert mode

插入模式下所需的光标位置:

array(
  'key' => Class::method('value sometimes long and with \',() in string',
                                     cursor before comma in insert mode ^

显然,我可以$hi移动到行尾,向后移动一个字符并进入插入模式......或者我可以执行A<在EOL进入插入模式左箭头一个地方。

我想知道是否有人知道更容易/更好的方法吗?

更好的是,我想象一个简单的函数来“知道”最后一个字符是逗号还是分号,并移动到最后一个字符,只有当最后一个字符是逗号或分号时才向左移动。

伪代码构思:$("am I on a comma or semicolon" ? h : )i

3 个答案:

答案 0 :(得分:4)

我会使用Tim Pope提供的优秀Surround.vim插件来iClass::method<Esc>lva'S)

答案 1 :(得分:2)

我能想到的唯一标准键序列是使用 Ctrl-o 来执行一次性正常命令。例如。 Ctrl-o $ 会让你进入正确的位置。如果您有imap <C-b> <Left>,则可以在不离开主页的情况下执行此操作。

答案 2 :(得分:2)

我已经习惯了TextMate时代的自动角色配对。在Vim中有一堆插件提供这种功能;我使用DelimitMate。

当您键入第一个字符时,想法是自动关闭()[]{}''""对。这样,你就不必去做你正在谈论的体操。