Rufen Sie eine Vim-Funktion stillschweigend auf


25

Ich habe eine kleine Vim-Funktion geschrieben, die den Cursor zum ersten Zeichen der aktuellen Zeile bewegt. Wenn sich der Cursor bereits auf dem ersten Zeichen befand, wird der Cursor stattdessen in die erste Spalte verschoben.

" 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

Wie rufe ich diese Funktion still auf? Ich würde lieber ': FirstCharOrFirstCol () aufrufen' nicht in der Statuszeile angezeigt. Einfach zu wechseln, noremap H :silent call…scheint nicht genug zu sein.


7
Nur eine kleine Anmerkung: In einer VimScript-Datei (dh *.vim) benötigen Sie niemals die führenden :Zeichen.
Montag,

Antworten:


34

Sie können die Funktion unbeaufsichtigt aufrufen, indem Sie eine unbeaufsichtigte Map definieren:

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

Weitere Informationen finden Sie unter :h :map-<silent>. Beachten Sie insbesondere, dass dadurch nur sichergestellt wird, dass der Befehl beim Ausführen des Mappings nicht auf dem Bildschirm angezeigt wird. Mit dem :silentBefehl wird die Ausgabe der Funktion selbst stummgeschaltet (siehe :h :silent).


1
Schön :silentist, was ich wollte. Es ist erwähnenswert, dass Sie bei Fehlern in Ihrer Funktion die Meldungen immer noch erhalten, es sei denn, Sie verwenden !. Ich wusste nicht, dass ich den Code in einem ungültigen Zustand belassen hatte und dachte, ich würde ihn nicht :silentrichtig verwenden, da die Echos nicht stummgeschaltet wurden und ich einen Fehler in der Ausgabe sehen konnte !!
JonnyRaa
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.