vim – 无论是否为/或,让’n’始终向前搜索用于搜索

我几乎总是用/搜索Vim,然后继续向前搜索n和向后搜索N.有时候,我使用?跳到我目前所在线上方几行的一个项目,在这种情况下,如果我想向前搜索相同的项目,我必须使用N代替n,这是一个恼人的心理减速带.

所以我的问题是:是否有可能让n总是向前走,N向后走?

附:文档似乎暗示它是不可能的,因为n只是“重复最新的”/“或”?“[计数]次”,但谁知道.

这是从 vim邮件列表上的 ZyX’s post获取的.
noremap <expr> n 'Nn'[v:searchforward]
noremap <expr> N 'nN'[v:searchforward]

它通过将’Nn’索引为两个元素的列表,将n映射到基于变量v:searchforward的原始N或n.这只能起作用,因为映射是非递归的.如果它是递归的,那么它会称之为自我,你将处于无限循环中.

当v:searchforward == 1(向前搜索)时,映射相当于

noremap <expr> n n
noremap <expr> N N

当v:searchfoward == 0(向后搜索)时,映射相当于

noremap <expr> n N
noremap <expr> N n

此映射适用于normal,Visual和Operator pending模式.

我可能会这样写. (虽然我不确定这是否更清楚)

noremap <expr> n (v:searchforward ? 'n' : 'N')
noremap <expr> N (v:searchforward ? 'N' : 'n')

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...