要向下划线7行而不移动光标,我可以7yy
。是否可以向上执行相同操作,而不是使用宏或重新映射?
答案 0 :(得分:29)
您可以使用带有范围的:yank
命令来完成此效果。
:.-6,.yank
范围说明:
.
或点表示当前行.-6
表示当前行减去6 .-6,.
是当前行减去6到当前行.-6
缩写为-6
,只是-6,.yank
-6,yank
:y
给我们-6,y
最终命令:
:-6,y
获取更多帮助:
:h :yank
:h [range]
答案 1 :(得分:6)
您可以执行以下操作:
6yk6j
这将会拉动前面的6行和当前的行,但是courser会移动。 6j
跳回到之前的位置。
答案 2 :(得分:6)
您可以简单地移动到一个动作,然后使用'[
或']
将光标返回到该位置。
6线上扬,加上当前总共7线:
y6u
然后,使用一些鲜为人知的标记:
'[ -> to the first character on the first line of
the previously yanked text (or changed)
`[ -> to the first character of the previously yanked text
'] -> to the first character on the last line of yanked text
`] -> to the last character of the preciously yanked text
所以:
y6u']
y6u`]
您可以根据自己的需要使用两种解决方案。前者将光标移回光标所在行的第一个字符,后者移动到该行的最后一个字符。
但还有另一个标记可能很方便:'^
。它表示离开插入模式时光标的最后位置。
'^ -> moves to the beginning of the last line when leaving insert mode.
`^ -> moves to the exact position where insert mode was last left.
然后是另外两个解决方案:
y6u'^
y6u`^
那不是结束!如果您假装继续插入文本,则可以使用gi
命令。它会将您移至`^
标记并进入插入模式。然后我们有第五个解决方案:
y6ugi
我希望其中一个符合您的需求!