2009-10-02 49 views
0

有時我直接從vim命令行運行使。但是,有時我只想構建一個正在編輯的文件:!g++ filename.cpp。有沒有一個快捷方式來引用文件,而不必鍵入它..?在vi中引用文件名稱

夥計們,我不想使用make。我想要做的就是從vi的命令行構建它,在VIM中使用g ++/gcc

回答

8

您可以使用%引用當前文件 這樣:

:!g++ % 
2

「%:p」代表當前文件。

嘗試「G ++%:P」

+0

什麼是對的呢? – vehomzzz 2009-10-04 19:32:02

+0

它從根擴展到完整路徑。我習慣了,因爲我輸入了一些失去根的東西。這裏沒有要求,我輸入的反應很快,但彼得的回答是最好的。 – 2009-10-05 13:10:25

2

你可以用它來指代您與工作的文件名擴展置換的.o:

%r.o 

你filename.cpp成爲filename.o這是有用的,如果你把這樣的事情在你的.vimrc:

set makeprg=gmake\ %:r.o 

這樣,你可以做到這一點的VIM,然後將推出使用在當前文件makeprg命令宣佈:

:make 
+0

你能解釋'%:r.o'中的冒號(或者以前沒有冒號)嗎? – 2009-10-02 13:17:14

+1

請參閱':help filename-modifiers' – rampion 2009-10-02 13:45:34

2

如果你的make程序實際上是GNU做,只需要執行:

:make %< 

如果你想添加的標誌像-Wall -pedantic還是那麼就設置$ CFLAG(編譯C文件或C++文件$ CPPFLAGS),或者如果你想然後指定庫設置$ LDFLAGS從VIM。

:h :make 
:h %< 

編輯: 不同於普通的來電:GCC,這個解決方案是與QuickFix模式兼容(:H的quickfix),並且不需要改變& makeprg爲「G ++ $ CPPFLAGS -o $ * $ * .cpp $ LDFLAGS'。

NB:

  • 無需編寫任何的makefile利用GNU-之作。
  • 即使你有一個Makefile,並且只要你不用默認的隱式規則,這個解決方案也可以工作!
+0

我不想使用make。我想要做的就是使用g ++/gcc編譯它 – vehomzzz 2009-10-02 14:47:28

+0

你錯過了沒有必要編寫任何makefile的問題,並且GNU-make會自己調用gcc或g ++,而我們不會告訴他這麼做。 – 2009-10-02 15:34:42

+0

+1 ..感謝解釋:)))) – vehomzzz 2009-10-02 18:23:34

1

如上所述,快捷鍵是%。

您可以通過將整個事情綁定到一個鍵在.vimrc文件中:

map <F9> :!gcc %<CR>