加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 01:08:23 所属栏目:安全 来源:网络整理
导读:我几乎总是用/搜索Vim,然后继续向前搜索n和向后搜索N.有时候,我使用?跳到我目前所在线上方几行的一个项目,在这种情况下,如果我想向前搜索相同的项目,我必须使用N代替n,这是一个恼人的心理减速带. 所以我的问题是:是否有可能让n总是向前走,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')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读