繁体   English   中英

Vim - 一次移动多行时跳回前一个位置

[英]Vim - jump back to previous position when moving multiple lines at once

当我使用 Vim 时,我经常在移动线条时使用动作命令。
例如,如果我想向下移动 20 行,则按20j
现在在“跳”了 20 行之后,如果我想再次回到我以前的位置,我必须输入20k

有没有办法在不输入20k情况下跳转到我以前的位置?
例如,通过某种方式将前一个位置添加到 Vims 跳转列表,然后我可以使用<co>跳转回来。

(顺便说一句,当我一次移动更多一行时,我只想跳回来)。

这里的问题是jk不是“跳跃”。 当您做20j您实际上是在做jjjjjjjjjjjjjjjjjjjj但速度非常快,因此您必须将这些任意运动转换为适当的跳跃才能使<Co>起作用。 :help jumplist下解释了如何执行此操作:

您可以通过将 ' 标记设置为“m”来显式添加跳转。

在实践中:

m'20j

然后<Co>''``返回。

但是,有更聪明的移动方式,不需要您计算行数,而是实际跳跃,例如:help /:help ? .

我的~/.vimrc文件中有以下内容:

" It adds motions like 25j and 30k to the jump list, so you can cycle
" through them with control-o and control-i.
" source: https://www.vi-improved.org/vim-tips/
nnoremap <expr> j v:count ? (v:count > 5 ? "m'" . v:count : '') . 'j' : 'gj'
nnoremap <expr> k v:count ? (v:count > 5 ? "m'" . v:count : '') . 'k' : 'gk'

在我的例子中,大于 5 行的行移动被添加到跳转列表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM