在某些文本编辑器(如e)中,您可以选择多个位置,在键入时,所有选定的位置都将替换为您键入的字符。
例如,假设你有
<tag1 class=""></tag1>
<tag2><tag3 class=""></tag3></tag2>
在e中,您可以选择两个位置(内部引号组),然后开始输入,两个位置将同时更新。在vim中,您可以一次选择多个已连接的列然后进行编辑,但我想知道是否有任何方法可以选择多个未排列的位置。
答案 0 :(得分:8)
以下是我可能会编辑这些特定行(有很多方法):
/""<enter>
aText to replace...<esc>
n
.
首先,搜索空引号以将光标放在第一个上。使用“a”(追加)命令,键入要放在引号内的新文本。完成后,使用“n”(下一个)转到下一个实例,然后使用“。” (重复上一个命令)再次插入相同的文本。重复“n”。根据需要多次。
这种方法可以减少前期准备工作,让您立即开始使用,而无需提前识别您可能想要添加文本的所有位置。
答案 1 :(得分:5)
您可能正在寻找块状视觉模式,这样可以同时在多行上插入,删除等。
Blockwise模式允许使用一个角中的初始点的列和线进行方形选择,并且当前光标位置定义另一个角的列和线。这与默认的基于行的选择相反。
CTRL-v将使您处于块状视觉模式。
如果你有几行这样的话:
INSERT INTO Users VALUES(1, 'Jim');
INSERT INTO Users VALUES(2, 'Jack');
INSERT INTO Users VALUES(3, 'Joseph');
并希望在每行的id之后插入“0”,然后将光标放在第一行的逗号之后:
INSERT INTO Users VALUES(1,* 'Jim');
用星号表示光标,命令序列为:
CTRL-v # Put into blockwise visual mode
j # Down a line
j # Down a line
CTRL-I # Captial I for insert
0, # the text to insert
Esc # escape
现在的文字应如下:
INSERT INTO Users VALUES(1, 0, 'Jim');
INSERT INTO Users VALUES(2, 0, 'Jack');
INSERT INTO Users VALUES(3, 0, 'Joseph');
同样是块状视觉模式,x将删除一个选择,y会将其拉出。
:帮助CTRL-V提供进一步的文档。
答案 2 :(得分:2)
对于你的例子,我会使用替换:
:%s/class=""/class="something"/g
答案 3 :(得分:2)
看看SnippetsEmu。它应该做一些非常类似于你需要的东西。
它模拟TextMates片段。您应该能够重复使用具有相同标签的一个代码段,并且在您键入时,编辑将做正确的事情,在所有位置更新相同的代码。
答案 4 :(得分:0)
我也在寻找类似的东西,更具体地来说是ST2的一个非常有用的功能,你按CTRL + D选择下一个匹配项,然后只需输入它就替换两个匹配项。
答案 5 :(得分:0)
试试这个插件。只需按CTRL + N多次,即可选择多次出现