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.

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

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

function! MyFunction()
  if condition
    call feedkeys("^W^W")  
  else
    :some_other_command
  endif
endfunction
XUS
источник