Vim:在具有长软包装线的设置中存在矛盾的键映射 PLUS reletivenumber

Vim: contradictory key-mappings in a setting with long soft-wrapped lines PLUS reletivenumber

同时启用以下两个选项很头疼:

" Line numbering.
set number
set relativenumber

" The master setting (with wrapping)
set wrap
set linebreak
set nolist " list disables linebreak
set textwidth=0
set wrapmargin=0
set formatoptions+=l "No reformatting while typing on the exciting line.

相对行号非常整洁且有用,但是,当我的文本带有已换行的长行时,"jumping down by 5 lines" 和 "moving within the long wrapped line" 成为一组矛盾的任务。

为了绕过长的回绕线移动,我需要使用以下映射。

nnoremap  j gj
nnoremap  k gk
vnoremap  j gj
vnoremap  k gk

但是,5j不再触发向下跳5行。我应该键入 #j,其中 # = 当前行和向下第 5 行之间的 "visually" 换行数。

有解决键映射矛盾的办法吗?会不会有一个插件可以给软包线编号?这是我能想到的唯一解决方案of.t

提前谢谢你。

没有启用 "softly-wrapped relativenumbers" 的选项,它不会很有用,因为偏移量不仅用于 j / k 导航,而且还用于各种其他命令,以及 :[range],这些将继续通过物理、硬线解决。

在引入 'relativenumber' 之前,有 RltvNmbr.vim plugin,它使用符号列模拟该选项。您可以尝试修改它以适应您的想法。考虑到上述限制以及该插件使用了一个混乱的解决方法,我宁愿建议您也定义相反的映射:

nnoremap  gj j
nnoremap  gk k
vnoremap  gj j
vnoremap  gk k

有了它,您可以使用快速 j 等命令轻松导航回绕行,并且对于需要相对跳转的(较少)情况,请使用 [N]gj.