Có một .vimrc
cài đặt để tự động xóa khoảng trắng theo dõi khi lưu tệp không?
Lý tưởng nhất (để an toàn) Tôi chỉ muốn có chức năng này cho một số tệp nhất định, ví dụ: *.rb
Có một .vimrc
cài đặt để tự động xóa khoảng trắng theo dõi khi lưu tệp không?
Lý tưởng nhất (để an toàn) Tôi chỉ muốn có chức năng này cho một số tệp nhất định, ví dụ: *.rb
Câu trả lời:
Điều này hoạt động (trong tệp .vimrc) cho tất cả các tệp:
autocmd BufWritePre * :%s/\s\+$//e
Điều này hoạt động (trong tệp .vimrc) cho các tệp ruby (.rb):
autocmd BufWritePre *.rb :%s/\s\+$//e
e
sử dụng cái gì?
Để giữ vị trí con trỏ, hãy sử dụng một cái gì đó như:
function! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
con trỏ khác sẽ kết thúc ở đầu dòng thay thế cuối cùng sau khi lưu.
Ví dụ : Bạn có một khoảng trắng ở cuối dòng 122
, bạn đang ở trên dòng 982
và nhập :w
. Không khôi phục vị trí, sẽ dẫn đến con trỏ kết thúc ở đầu dòng 122
do đó giết chết luồng công việc.
Thiết lập cuộc gọi đến chức năng bằng cách sử dụng autocmd
, một số ví dụ:
" 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.
Người ta cũng có thể sử dụng, nhưng không cần thiết trong trường hợp này, getpose () bằng cách:
let save_cursor = getpos(".")
" Some replace command
call setpos('.', save_cursor)
" To list values to variables use:
let [bufnum, lnum, col, off] = getpos(".")
Plugin DeleteTrailingWhitespace của tôi thực hiện điều này và, ngược lại với các :autocmds
dấu phẩy đơn giản khác nhau , cũng xử lý các trường hợp đặc biệt, có thể truy vấn người dùng hoặc hủy bỏ ghi với khoảng trắng ở cuối.
Trang plugin chứa các liên kết đến các lựa chọn thay thế; cũng có một cuộc thảo luận lớn trên Wiki Vim Tips .