用 vim 写代码时,经常遇到这样的场景,复制多行,然后粘贴。 我现在这样做:
v
p
我现在想知道,有没有什么命令,可以改变第 3 步,也就是说,我在可视模式复制时,vim 退出可视模式时,是将光标定位到选中文本的末尾,而不是开始。
谢谢。
大写 P
大写 V
如果知道行数,比如复制 10 行,命令是: y10j (复制光标下面 10 行) 10jP(粘贴在 10 行后面)
@alvin2ye P是在光标之前粘贴,非我所需 @sevk 大写V是visual line模式,非我所需
P
V
visual line
.vimrc 加上 vmap y y`]
#4 楼 @feitian124 你再把你的问题整理一下
有答案了: `> 是最近区域的末尾 `< 是最近选择区域开始
`>
`<
`] `[
`]
`[
呵呵
@wiboshu 谢谢,这个是我想要的答案,但是稍微有点不好,就是覆盖了默认的y的行为了,而我想保留这个,其实我期待有个gy之类,但是没有发现,所以问问默认配置里有没有这么个命令。 @alvin2ye 在visual模式下,用y复制选中的文本,vim会退出visual模式,并将光标定位到被选中文本的开始处,我现在想知道有没有个命令,和y执行一样的功能,但是退出visual模式时,光标会定位到被选中文本的结尾处。
y
gy
visual
vim
@sevk 谢谢,5 楼和你的发现类似。 只是我倾向于保留默认配置,实在没有,才想去自己配置,remap,所以发帖问问。
#9 楼 @feitian124 如果这样的话可以按照你想要的去定制,改成 vmap gy y`] 就能用 gy 作为命令去复制了,默认的配置好像是没有。
感觉 emacs 对于整行复制特别复杂,需要按好多个键。 还要加入好几行配置。
用命令记录 q 配合位置记录 m 可以实现楼主需求
@sevk 在 emacs 中启用 evil-mode,然后和 vi 一样的快捷键,另外还有 expand-region,按 C-@不放即可
#3 楼 @sevk y10j复制的是 11 行:当前行加下面 10 行。
y10j
如果其他不变把“y10”变成“10y”就是复制第 10 行