2010-07-08 51 views
3

有一個小的細微差異,一直在困擾我一段時間,即我經常鍵入#inclued而不是#include。如果它不明顯,我編程了很多C和C++。這個錯字已經破壞了無數的構建和消耗的時間,本來喝咖啡或上網的時候會更好。當然,emacs可以幫助我,並在輸入時糾正我的錯誤(當然,只有cc-mode)。但是如何?自動替換某些文本字符串,因爲它們在emacs中輸入

谷歌搜索和搜索stackoverflow沒有提供任何答案。

回答

8

你可以在abbrev-mode中使用這個:在你輸入#inclued後,做C-x a i g include RET,從那以後,每次你輸入#inclued,它都會自動變成#include。如果您希望縮寫對本地模式有效,請使用C-x a i l而不是C-x a i g。此外,您可以使用M-x edit-abbrevs編輯縮寫。

+0

很完美! – Staffan 2010-07-08 23:12:47

0

聽起來像flymake正是你以後的事情。它在後臺運行一個編譯器,並且會在輸入時突出顯示錯誤。

+0

我對此持懷疑態度......似乎這樣會浪費大量的CPU時間來處理小小的缺陷,而且本身就是一種細微差別,因爲每當我使用電池供電時都不得不關閉它。 – Staffan 2010-07-08 23:23:38

+0

我自己並沒有發現它是一個問題,並且支持能夠重用大量目標代碼的大多數編譯器,只導致部分編譯? – Notthinking 2010-07-13 11:49:46

0

我打算建議這可能是flyspell的一個稍微奇怪的應用程序,但danlei的答案看起來更好。

1

如果你對某些東西有點不同,你可以使用YAsnippet軟件包將所有你的小片段寫入代碼片段,然後你可以輸入類似#in,hit TAB的東西,它會擴展成...任何你想要的。

+0

我已經使用YAsnippet的各種東西,但包括我發現它只是自己輸入它更快。 – Staffan 2010-07-08 23:14:12

3

比縮寫(因爲你不能預測你所做的所有拼寫錯誤)更好的和更全面的解決方案是使用flymake(它帶有emacs發行版)。

http://flymake.sourceforge.net/

Flymake檢查幕後源代碼,而你還在輸入你的代碼到緩衝區。它強調了你的代碼有什麼問題(即:gcc告訴的是錯誤的)。

在後臺運行gcc不會使用比防病毒軟件更多的CPU。而且,如果你有2個或更多內核,gcc可以利用並行化。它只檢查語法,不編譯任何東西。

+0

@JéômeRadix:有人已經提到flymake,正如我所說的,我對此持懷疑態度,因爲我在使用電池時工作很多。不過,我想這是需要檢查的東西。 – Staffan 2010-07-12 11:16:50

相關問題