10

ほとんどの場合、Vim で を使用して検索し、次に を使用して前方および後方に/検索を続けます。ただし、現在表示している行の数行上の項目にジャンプすることがあります。その場合、同じ項目を前方に検索したい場合は、迷惑な精神的スピードの代わりにを使用する必要があります。バンプ。nN?Nn

だから私の質問は:n常に前進とN後退を行うことは可能ですか?

nPS ドキュメンテーションは、単純に「最新の「/」または「?」を [count] 回繰り返す」ため、それが不可能であることを示唆しているようですが、誰が知っていますか。

4

2 に答える 2

12

これは、vim メーリング リストの ZyX の投稿から引用したものです。

noremap <expr> n 'Nn'[v:searchforward]
noremap <expr> N 'nN'[v:searchforward]

2 つの要素のリストとしてインデックス付けすることによりn、変数に基づいて元の N または nにマップされます。これは、マッピングが非再帰的であるためのみ機能します。再帰的である場合、これはそれを自己と呼び、無限ループに陥ります。v:searchforward'Nn'

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 保留モードで機能します。


多分こんな感じで書いた。(これがより明確かどうかはわかりませんが)

noremap <expr> n (v:searchforward ? 'n' : 'N')
noremap <expr> N (v:searchforward ? 'N' : 'n')
于 2013-08-30T01:12:43.603 に答える
6

開発者のメーリング リストでいくつかの議論が行われているにもかかわらず、それはまさにその通りです ...

これについてあなたができることは次のとおりです。

:noremap n /<CR>
:noremap N ?<CR>

関連するメーリング リスト スレッドには、さらに興味深い情報がたくさんあります: https://groups.google.com/d/msg/vim_dev/8jSoA931P2Y/JklYtxFOiAYJ

于 2013-08-30T00:46:02.367 に答える