3

Vim 菜鸟在这里。我正在尝试选择多行代码来复制和粘贴到其他区域。有没有办法不使用鼠标来做到这一点?

4

3 回答 3

4

其他一些根本不使用视觉模式的方法:

使用标记

  1. 在某处留下标记ma

  2. 搬到别处

  3. 从这里拉到那里y'a

使用搜索动作

  1. 在要拉出的部分末尾本地化一些唯一标记

  2. y/foo<cr>使用(向前搜索)或y?bar<cr>(向后搜索)从这里拉到那里

使用文本对象

  1. 确定什么文本对象将映射到您要拉动的内容:

    • 内/外字,iw/aw

    • 内/外对,i'"([{</a'"([{<

    • 内部/外部 html 标记,it/at

    • 句子,s

    • 段落,p

    • “堵塞”,]

    • …</p>

  2. 拉那个文本对象,比如说,yip

使用其他动作

  • 拉到函数末尾:y]}

  • 拉到文件末尾:yG

上述所有具有视觉模式的解决方案

  • V'ay

  • V/foo<cr>y

  • V?bar<cr>y

  • Vipy, ETC。

  • V]}y

  • VGy


:h motion.txt希望会让你大吃一惊,就像它对我的一样。

于 2012-10-21T20:25:50.263 回答
2

您可以将光标放在要复制的第一行,然后键入要复制nyyn行数。例如,键入2yy以复制光标下的两行。

然后,您可以使用p.

您还可以通过将光标放在某处并按住 Shift 来选择多行。将光标移动到所需选择的末尾并停止按 Shift。y然后使用 just (而不是)复制yy并粘贴p.

于 2012-10-21T19:41:53.930 回答
1

是的,在正常模式类型中V[direction],您将突出显示多行。如果您不想要整行,请使用v而不是V. 要复制它,请点击y并移动到要粘贴的区域并点击p。要删除它,而不是y使用x.

或者,您可以简单地使用[number of lines]yy来拉出一些行或[number of lines]dd剪切一些行。在这种情况下,粘贴是相同的。

于 2012-10-21T19:44:19.567 回答