題 特定文件的Vim熱鍵


是否可以在vim中為特定文件類型設置熱鍵。

例如,如果我正在編輯.java文件,我希望vim在按下5時運行javac .java。

這可能嗎?


4
2017-09-28 07:05


起源




答案:


的〜/ .vimrc

autocmd FileType java map <F5> :! javac %<cr>

更多信息 鍵映射 和 外部命令


7
2017-09-28 07:43



是否可以刪除文件的擴展名?所以我可以像java%(刪除.java)那樣做? - vonhogen
我對此表示懷疑,但您可以創建一個腳本的快捷方式,該腳本將剝離擴展並在結果上執行javac。 - Andrejs Cainikovs
@karmic:使用類似的東西 autocmd FileType java map <F5> :exe '! javac ' . expand('%:r')<CR>  看到 :help expand() 欲獲得更多信息。 - Al.


(我無法理解SO和SU之間對於這些問題的二分法......無論如何:) 幾天之後,您的問題已在SO上得到解答: ftplugins +本地映射/縮寫/命令是要走的路。

關於javac調用,只需使用%<獲取沒有擴展名的文件名。因此,第一個正確的映射變為:

:nnoremap <buffer> <f5> :!javac %<<cr>

但更喜歡依賴於quickfix模式:

:setlocal makeprg=javac\ $*
:nnoremap <buffer> <f5> :make %<<cr>

4
2017-10-08 16:52





我沒有任何直接經驗從頭開始用Vim編寫這樣的東西,但是這裡是你想要尋找的例子。

您可能需要.java文件的文件類型插件(ftplugin):

文件類型插件就像一個全局的插件   插件,除了它設置選項   並定義當前的映射   僅限緩衝區。看到   |附加文件類型,插件|對於這個怎麼樣   使用插件類型。

並使用它與mapleader +熱鍵:

定義使用的映射   “mapleader”變量,特殊   可以使用字符串“”。它是   替換為字符串值   把“mapleader”。如果沒有設置“mapleader”   或者為空,反而使用反斜杠。   ...定義使用的映射   “mapleader”變量,特殊   可以使用字符串“”。它是   替換為字符串值   把“mapleader”。如果沒有設置“mapleader”   或者為空,反而使用反斜杠。

你可能會看一下 Vim JDE腳本, 要么 本指南 關於為Java開發配置Vi(m)。 這一頁 有一些關於在Vim中使用javac的信息。


3
2017-09-28 07:28