เรียกใช้ฟังก์ชัน Vim แบบเงียบ ๆ


25

ฉันเขียนฟังก์ชัน Vim เล็กน้อยที่เลื่อนเคอร์เซอร์ไปที่อักขระตัวแรกของบรรทัดปัจจุบัน หากเคอร์เซอร์อยู่บนอักขระตัวแรกอยู่แล้วเคอร์เซอร์จะถูกย้ายไปที่คอลัมน์แรกแทน

" Jump to first character or column
noremap H :call FirstCharOrFirstCol()<cr>

:function! FirstCharOrFirstCol()
:  let current_col = virtcol('.')
:  normal ^
:  let first_char = virtcol('.')
:  if current_col == first_char
:    normal 0
:  endif
:endfunction

ฉันจะเรียกฟังก์ชั่นนี้อย่างเงียบ ๆ ได้อย่างไร? ฉันต้องการ ': โทร FirstCharOrFirstCol ()' ไม่ปรากฏในบรรทัดสถานะ เพียงเปลี่ยนเป็นnoremap H :silent call…ดูเหมือนจะไม่เพียงพอ


7
เพียงโน้ตเล็ก ๆ : ในไฟล์ VimScript (เช่น*.vim) คุณไม่จำเป็นต้องมี:ตัวอักษรนำ
tommcdo

คำตอบ:


34

คุณสามารถเรียกใช้ฟังก์ชั่นเงียบ ๆ โดยกำหนดแผนที่เงียบ:

noremap <silent> H :call FirstCharOrFirstCol()<cr>

:h :map-<silent>สำหรับข้อมูลเพิ่มเติมโปรดดูที่ โปรดทราบว่านี่จะช่วยให้มั่นใจได้ว่าคำสั่งจะไม่ถูกสะท้อนไปยังหน้าจอเมื่อดำเนินการจับคู่ :silentคำสั่งที่ใช้เพื่อปิดเสียงเอาท์พุทจากฟังก์ชั่นของตัวเอง (ดู:h :silent)


1
นิสัยดี:silentคือสิ่งที่ฉันเป็นหลังจากนั้น มันเป็นมูลค่า noting !ว่าถ้าคุณมีข้อผิดพลาดในการทำงานของคุณคุณยังจะได้รับข้อความเว้นแต่คุณจะใช้ ฉันไม่ทราบว่าฉันทิ้งรหัสไว้ในสถานะที่ไม่ถูกต้องและคิดว่าฉันไม่ได้ใช้:silentอย่างถูกต้องเพราะมันไม่ได้ทำให้ echos เงียบและฉันเห็นข้อผิดพลาดในผลลัพธ์ !!
JonnyRaa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.