regex - 如何将VI中的搜索选择复制到剪贴板并粘贴到同一文件中?

标签 regex linux bash vi

我会给你一个我正在尝试做的事情的例子。假设我有一个包含以下数据的文件:

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):

  1. 将光标置于第一个 A 上。
  2. 输入 C-V 进入 block 选择模式(如果您使用的是 Windows 且已将 C-V 映射到粘贴,则输入 C-Q)。<
  3. 重复使用 jl 突出显示要复制的内容上方的 block 。
  4. y 提取内容。光标将返回第一行。
  5. $ 跳转到第一行末尾。
  6. p 粘贴内容。

关于regex - 如何将VI中的搜索选择复制到剪贴板并粘贴到同一文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556598/

相关文章:

python - 在 google colab 中运行 python 脚本,nohup 给出 ImportError

php - 函数只返回字符串中的字母数字字符?

Linux:信号对多线程的影响

linux - TCP/IP 中数据包处理的中断代码是什么?

php - 文件夹访问限制 Apache

python - 您如何读取单个 cUrl block ?

c - utf-8 编码的字符串如何使用 printf 在 C 中打印到屏幕?

javascript - 正则表达式 - 替换行尾,而不是字符串?

java - 如何在没有 ParseException 的情况下使用 SimpleDateFormat 测试解析日期

c++ - std::regex 是否支持 "(?i)"不区分大小写?