.vimrc
ファイルを保存するときに続くスペースを自動的に削除する設定はありますか?
理想的には、(安全のために)特定のファイルに対してのみこの機能を持ちたいと思います。*.rb
答え1
これはすべてのファイル(.vimrcファイル)に適用されます。
autocmd BufWritePre * :%s/\s\+$//e
これはRuby(.rb)ファイル(.vimrcファイル)でのみ機能します。
autocmd BufWritePre *.rb :%s/\s\+$//e
答え2
カーソル位置を維持するには、次のコマンドを使用します。
function! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
それ以外の場合、カーソルは保存後に最後に置き換えられた行の先頭にあります。
はい:行末にスペースがあります122
。オンライン982
で、入力中です:w
。位置を復元できない場合、カーソルは行の先頭で終了し、ワークフローは122
終了します。
設定を使用して関数を呼び出す、autocmd
いくつかの例:
" 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.
使用も可能ですが、この場合は必要ありません。場所を取得()通過:
let save_cursor = getpos(".")
" Some replace command
call setpos('.', save_cursor)
" To list values to variables use:
let [bufnum, lnum, col, off] = getpos(".")
答え3
私のもの末尾のスペースプラグインの削除これにより、さまざまな単純な浮動小数点とは異なり、特殊な:autocmds
場合も処理し、ユーザーに照会したり、末尾のスペースを含む書き込みを中断したりできます。
プラグインページには、代替へのリンクも含まれています。ビームチップウィキ。