我几乎总是在 Vim 中搜索/
,然后继续向前搜索n
并向后N
。然而,有时我会使用?
跳转到我当前所在行上方几行的项目,在这种情况下,如果我想向前搜索同一项目,我必须使用N
代替n
,令人烦恼的心理减速带。
所以我的问题是:是否有可能使n
永远向前走,并且N
向后?
附:文档似乎暗示这是不可能的,因为n
只是“重复最新的“/”或“?”[count]次”,但谁知道呢。
这是取自ZyX 的帖子 https://groups.google.com/d/msg/vim_dev/8jSoA931P2Y/Nk1_Bj6kGDwJ在 vim 邮件列表中。
noremap <expr> n 'Nn'[v:searchforward]
noremap <expr> N 'nN'[v:searchforward]
It maps n
到原始 N 或基于变量的 nv:searchforward
通过索引'Nn'
作为两个元素的列表。这只有效,因为映射是非递归的。如果它是递归的,则将其称为 self 并且您将处于无限循环中。
When v:searchforward == 1
(向前搜索)映射相当于
noremap <expr> n n
noremap <expr> N N
什么时候v:searchfoward == 0
(向后搜索)映射相当于
noremap <expr> n N
noremap <expr> N n
此映射在正常、可视和操作员挂起模式下工作。
我可能会这样写。 (虽然我不确定这是否更清楚)
noremap <expr> n (v:searchforward ? 'n' : 'N')
noremap <expr> N (v:searchforward ? 'N' : 'n')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)