我经常想要更改括号内的文字。如果我的光标位于该行的开头:
String result = callMethod("someString");
我需要先在括号内移动
String result = callMethod("someString");
之前我可以输入ci(
来替换文字:
String result = callMethod();
但是,我注意到在更改引号内的文本时,我不需要先移动光标。
String result = callMethod("someString");
然后输入ci"
,光标将跳转到该行的第一组引号,清除其内容:
String result = callMethod("");
是否可以使用括号来享受相同的功能?
答案 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使其与括号等一起使用。此插件也会添加更多文本对象。