Вопрос по shortcut, editor, vim – Сделать 'n' всегда искать вперед, независимо от того, / или? был использован для поиска
Я почти всегда ищу в Vim с/
, а затем продолжить поиск вперед сn
и назад сN
, Иногда, однако, я использую?
чтобы перейти к элементу всего на несколько строк выше линии I 'м в настоящее время, и в этом случае, если я хочу искать тот же элемент вперед, я должен использоватьN
вместоn
Раздражающая умственная скорость.
Итак, мой вопрос: можно ли сделатьn
всегда идти вперед, иN
назад?
Постскриптум Документация, кажется, намекает, что этоэто невозможно, так какn
простоПовторяет последний "/" или же "?" [количество раз]но кто знает.
несмотря на некоторые споры о разработчиках. список рассылки ...
Вот'Что вы можете с этим поделать:
:noremap n /<cr>
:noremap N ?<cr>
</cr></cr>
Соответствующая ветка списка рассылки с гораздо более интересной информацией:https://groups.google.com/d/msg/vim_dev/8jSoA931P2Y/JklYtxFOiAYJ
/e
флаг.
FDinoff
:s
и неДостаточно проверить Интересно, есть лиЕще одна проблема, решение кажется слишком простым ...
glts
noremap n 'Nn'[v:searchforward]
а такжеnoremap N 'nN'[v:searchforward]
FDinoff
Это было взято изZYX»с сообщением в списке рассылки vim.
noremap <expr> n 'Nn'[v:searchforward]
noremap <expr> N 'nN'[v:searchforward]
</expr></expr>
Это картыn
к исходному N или n на основе переменнойv:searchforward
путем индексации'Nn'
как список из двух элементов. Это работает только потому, что отображение нерекурсивное. Если бы это было рекурсивно, это назвало бы себя, и вы были бы в бесконечном цикле.
когдаv:searchforward == 1
(поиск вперед) сопоставления эквивалентны
noremap <expr> n n
noremap <expr> N N
</expr></expr>
и когдаv:searchfoward == 0
(поиск в обратном направлении) сопоставления эквивалентны
noremap <expr> n N
noremap <expr> N n
</expr></expr>
Это отображение работает в режимах ожидания Normal, Visual и Operator.
Я, вероятно, написал бы это так. (Хотя я'Я не уверен, что это немного яснее)
noremap <expr> n (v:searchforward ? 'n' : 'N')
noremap <expr> N (v:searchforward ? 'N' : 'n')
</expr></expr>