.vimrc
Bir dosyayı kaydederken arka boşluğu otomatik olarak kaldırmak için bir ayar var mı ?
İdeal olarak (güvenli olmak için) sadece belirli dosyalar için bu işlevselliğe sahip olmak istiyorum, örn. *.rb
.vimrc
Bir dosyayı kaydederken arka boşluğu otomatik olarak kaldırmak için bir ayar var mı ?
İdeal olarak (güvenli olmak için) sadece belirli dosyalar için bu işlevselliğe sahip olmak istiyorum, örn. *.rb
Yanıtlar:
Bu, tüm dosyalar için (.vimrc dosyasında) çalışır:
autocmd BufWritePre * :%s/\s\+$//e
Bu sadece yakut (.rb) dosyalar için (.vimrc dosyasında) çalışır:
autocmd BufWritePre *.rb :%s/\s\+$//e
e
kullanıyor?
İmleç konumunu korumak için aşağıdaki gibi bir şey kullanın:
function! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
aksi takdirde imleç kaydettikten sonra son değiştirmenin satırının başına gelecektir.
Örnek : Satırın sonunda bir boşluğunuz var 122
, hatta 982
ve giriyorsunuz :w
. Konumu geri yüklememek, imlecin satır başında bitmesine ve 122
dolayısıyla iş akışının öldürülmesine neden olur.
Kullanarak işlev çağrısı ayarlama autocmd
, bazı örnekler:
" 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.
Bir de kullanılabilir, ancak bu durumda gerekli değildir, getpos () tarafından:
let save_cursor = getpos(".")
" Some replace command
call setpos('.', save_cursor)
" To list values to variables use:
let [bufnum, lnum, col, off] = getpos(".")
Benim DeleteTrailingWhitespace eklentisi çeşitli basit aksine, bunu yapar ve :autocmds
yüzen, aynı zamanda kullanıcıyı sorgulayabilir, özel durumları ele alır, ya sonlarındaki boşluk ile yazma iptali.
Eklenti sayfası alternatiflere bağlantılar içerir; ayrıca Vim Tips Wiki hakkında büyük bir tartışma var .