Vim:复制,然后多次粘贴

kev*_*rpe 7 vim

我在vim中使用高亮模式复制几个字符。然后我想粘贴不止一次。我目前的技术效果不佳。

示例文本: Linux Solaris Irix HP-UX

假设我想复制这个词Linux,然后粘贴到SolarisIrix

  1. 将光标L置于Linux
  2. 命令v(用于可视化hilite),然后e(用于词尾),然后y(用于猛拉/复制)
  3. 现在Linux在我的“vim 剪贴板”上
  4. 将光标移动到SSolaris(第一实例)
  5. 命令v(用于可视化hilite),然后e(用于词尾),然后p(用于粘贴)
  6. 文本现在是:Linux Linux Irix HP-UX,但现在Solaris在我的“vim 剪贴板”上
  7. 将光标移至Iin Irix(第二个实例)
  8. 命令v(用于可视化hilite),然后e(用于词尾),然后p(用于粘贴)
  9. 文本现在是:Linux Linux Solaris HP-UX这不是我所期望的。

我诉诸于使用鼠标的高光/粘贴(通过 X 终端)。当然,我可以做得更好。如何?

小智 7

我会这样做(对许多粘贴非常有用):

  1. 进入单词的某个地方Linux,然后"ayiw复制单词
    • "a 选择注册«a»
    • y 用于复制
    • i 指定我们“在”(单词,段落,...)
    • w 选择这个词
  2. 到下一个词w(或词中的某个地方)
  3. 按时粘贴并将其保存为宏 qbdiw"aPq
    • qb 开始在寄存器 «b» 中录制宏
    • d 用于删除
    • i 指定我们“在”(单词,段落,...)
    • w 选择这个词
    • "a 选择寄存器«a»(以前保存)
    • P 粘贴光标前的单词
    • q 停止录制宏
  4. 然后第一次使用宏,转到下一个单词w并按@b
  5. 最后,这就是这种方法的优势所在,去你要替换的每个单词并按 @@

提示:替换wWqbdiw"aPq用标点符号来选择的话,像HP-UX

问题:当单词是行中的最后一个时,它将删除单词之前的空格。


小智 1

使用寄存器并避免视觉模式。

Move to 'L' (type 0fL)                  |L|inux Solaris Irix HP-UX
"lye                                    
'Linux' is now in the 'l' register.     
Move to 'S' (type fS)                   Linux |S|olaris Irix HP-UX
"sde"lP                                 Linux Linu|x| Irix HP-UX
'Solaris' is now in the 's' register.   
Move to 'I' (type fI)                   Linux Linux |I|rix HP-UX
"ide"lP                                 Linux Linux Linu|x| HP-UX
Run Code Online (Sandbox Code Playgroud)

您也可以删除“Solaris”和“Irix”,然后在其位置粘贴“Linux”两次。

0fLw2dwbyf<space>w2P
Run Code Online (Sandbox Code Playgroud)