Vim 制作';n';始终向前搜索,无论是否?用于搜索

Vim 制作';n';始终向前搜索,无论是否?用于搜索,vim,editor,shortcut,Vim,Editor,Shortcut,我几乎总是用/在Vim中搜索,然后继续用n向前搜索,用n向后搜索。然而,有时我使用?跳转到我当前所在行上方几行的项目,在这种情况下,如果我想向前搜索同一项目,我必须使用N而不是N,这是一种恼人的心理减速 所以我的问题是:是否有可能使n始终向前,而n始终向后 p.S.文档似乎暗示这是不可能的,因为n只是“重复最新的”/“或”?“[计数]次”,但谁知道呢。这就是它的方式,尽管开发者的邮件列表上有一些争论 以下是您可以采取的措施: :noremap n /<CR> :noremap N ?

我几乎总是用
/
在Vim中搜索,然后继续用
n
向前搜索,用
n
向后搜索。然而,有时我使用
跳转到我当前所在行上方几行的项目,在这种情况下,如果我想向前搜索同一项目,我必须使用
N
而不是
N
,这是一种恼人的心理减速

所以我的问题是:是否有可能使
n
始终向前,而
n
始终向后


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

这就是它的方式,尽管开发者的邮件列表上有一些争论

以下是您可以采取的措施:

:noremap n /<CR>
:noremap N ?<CR>
:noremap n/
:noremap N?
带有更多有趣信息的相关邮件列表线程:

这是从vim邮件列表中获取的

noremap <expr> n 'Nn'[v:searchforward]
noremap <expr> N 'nN'[v:searchforward]
v:searchfoward==0时(向后搜索),映射等价于

noremap <expr> n N
noremap <expr> N n
noremap n
诺雷马克
此映射在正常、可视和操作员挂起模式下工作


我可能会这样写。(尽管我不确定这是否更清楚)

noremap n(v:searchforward?'n':'n')
noremap N(v:searchforward?'N':'N')

我似乎没有丢失
/e
标志。啊,你说得对,我把它与
:s
混淆了,测试不够。我想知道是否还有另一个问题,解决方案似乎太简单了……我喜欢Zyx在文章底部的答案。(如果你没有先发布,如果我能找到那个变量,我会去哪里)
noremap n'Nn'[v:searchforward]
noremap n'Nn'[v:searchforward]
太糟糕了,Bram不会包括我的补丁。这是我对vim最大的不满之一。哇,这是一个巧妙的映射。顺便说一句,当这个线程被弹出时,我有了一个新的解决方案,“你是对的,但首先我希望/pattern d//e(根据需要按Enter键)可以与n.n.n.n重复。”抱怨。
noremap <expr> n N
noremap <expr> N n
noremap <expr> n (v:searchforward ? 'n' : 'N')
noremap <expr> N (v:searchforward ? 'N' : 'n')