更改当前行中稍后出现的括号内的文本

时间:2016-06-02 17:35:17

标签: vim

我经常想要更改括号内的文字。如果我的光标位于该行的开头:

String result = callMethod("someString");

我需要先在括号内移动

String result = callMethod("someString");

之前我可以输入ci(来替换文字:

String result = callMethod();

但是,我注意到在更改引号内的文本时,我不需要先移动光标。

String result = callMethod("someString");

然后输入ci",光标将跳转到该行的第一组引号,清除其内容:

String result = callMethod("");

是否可以使用括号来享受相同的功能?

2 个答案:

答案 0 :(得分:4)

这是另一种选择。将以下代码添加到.vimrc文件

    onoremap in( :<c-u>execute "normal! /(\rvi("<cr>
    onoremap il( :<c-u>execute "normal! ?)\rvi("<cr>
    onoremap in{ :<c-u>execute "normal! /{\rvi("<cr>
    onoremap il{ :<c-u>execute "normal! ?}\rvi("<cr>

然后你可以输入cin(来替换下一对括号内的文字。您还可以cil(替换最近的一对括号(n代表“next”,l代表“last”)。如你所见,我也有这个设置用于括号,也可以做方括号,引号等。由于这是一个操作员地图,如果我只想删除文本,我也可以输入din(不替换它,或任何其他对一系列文本起作用的操作。

我首先在本教程中学习了这个映射:http://learnvimscriptthehardway.stevelosh.com/,我强烈推荐。

答案 1 :(得分:3)

双引号和单引号默认按照您描述的方式工作。

尝试使用插件https://github.com/wellle/targets.vim使其与括号等一起使用。此插件也会添加更多文本对象。