2017-04-14 80 views
0

我在.vimrc文件的功能,在我行的末尾刪除任何空白:VIM 7.4儲蓄替代型和替換

" Remove trailing space on write 
function! <SID>StripTrailingWhitespaces() 
    let [email protected]/ 
    let l = line(".") 
    let c = col(".") 
    %s/\s\+$//e 
    let @/=_s 
    call cursor(l, c) 
endfu 

使用此功能,搜索模式@/保存和恢復,所以我可以繼續搜索(n)我以前的模式。但是如果我正在搜索和替換中間,使用&,它現在可以正確搜索,但替換爲空字符串。

我讀到vim 8有一個:keeppatterns選項可能會幫助我(我還沒有檢查),但我暫時堅持使用vim 7.4。

是否可以保存和恢復:s命令的「替換」部分?

回答

1

至於你提到的:s是一個命令行而不是搜索,因此,如果你想找回它,你只需要訪問命令歷史記錄:

(根據vim的幫助:keeppatterns {command}允許無所添加到搜索模式來執行命令,我不相信,如果我理解正確的話如果你想仍然使用「命令欄」您使用的情況下)

這將是更對你有用:@:會在函數運行後仍然工作。

當您與&重新運行時,vim將重新運行上次替換的最後一次搜索。由於搜索歷史已在函數中恢復,它將使用先前的搜索,但仍將替換替換爲最後一個替換(函數中的替換),從而導致替換爲空字符串。

+0

有沒有什麼辦法可以像'&'那樣執行這個命令? – Vinz

+0

替代':&'你可以使用':@:'我測試過它並且應該可以工作(除非它是腳本,我不確定爲什麼你不會只使用命令歷史記錄) – pappix

+0

嘗試一下。使用歷史對我的目的來說很好,我只是好奇而已;) – Vinz