cht電腦資訊編輯器Vim
adm Find login register

自動去除不必要的空白

本人已不在此站活動

joined: 2007-09-19
posted: 4946
promoted: 325
bookmarked: 206
歸隱山林
1subject: 自動去除不必要的空白Promote 1 Bookmark 22009-05-29quote  

在寫文章時,常會留些不小心留下的空白,例如行尾多了一堆空白,或者文章結束後多了一堆空白行。以下這是以前在 mailing list 上看到的,作者是 Vigil。把他寫入 .vimrc 就可以了,文件存檔時就會自動去除這些不必要的空白(diff 檔不會去更動):

" Remove trailing whitespace when writing a buffer, but not for diff files.
" From: Vigil <vim5632@rainslide.net>
function RemoveTrailingWhitespace()
    if &ft != "diff"
        let b:curcol = col(".")
        let b:curline = line(".")
        silent! %s/\s\+$//
        silent! %s/\(\s*\n\)\+\%$//
        call cursor(b:curline, b:curcol)
    endif
endfunction
autocmd BufWritePre * call RemoveTrailingWhitespace()


edited: 1
coolcd
joined: 2008-01-21
posted: 2601
promoted: 348
bookmarked: 95
2subject: Promote 1 Bookmark 22009-05-29quote  

我不太需要自動刪除,只要把行末不必要的空白顯示給我看就好

所以我是在 .vimrc 中加入

" show trailing white spaces
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/

Vim tip 中 Highlight unwanted spaces 有更詳細的說明

edited: 1
本人已不在此站活動

joined: 2007-09-19
posted: 4946
promoted: 325
bookmarked: 206
歸隱山林
3subject: Promote 0 Bookmark 02009-05-29quote  

我常會用到的,除了行尾及文後多餘的空白外,就是字裡行間的多餘空白(含 Tab),但這些空白有時候不能刪,所以只好用手動的。以下通通多餘空白縮成一個空白(以□代表一個英文空白,就是按 Enter 後的空白):

:%s/\s\+/□/g


coolcd
joined: 2008-01-21
posted: 2601
promoted: 348
bookmarked: 95
4subject: Promote 0 Bookmark 02009-05-29quote  
LGJ

我常會用到的,除了行尾及文後多餘的空白外,就是字裡行間的多餘空白(含 Tab),但這些空白有時候不能刪,所以只好用手動的。以下通通多餘空白縮成一個空白(以□代表一個英文空白,就是按 Enter 後的空白):

:%s/\s\+/□/g

這個我也常用到 :D

如果是行尾的空白

用下面這個刪

 :%s/\s\+$//g

 

呵…… vim 是不是很好用啊?

大家一起來學 vim~

cht電腦資訊編輯器Vim
adm Find login register
views:23603