VIM Выполнение ключевой команды в функции


13

У меня есть функция, и я хочу выполнить ключевую команду, но я получаю сообщение об ошибке:

function! MyFunction()
  if condition
    <C-W><C-W>
  else
    :some_other_command
  endif
endfunction

Это не нравится <CW> <CW>

Что я могу использовать вместо этого?

Ответы:


20

Общий ответ - использовать :normalкоманду, например

:exe "normal \<C-W>\<C-w>"

:executeПодход является читаемым способом получить :normalраспознавать специальные символы , такие как комбинации управления ключом. Другой подход

:normal ^W^W

где каждый ^W- один символ, вставленный печатанием Ctrl-vCtrl-w.


Если я использую ^Wв скрипте, чем он открывается в двоичном режиме. Как этого избежать или мне лучше использовать :exe?
ДенисКолодин

0

Используйте функцию feedkeys . Обратите внимание, что ^ W - это не «^» + «W», а на самом деле введите «Ctrl-V Ctrl-W». Это особый характер.

function! MyFunction()
  if condition
    call feedkeys("^W^W")  
  else
    :some_other_command
  endif
endfunction
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.