如何在vim中选择一段文本并将其粘贴到当前光标位置而不使用鼠标?

5

我希望放弃使用鼠标在缓冲区内选择和粘贴文本块。有什么最有效的方法只用键盘完成这个任务吗?我的意思是导航到任意行,复制子字符串,返回到之前的位置并粘贴。

6个回答

5

非常简单的方法:

  1. 使用 Shift-V 选择要复制的行
  2. 使用 y 将文本“拷贝”到剪贴板
  3. 使用 p 在所需位置粘贴文本。

当然,还有许多其他复制和粘贴的方式,例如,yy 可以复制当前行。

做一些VIM教程,这比逐步学习所有内容更好。


+1 建议这些教程,当我开始使用 vim 时,它们对我帮助很大。例如:http://www.vi-improved.org/tutorial.php - a'r

5
如果你想快速跳转到某一行,请使用搜索功能,输入“/子字符串”,然后按Enter键找到正确的子字符串。请确保使用hlsearch和incsearch::set incsearch:set hlsearch 当你到达正确的行时,可以使用yy复制整行或yaw复制整个单词。然后输入两个反引号``返回到搜索起点。最后,使用p粘贴你刚才复制的行/字符串。

3
  • 通过输入ma来标记您当前的位置(您可以使用任何其他字母代替a,这只是一个“命名位置寄存器”)。
  • 通过使用/搜索导航到行和子字符串
  • 使用y<movement>复制文本,或者使用shift/ctrl-v标记文本,然后使用y
  • 使用反引号(backtick)```a``回到之前标记的位置
  • 使用pP粘贴您的缓冲区

很好的解释。当您有效地使用<movement>参数时,它可以清晰地提取任何子字符串。例如,yf;从当前字符向前移动到第一个分号,这是某些编程语言的行结束符。 - dreftymac

3

我通常的方法是:

  1. 使用可视模式选择文本,使用 vVCtrl+v
  2. 使用 y 剪切选中的文本
  3. 使用 123G:123 前往想要到达的行
  4. 使用 tf 导航到该行内的目标位置
  5. 使用 pP 将文本粘贴到光标所在位置

如果您需要在这些位置之间来回跳转,则可以使用 g,g;


1
使用 "p" 命令在当前行下方粘贴,使用 "P" 命令在当前行上方粘贴。

好的。那么如何快速导航到某一行(以及该行中的子字符串)并返回呢? - planetp

1

不确定您所说的“子字符串”是什么意思。如果您想将第50行复制到当前位置,请使用:

:50t.

如果您想将第50行移动到当前光标位置,请使用:

:50m.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接