我想從我的vimrc文件中使用地圖的「地圖」的關鍵是這樣的:如何從地圖和內調用VIM功能「:拆分」
map <C-I> :split ~/some/file
該命令實際工作正常。
我的問題是:如何從地圖/分割線內的文件路徑中調用vim函數(本例中爲「resolve()」)。這不起作用,但希望你得到的觀點:
map <C-I> :split =resolve("~/some/file")
也許它使用call()?一般來說,我顯然對vim腳本感到困惑。謝謝你的幫助!
我想從我的vimrc文件中使用地圖的「地圖」的關鍵是這樣的:如何從地圖和內調用VIM功能「:拆分」
map <C-I> :split ~/some/file
該命令實際工作正常。
我的問題是:如何從地圖/分割線內的文件路徑中調用vim函數(本例中爲「resolve()」)。這不起作用,但希望你得到的觀點:
map <C-I> :split =resolve("~/some/file")
也許它使用call()?一般來說,我顯然對vim腳本感到困惑。謝謝你的幫助!
這樣做有兩個額外的方式,將外工作的映射,並且是更安全的,然後使用<C-r>
(POSIX允許文件名與任何字節但\x00
,包括控制碼):
nnoremap <C-i> :execute "split" fnameescape(resolve("~/some/file"))<CR>
nnoremap <C-i> :split `=resolve("~/some/file")`<CR>
在第二種情況下不需要轉義,但文件名不能包含換行符(它不會傷害,只會產生一個錯誤)。
另一個需要考慮的事情:
nnoremap
,它將使你,例如,;
和:
交流的意義,而不改變地圖,還可以防止您的地圖通過插件被寵壞了,除非他們重新定義<Tab>
映射(<C-i>
與<Tab>
相同)。強制正常模式是因爲在其他模式下會產生意想不到的結果。fnameescape(resolve("~/some/file"))
,它將防止帶空格的文件名錯誤。<C-r>
@Austin Taylor建議寫入原始控制代碼。我不喜歡在文件中包含任何內容,因爲它會使差異在終端中不可見。map <C-I> :split ^R=resolve("~/some/file")<cr><cr>
如果你把這個在.vimrc
,鍵入C-v C-r
鍵入^R
字符。
謝謝!我忘記了^ R是命令模式的「插入」。 – svec 2011-04-26 15:44:09