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

Використовуйте функцію подачі . Зверніть увагу, що ^ 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.