我会给你一个我正在尝试做的事情的例子。假设我有一个包含以下数据的文件:
mv AB12350_PCOUTData.txt ./
mv AB12351_PCOUTData.txt ./
mv AB12352_PCOUTData.txt ./
mv AB12353_PCOUTData.txt ./
mv AB12360_PCOUTData.txt ./
mv AB12374_PCOUTData.txt ./
我尝试仅复制“AB123xx”部分并粘贴到末尾以获得以下内容:
mv AB12350_PCOUTData.txt ./AB12350
之后我将附加一个“.txt”以缩短文件名。我的想法是,我可以使用带有正则表达式字符的搜索功能来突出显示所需的文本片段,如下所示:
/AB123[567][01234]
然后我可以简单地将其复制到剪贴板并将其粘贴到每行末尾并附加“.txt”。显然 Shift+Ctrl+C 不适用于搜索文本,仅适用于突出显示的文本。我也尝试使用 yank 和 put 但没有成功。是否有捷径可寻?或者也许有更好的方法来完成同样的事情?我的实际文本文件比上面的示例长得多,因此手动操作并不是一个真正的选择。谢谢!
最佳答案
使用宏这将相当容易。
但是,在这种特殊情况下,您可以使用 block 视觉模式复制并粘贴内容(假设您实际上拥有 vim 而不仅仅是普通的 vi):
- 将光标置于第一个
A
上。 - 输入
C-V
进入 block 选择模式(如果您使用的是 Windows 且已将C-V
映射到粘贴,则输入C-Q
)。< - 重复使用 j 和 l 突出显示要复制的内容上方的 block 。
- 按 y 提取内容。光标将返回第一行。
- 按 $ 跳转到第一行末尾。
- 按 p 粘贴内容。
关于regex - 如何将VI中的搜索选择复制到剪贴板并粘贴到同一文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556598/