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

ซึ่งแต่ละคนเป็นตัวละครตัวหนึ่งเขียนโดยพิมพ์^WCtrl-vCtrl-w


ถ้าฉันใช้^Wในสคริปต์กว่าจะเปิดในโหมดไบนารี ฉันควรหลีกเลี่ยงสิ่งนั้นหรือ:exeไม่
DenisKolodin

0

ใช้ฟังก์ชั่นฟีดคีย์ โปรดทราบว่า ^ W ไม่ใช่ "^" + "W" แต่จริง ๆ แล้วพิมพ์ "Ctrl-V Ctrl-W" มันเป็นตัวละครพิเศษ

function! MyFunction()
  if condition
    call feedkeys("^W^W")  
  else
    :some_other_command
  endif
endfunction
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.