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

前端之家收集整理的这篇文章主要介绍了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')

猜你在找的Bash相关文章