Gibt es eine .vimrc
Einstellung, um nachgestellte Leerzeichen beim Speichern einer Datei automatisch zu entfernen?
Im Idealfall möchte ich (aus Sicherheitsgründen) diese Funktionalität nur für bestimmte Dateien haben, z *.rb
Gibt es eine .vimrc
Einstellung, um nachgestellte Leerzeichen beim Speichern einer Datei automatisch zu entfernen?
Im Idealfall möchte ich (aus Sicherheitsgründen) diese Funktionalität nur für bestimmte Dateien haben, z *.rb
Antworten:
Dies funktioniert (in der .vimrc-Datei) für alle Dateien:
autocmd BufWritePre * :%s/\s\+$//e
Dies funktioniert (in der .vimrc-Datei) nur für Ruby-Dateien (.rb):
autocmd BufWritePre *.rb :%s/\s\+$//e
e
?
Verwenden Sie zum Beibehalten der Cursorposition Folgendes:
function! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
sonst würde der Cursor nach dem Speichern am Anfang der letzten Ersetzungszeile stehen.
Beispiel : Sie haben ein Leerzeichen am Ende der Zeile 122
, Sie sind in der Zeile 982
und geben ein :w
. Wird die Position nicht wiederhergestellt, endet der Cursor am Zeilenanfang 122
und der Arbeitsablauf wird beendet.
Richten Sie den Funktionsaufruf mit den folgenden autocmd
Beispielen ein:
" Using file extension
autocmd BufWritePre *.h,*.c,*.java :call <SID>StripTrailingWhitespaces()
" Often files are not necessarily identified by extension, if so use e.g.:
autocmd BufWritePre * if &ft =~ 'sh\|perl\|python' | :call <SID>StripTrailingWhitespaces() | endif
" Or if you want it to be called when file-type i set
autocmd FileType sh,perl,python :call <SID>StripTrailingWhitespaces()
" etc.
Man kann getpos () auch benutzen, aber in diesem Fall nicht brauchen, indem man:
let save_cursor = getpos(".")
" Some replace command
call setpos('.', save_cursor)
" To list values to variables use:
let [bufnum, lnum, col, off] = getpos(".")
Mein DeleteTrailingWhitespace-Plugin erledigt dies und kann im Gegensatz zu den verschiedenen einfachen :autocmds
Floating-Funktionen auch Sonderfälle behandeln, den Benutzer abfragen oder Schreibvorgänge mit nachgestellten Leerzeichen abbrechen.
Die Plugin-Seite enthält Links zu Alternativen. Es gibt auch eine große Diskussion im Vim Tips Wiki .