【发布时间】:2012-09-28 14:24:25
【问题描述】:
有很多不同的方法可以拉出完整的单行/多行。有没有一种方法可以在 vi 中复制部分行,比如该行的 10 个字符。
【问题讨论】:
-
我通常会这样做,例如
向右拉 5 个字符。我想还有其他方法:)
有很多不同的方法可以拉出完整的单行/多行。有没有一种方法可以在 vi 中复制部分行,比如该行的 10 个字符。
【问题讨论】:
当然,光标在行首,输入:
y10l
这会向右拉 10 个字符。如果由于某种原因需要重复执行此操作,只需添加此临时 kep 映射:
:noremap ,m ^y10l
每次按,m 时都会拉出任何行的前 10 个字符
【讨论】:
您可以执行y移动,因此对于 10 个字符:y10l 从(包括)当前光标位置拉出 10 个字符
【讨论】:
如果要复制多行,请尝试可视块模式,
" beginning of line
C-v
" up-down move 10j or 5k
10l
" copy & paste
y
p
更多详情,请参阅wiki
【讨论】:
这是鼠标实际上可能会击败键盘的一个地方,尤其是当当前鼠标光标远离复制目标时,或者如果您想选择多行且具有部分起始行或结束行。
使用:set mouse=a 启用鼠标支持。然后用鼠标选中任何不规则的文本块,然后按y
【讨论】:
我更喜欢只按 v 键,然后使用光标键移动您的选择。然后在您满意时按 y 键拉出选择。
【讨论】:
我猜最常见的部分 yanks 是:
yaw: 拉出光标当前所在的单词2yaw: 拉出光标当前所在的单词和下一个单词(总共 2 个单词)ya(: 拉出包含的匹配括号光标yf.:从光标拉到下一个.y$:从光标拉到行尾
可以使用任何移动键。
【讨论】:
你也可以
yt<char> - yank 'till char - i use that a lot
or y/<pattern>/ - yank until pattern
【讨论】:
剪切和粘贴:
将光标放在要开始切割的位置。
d = 删除 = 剪切
y = yank = 复制
【讨论】: