VIM Thực thi một lệnh chính trong một chức năng


13

Tôi có một chức năng và tôi muốn thực thi một lệnh chính, nhưng tôi gặp lỗi Trailing character:

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

Nó không giống như <CW> <CW>

Tôi có thể sử dụng cái gì thay thế?

Câu trả lời:


20

Câu trả lời chung là sử dụng :normallệnh, như

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

Cách :executetiếp cận là cách dễ đọc để nhận :normalbiết các ký tự đặc biệt như tổ hợp phím điều khiển. Cách tiếp cận khác là

:normal ^W^W

trong đó mỗi ^Wký tự được chèn bằng cách gõ Ctrl-vCtrl-w.


Nếu tôi sử dụng ^Wtrong một kịch bản hơn nó sẽ mở trong chế độ nhị phân. Làm thế nào để tránh điều đó hoặc tôi nên sử dụng :exe?
DenisKolodin

0

Sử dụng chức năng feedkey . LƯU Ý rằng ^ W KHÔNG phải là "^" + "W" mà thực sự gõ "Ctrl-V Ctrl-W". Đó là một nhân vật đặc biệt.

function! MyFunction()
  if condition
    call feedkeys("^W^W")  
  else
    :some_other_command
  endif
endfunction
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.