2011-02-16 51 views
3

當前在我的.vimrc文件中,我有一個函數可以在保存鼠標位置時清除保存時的所有尾隨空格。Vim清除隱藏字符的函數

fun! <SID>StripTrailingWhitespaces() 
    let l = line(".") 
    let c = col(".") 
    %s/\s\+$//e 
    call cursor(l, c) 
endfun 

autocmd BufWritePre *.sql,*.php :call <SID>StripTrailingWhitespaces() 

This works great。但我想一些事情添加到它想:
*刪除回車
*修正縮進SP之後按下TAB鍵

我嘗試添加

%s/^ M // Ë

StripTailingWhitespaces()功能,但是當我現在救VIM告訴我

按ENTER或鍵入命令繼續

所以我覺得我做錯了什麼或忘了什麼。任何幫助搞清楚這一點?謝謝

更新:仍在解決此問題。我嘗試在StripTrailingWhitespaces函數以及BufWritePre命令末尾搜索時添加<CR>。沒有運氣。實際上,添加它會導致很多「拖尾空間」錯誤。還有什麼建議?

如果沒有一個用於修復需要按下輸入的問題,那麼如何修復縮進SP後跟一個TAB?

回答

1

我與

fun! S() 
    let l = line(".") 
    let c = col(".") 
    %s/\s\+$//e 
    %s/^M//e 
    call cursor(l, c) 
endfun 

測試,它的Vim 7.3完美工作(注:^ M進入用CTRL-V CTRL-M)

因此,它看起來就像你不做任何錯事,沒有忘記任何事情。

現在,這並沒有幫助你走得更遠,是嗎?

如果您有此消息,請嘗試:messages,也許這會給您一個提示。

此外,:help messages讀取

Press ENTER or type command to continue 

This message is given when there is something on the screen for you to read, 
and the screen is about to be redrawn: 
- After executing an external command (e.g., ":!ls" and "="). 
- Something is displayed on the status line that is longer than the width of 
    the window, or runs into the 'showcmd' or 'ruler' output. 

所以,這部分可能是值得一讀的(這是一個比我粘貼更長)。

+0

謝謝你的嘗試。我在vim 7.1.138上。這可能是問題嗎? – clang1234 2011-02-17 15:58:56