我想在Vim中獲得沒有文件擴展名的文件名。在Vim函數中獲取沒有文件擴展名的文件名。
我在我的.vimrc
文件中編寫了以下函數來編譯和運行Java程序。
:function! JAVA_RUN()
:!javac %^M
:endfunction
map <F3> :execute JAVA_RUN()<CR> :source $HOME/.vimrc<CR>
在這方面的功能我怎麼能得到擴展名的文件名。
我想在Vim中獲得沒有文件擴展名的文件名。在Vim函數中獲取沒有文件擴展名的文件名。
我在我的.vimrc
文件中編寫了以下函數來編譯和運行Java程序。
:function! JAVA_RUN()
:!javac %^M
:endfunction
map <F3> :execute JAVA_RUN()<CR> :source $HOME/.vimrc<CR>
在這方面的功能我怎麼能得到擴展名的文件名。
:help expand()
應該給你答案,見expand()。
您應該對%使用r
修飾符,用%:r
而不是%
來獲取沒有擴展名的文件名。
如果要編寫構建和執行文件的函數,還應該查看shellescape
的文檔,以防止文件名或路徑中的空格出現問題。
我從字面上只是讀了一個類似的問題(因爲別人似乎試圖配置vim爲他們用F鍵自動構建),並且寫了an answer關於如何利用vim的功能:make
命令,甚至不需要編寫Makefile。就你而言,它與問題沒有直接關係,但我想我會提及它,以防你感興趣。
此外,有人似乎寫了Vim Tips Wiki關於如何設置vim的:make
命令來專門處理用螞蟻構建的Java項目。我有一段時間沒有和Java一起工作過,但在你的情況下,特別是它可能是一個開始的好地方。
如果你想exand的文件名(比%
等其他)看看fnamemodify()
fnamemodify({fname}, {mods}) *fnamemodify()*
Modify file name {fname} according to {mods}. {mods} is a
string of characters like it is used for file names on the
command line. See |filename-modifiers|.
fnamemodify("main.java", ":r")
回報main
。
我來到這裏尋找類似問題的答案。我希望能夠從正在編輯的java文件中提取當前的類名稱。我發現了一個很巧妙的方法利用縮寫做到這一點在vim:這個工作
ab xclass <C-R>=expand('%:t:r')<CR>
把這行放到你的.vimrc(或類似)。一旦您按下空格,縮寫將自動觸發,因此我通常在它們前加'x'以避免其意外擴展。
這裏的訣竅是:t
和:r
在expand()
的參數中的組合。 %
是「當前文件名」,:t
僅選擇所有路徑(「僅限最後一個路徑組件」)並且僅選擇012ot(「刪除了一個擴展名」)或或t。 (報價部分均來自expand()文件。)
所以,當你在文件/a/b/ClassIAmAboutToCreate.java
創建一個新的類,你可以鍵入:
public class xclass {
你「xclass」後按下空格鍵的那一刻,縮寫將擴展爲public class ClassIAmAboutToCreate
,這正是你需要。
另外,注意的縮寫可以通過按下Ctrl鍵+]這避免了插入的類名稱後的空間中而被觸發。
你不必爲此做一個函數'(地圖:!java%:r )' –
yesennes
2015-09-09 02:58:31