Bagaimana cara menghapus spasi di save secara otomatis di Vi dan Vim?


22

Apakah ada .vimrcpengaturan untuk secara otomatis menghapus spasi spasi saat menyimpan file?

Idealnya (agar aman) Saya hanya ingin memiliki fungsi ini untuk file tertentu, misalnya *.rb

Jawaban:


25

Ini berfungsi (dalam file .vimrc) untuk semua file:

autocmd BufWritePre * :%s/\s\+$//e

Ini berfungsi (dalam file .vimrc) hanya untuk file ruby ​​(.rb):

autocmd BufWritePre *.rb :%s/\s\+$//e

6
Solusi ini bagus, tapi saya pikir solusi @ Sukminder di bawah ini lebih baik, karena reposisi kursor dengan benar.
hlin117

Apa yang edigunakan lastet ?
Acgtyrant

19

Untuk menjaga posisi kursor, gunakan sesuatu seperti:

function! <SID>StripTrailingWhitespaces()
    let l = line(".")
    let c = col(".")
    %s/\s\+$//e
    call cursor(l, c)
endfun

jika tidak, kursor akan berakhir di awal baris penggantian terakhir setelah save.

Contoh : Anda memiliki ruang di ujung baris 122, Anda sedang on line 982dan masuk :w. Tidak mengembalikan posisi, akan menghasilkan kursor berakhir di awal garis 122sehingga mematikan aliran kerja.

Atur panggilan ke fungsi menggunakan autocmd, beberapa contoh:

" 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.

Satu juga dapat menggunakan, tetapi tidak diperlukan dalam hal ini, getpos () oleh:

let save_cursor = getpos(".")
" Some replace command
call setpos('.', save_cursor)

" To list values to variables use:
let [bufnum, lnum, col, off] = getpos(".")

2

Plugin DeleteTrailingWhitespace saya melakukan hal ini dan, berbeda dengan berbagai :autocmdsfloating sederhana , juga menangani kasus-kasus khusus, dapat meminta pengguna, atau membatalkan menulis dengan trailing whitespace.

Halaman plugin berisi tautan ke alternatif; ada juga diskusi besar tentang Vim Tips Wiki .

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.