Vim: как сразу изменить настройки iminsert и imsearch в активированном режиме поиска? - PullRequest
2 голосов
/ 15 марта 2019

Я пытаюсь настроить

nmap <C-F2> :set iminsert=1 imsearch=1<cr>
imap <C-F2> <C-O><C-F2>

чтобы сменить язык vim. Хорошо работает в командном и вставном режимах. Но он не работает в режиме поиска . Пытаясь реализовать это, я написал функцию

function! Call_F2()
    set iminsert=1
    set imsearch=1
    return ""
endfunction

и сопоставил его с

cmap <C-F2> <C-R>=Call_F2()<cr>

, поэтому я набираю / и нажимаю C-F2, но настройки не применяются к текущему режиму поиска. Теперь мне нужно выйти и снова войти в режим поиска, чтобы увидеть внесенные изменения.

Вопрос: как изменить настройки «iminsert» и «imsearch» в активированном режиме поиска немедленно ?

(я знаю, что могу использовать ярлык C- ^, и он работает, но я хотел бы сопоставить языки с их собственными ярлыками)

Ответы [ 2 ]

1 голос
/ 16 марта 2019

Большое спасибо за Джоанис!Я улучшил ее / его решение:

nmap <C-F1> :set iminsert=0 imsearch=0<cr>
imap <C-F1> <C-O><C-F1>
cmap <C-F1> <END><SPACE><C-C><C-F1>/<UP><DEL>
"
nmap <C-F2> :set iminsert=1 imsearch=1<cr>
imap <C-F2> <C-O><C-F2>
cmap <C-F2> <END><SPACE><C-C><C-F2>/<UP><DEL>

единственный побочный эффект, который я заметил: курсор всегда переходит к концу шаблона поиска.

1 голос
/ 15 марта 2019

Я не смог использовать <C-F2> как вы (не знаю почему), но вместо <F2> это сработало:

:cmap <F2> <esc>:set iminsert=1 imsearch=1<cr>/<up>

Ограничение: с <up> в конце, он избегает очистки текущей строки поиска, если я нажму <F2>, но если текущая строка поиска пуста, она возвращает предыдущую и ведет себя плохо, если этот поиск строка, которая не существует.

Я не уверен, как определить, было ли текущее состояние строки поиска пустым или нет, так как я начинаю с <esc>, который выводит из режима поиска, чтобы внести изменения.

Он также имеет плохое поведение, когда текущая строка поиска не найдена в тексте, что выводит вас из режима поиска, говоря, что не может найти эту строку.

В общем, это решение не очень хорошее, но я все равно хочу опубликовать его, потому что оно может послужить вдохновением для разработки лучшего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...