Summary
Vim
で
全角スペースを表示
全角スペースを半角スペースに変換
文末の全角スペースを削除
全角スペースを表示する
autocmd MyAutoCmd ColorScheme * highlight UnicodeSpaces ctermbg=131 guibg=#af5f5f
autocmd MyAutoCmd BufRead,BufNewFile * call matchadd(\'UnicodeSpaces'\, '\v%u180E|%u2028|%u2029|%u00A0|%u2000|%u2001
\|%u2002|%u2003|%u2004|%u2005|%u2006|%u2007
\|%u2008|%u2009|%u200A|%u202F|%u205F|%u3000'
\)
全角スペースを半角スペースにする
command! Spaces calls:spaces()function!s:spaces() abort
" mark origin position:normal!maletl:range ='%'letl:unicodeSpaces = '\v \ %u180E|%u2028|%u2029|%u00A0|%u2000|%u2001
\|%u2002|%u2003|%u2004|%u2005|%u2006|%u2007
\|%u2008|%u2009|%u200A|%u202F|%u205F|%u3000'
letl:space =' '" Replace unicode spaces to normal space:execute l:range 'substitute''/\v('.l:unicodeSpaces .')/'.l:space .'/ge'" back to origin position:normal! `aendfunction
文末の半角・全角スペースのみ削除する
command! TrimEnd calls:trimEnd()function!s:trimEnd() abort
" mark origin position:normal!maletl:range ='%'letl:unicodeSpaces = '\v \ %u180E|%u2028|%u2029|%u00A0|%u2000|%u2001
\|%u2002|%u2003|%u2004|%u2005|%u2006|%u2007
\|%u2008|%u2009|%u200A|%u202F|%u205F|%u3000'
letl:space ='\v\s'" Trim end spaces:execute l:range 'substitute''/\v('.l:unicodeSpaces .'|'.l:space .')+$//ge'" back to origin position:normal! `aendfunction
Thanks
@mattn
@koron
@thinca
@yaegassy
@m_nish_(slack vim-jp account)