在某些文本编辑器(如e)中,您可以选择多个位置,在键入时,所有选定的位置都将替换为您键入的字符.
例如,假设你有
<tag1 class=""></tag1>
<tag2><tag3 class=""></tag3></tag2>
Run Code Online (Sandbox Code Playgroud)
在e中,您可以选择两个位置(内部引号组),然后开始键入,两个位置将同时更新.在vim中,您可以一次选择几个连接的列然后进行编辑,但我想知道是否有任何方法可以选择多个未排列的位置.
以下是我可能编辑这些特定行的方法(有很多方法):
/""<enter>
aText to replace...<esc>
n
.
Run Code Online (Sandbox Code Playgroud)
首先,搜索空引号以将光标放在第一个上.使用"a"(追加)命令,键入要放在引号内的新文本.完成后,使用"n"(下一个)转到下一个实例,然后使用"." (重复上一个命令)再次插入相同的文本.重复"n".根据需要多次.
此方法可以减少前期准备工作,让您立即开始使用,而无需提前识别您可能要添加文本的所有位置.
您可能正在寻找块状视觉模式,这将允许一次在几行上插入,删除等.
逐块模式将允许使用一个角中的初始点的列和线进行方形选择,并且当前光标位置定义另一个角的列和线.这与默认的基于行的选择相反.
CTRL-v将使您处于块状可视模式.
如果你有几行如下:
INSERT INTO Users VALUES(1, 'Jim');
INSERT INTO Users VALUES(2, 'Jack');
INSERT INTO Users VALUES(3, 'Joseph');
Run Code Online (Sandbox Code Playgroud)
并希望在每行的id之后插入"0",然后将光标放在第一行中的逗号之后:
INSERT INTO Users VALUES(1,* 'Jim');
Run Code Online (Sandbox Code Playgroud)
用星号表示光标,命令序列为:
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
Run Code Online (Sandbox Code Playgroud)
该文本现在应如下所示:
INSERT INTO Users VALUES(1, 0, 'Jim');
INSERT INTO Users VALUES(2, 0, 'Jack');
INSERT INTO Users VALUES(3, 0, 'Joseph');
Run Code Online (Sandbox Code Playgroud)
同样是块状视觉模式,x将删除一个选择,y将它拉出来.
:帮助CTRL-V将提供进一步的文档.
看看SnippetsEmu。它应该做一些与你需要的非常相似的事情。
它模拟 TextMates 片段。您应该能够重复使用具有相同标记的一个片段,并且编辑会做正确的事情,在您键入时更新所有位置中的相同标记。