Panggil fungsi Vim dalam hati


25

Saya menulis fungsi Vim kecil yang menggerakkan kursor ke karakter pertama dari baris saat ini. Jika kursor sudah pada karakter pertama, maka kursor dipindahkan ke kolom pertama sebagai gantinya.

" 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

Bagaimana saya memanggil fungsi ini secara diam-diam? Saya lebih suka ': panggil FirstCharOrFirstCol ()' tidak ditampilkan di baris status. Cukup mengubah ke noremap H :silent call…tampaknya tidak cukup.


7
Hanya sebuah catatan kecil: dalam file VimScript (yaitu *.vim), Anda tidak perlu :karakter utama .
tommcdo

Jawaban:


34

Anda dapat memanggil fungsi secara diam-diam dengan mendefinisikan peta diam:

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

Untuk info lebih lanjut, lihat :h :map-<silent>. Catat secara khusus bahwa ini hanya akan memastikan bahwa perintah tidak disuarakan ke layar ketika pemetaan dieksekusi. The :silentPerintah ini digunakan untuk membungkam output dari fungsi itu sendiri (lihat :h :silent).


1
Bagus, :silentadalah apa yang saya kejar. Perlu dicatat bahwa jika Anda memiliki kesalahan dalam fungsi Anda Anda masih akan mendapatkan pesan kecuali Anda gunakan !. Saya tidak menyadari bahwa saya meninggalkan kode dalam keadaan tidak valid dan jadi saya pikir saya tidak menggunakan :silentdengan benar karena tidak membungkam gema dan saya bisa melihat kesalahan dalam output !!
JonnyRaa
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.