Vim
vimscript

Vimで余分な行末の空白と最終行の空行の削除を自動で行う

概要

コードに限らず行末の空白、最終行の空行は無駄であるが、一つ一つ消すのも面倒なので自動化した。
2018/01/30 コードの挿入の表記を訂正しました。編集リクエストありがとうござます。

行末の空白を消す

Vimの正規表現を使う

%s/\s\+$//ge

行末から空白が一つ以上続いているものを置換して削除しています。

最終行の空白を削除する

while文とgetline()を使って行います。

while getline('$') == ""
    $delete _
endwhile

空行が何行続いても削除できるようにwhile文で回しています。

纏め

vimrcに次のように加えました。

.vimrc
autocmd BufWritePre * call s:remove_unnecessary_space()

function! s:remove_unnecessary_space()
    " delete last spaces
    %s/\s\+$//ge

    " delete last blank lines
    while getline('$') == ""
            $delete _
    endwhile
endfunction

新たに関数を定義して、それをファイル書き込み前に実行しています。

参考

Vimで行末の余分なスペースを取り除く
vimで最終行が空行だったら保存時に最終行を削除する方法

名無しのvim使い