14

有很多不同的方法可以拉动完整的单行/多行。有没有一种方法可以在 vi 中复制部分行,例如该行的 10 个字符。

4

8 回答 8

18

我猜最常见的部分 yanks 是:

yaw: 拉出光标当前所在
2yaw的单词 : 拉出光标当前所在的单词和下一个单词(总共 2 个单词)
ya(: 拉出包含光标的匹配括号
yf.: 从光标拉到下一个.
y$: 从光标拉到末尾行的

可以使用任何移动键。

于 2012-10-11T22:51:30.553 回答
8

剪切和粘贴:

将光标放在要开始切割的位置。

  1. v选择字符(或大写V选择整行)。
  2. 将光标移动到要剪切的内容的末尾。
  3. d剪切(或按y复制)。
  4. 移动到您要粘贴的位置。
  5. P粘贴在光标之前,或按p粘贴在之后。
  6. 使用相同的步骤执行复制和粘贴,除了步骤 4 中您将按y而不是d

d = 删除 = 剪切

y = yank = 复制

资源: vim.wikia.com:复制、剪切和粘贴

于 2015-05-01T11:14:48.843 回答
4

您可以执行yMovement,因此对于 10 个字符:y10l从(包括)当前光标位置拉出 10 个字符

于 2012-10-08T10:40:49.903 回答
2

我更喜欢只按 v 键,然后使用光标键移动您的选择。然后在您满意时按 y 键拉出选择。

于 2012-10-08T15:38:37.130 回答
2

你也可以

yt<char> - yank 'till char - i use that a lot

or y/<pattern>/ - yank until pattern
于 2013-01-11T07:47:59.570 回答
1

当然,将光标放在行首,输入:

y10l

这会将 10 个字符拉到右侧。如果您出于某种原因需要重复执行此操作,只需添加此临时 kep 映射:

:noremap ,m ^y10l

每次按下时都会拉出任何行的前 10 个字符,m

于 2012-10-08T10:40:03.137 回答
1

如果要复制多行,请尝试可视块模式,

" beginning of line
C-v
" up-down move 10j or 5k
10l
" copy & paste
y
p 

更详细的,见维基

于 2012-10-08T10:47:03.960 回答
0

这是鼠标实际上可能会击败键盘的一个地方,特别是如果当前鼠标光标远离复制目标,或者如果您想选择多行具有部分起始行或结束行。

用于:set mouse=a启用鼠标支持。然后用鼠标选择任何不规则的文本块,然后按y

于 2012-10-08T15:35:15.460 回答