Gọi một hàm Vim trong âm thầm


25

Tôi đã viết một hàm Vim nhỏ để di chuyển con trỏ đến ký tự đầu tiên của dòng hiện tại. Nếu con trỏ đã ở trên ký tự đầu tiên, thì con trỏ sẽ được chuyển đến cột đầu tiên.

" 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

Làm thế nào để tôi gọi chức năng này âm thầm? Tôi muốn thay ': gọi FirstCharOrFirstCol ()' không được hiển thị trong dòng trạng thái. Đơn giản chỉ cần thay đổi thành noremap H :silent call…dường như là không đủ.


7
Chỉ cần một lưu ý nhỏ: trong tệp VimScript (nghĩa là *.vim), bạn không bao giờ cần các :ký tự đầu .
tommcdo

Câu trả lời:


34

Bạn có thể gọi hàm một cách im lặng bằng cách xác định bản đồ im lặng:

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

Để biết thêm thông tin, xem :h :map-<silent>. Đặc biệt lưu ý rằng điều này sẽ chỉ đảm bảo rằng lệnh không được lặp lại trên màn hình khi ánh xạ được thực thi. Các :silentlệnh được sử dụng để bịt miệng ra khỏi chức năng riêng của mình (xem :h :silent).


1
Đẹp một, :silentlà những gì tôi đã sau. Điều đáng chú ý là nếu bạn có lỗi trong chức năng của mình, bạn vẫn sẽ nhận được thông báo trừ khi bạn sử dụng !. Tôi đã không nhận ra rằng tôi đã để lại mã ở trạng thái không hợp lệ và vì vậy tôi nghĩ rằng tôi đã sử dụng không :silentchính xác vì nó không làm im lặng tiếng vang và tôi có thể thấy lỗi ở đầu ra !!
JonnyRaa
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.