{vim} Makefile時的一有關定位字元【tab】小問題

來源:互聯網
上載者:User

    之前自己照著網上的模板簡單編輯了vim的設定檔——位於家目錄下的.vimrc,如下:

1 "<br /> 2 set hlsearch "high light search on<br /> 3 set backspace=2 "delete any character in the file<br /> 4 set autoindent "auto indent on<br /> 5 set ruler "<br /> 6 set showmode "show which edit mode are you in<br /> 7 set nu "set number<br /> 8 set bg=dark "background color<br /> 9 syntax on "<br /> 10 set laststatus=2<br /> 11 set autoindent<br /> 12 set shiftwidth=4 "set the size of autoindent is 4<br /> 13 set softtabstop=4 "enter one tab, then 4 blank show<br /> 14 "set tabstop=4<br /> 15 set expandtab "vim uses the rational blanks to pad the tab<br />


    結果在make的時候卻出現如下的提示:

makefile:4: *** missing separator. Stop.


    
我是一直覺得是我的設定檔有問題的,因為之前都沒有出現過這種情況!網上搜羅了良久,雖然找到了更正這個問題的方法,但是還是沒有找到通過更改.vimrc設定檔的方法來避免這個錯誤,這裡作個 標記

。如下對問題的解決過程作個簡單的記錄。

 

    問題的原因在這裡

有詳細的解釋,這裡

也有。大致是因為make在讀取Makefile的過程中不能解析其中包含的內容。 GNU make在讀取Makefile時根據各種分隔字元(:, =, [TAB]字元等)來識別Makefile的每一行內容。如上錯誤意味著make不能發現一個合法的分隔字元。出現這些錯誤資訊的可能原因(或許是編輯器,絕大部分是ms-windows的編輯器)在Makefile中的命令之前使用了4個(或者8個)空格代替了[tab]字元。因為makefile中所有的命令列都應該是以[tab]字元開始的。

 

    我在寫Makefile檔案的時候明明是已經用上了[tab]的,為了驗證下便用od命令查看我的Makefile檔案如下:

lianbequat@ubuntu:/home/advances/pthread/condition_var$ od -t c makefile<br />0000000 c c = g c c /n /n c o n d 1 : c o<br />0000020 n d 1 . c /n $ ( c c )<br />0000040 $ ^ - o $ @ /n<br />0000051<br />


    發現我鍵入的[tab]定位字元已經被編輯器自動替換成了4個空格!在這裡

找到瞭解決這個問題的答案,即通過在

vim編輯模式下組合“ ctrl + v + i ”來寫入一個 tab鍵。重新make下,運行正確。再次以ASCII碼的格式查看我的Makefile檔案發現原先的4個空格已被 “ /t ”取代,如下:

lianbequat@ubuntu:/home/advances/pthread/condition_var$ od -t c makefile<br />0000000 c c = g c c /n /n c o n d 1 : c o<br />0000020 n d 1 . c /n /t $ ( c c ) $ ^<br />0000040 - p t h r e a d - o $ @ /n<br />0000057<br />

 


註:問題雖然解決,但是並不徹底。我不可能以後每次寫Makefile的時候都用那按鍵組合 “ ctrl + v + i ”來鍵入每個[tab]鍵吧?! 所以,還得繼續尋找問題。如今學得還不夠,就先這麼“半截子”記錄下。



2011.1.10 修正

    找到原因了,只需要將在.vimrc中的最後一行的配置命令注釋掉即可! 一看便知。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.