2015-04-06 25 views
0

我正在練習在vim中多行插入文本,如this教程和this SO回答一樣。在vim中多行插入文本,不適用於std ::

但是,如果要插入的文本是類似「std ::」或甚至是「std:」,這種技術似乎不工作。最後的冒號似乎弄亂了某些東西。

有關代碼等

cout << "Hello World" << endl; 
cout << "Yo Yo!" << endl; 

我走了光標移動到第一行,在「C」中,按「Ctrl鍵+ V」進入的視覺阻止模式。然後我按'j'選擇下一行。然後按'I'進入特殊插入模式,然後輸入我要插入的文本。然後,我按Esc鍵

對於任何簡單的文本,如 'try_',

它給

try_cout << "Hello World" << endl; 
try_cout << "Yo Yo!" << endl; 

但如果我的文字是一樣的東西 '的std ::'

它只是給出了

std::cout << "Hello World" << endl; 
cout << "Yo Yo!" << endl; 

它剛剛結束插入文本的第一行,lea對其他人完好無損。

請指導。

+0

你忘了告訴我們當你輸入'std ::'時會發生什麼,並描述你做了什麼。 – romainl 2015-04-06 07:01:54

+0

@romainl其實先生!我確實提到過,當我輸入'std ::'並且不會複製所有行的操作時,它只是在第一行插入文本。 我覺得我所做的是多餘的。我提供了兩個鏈接,它們提供了我已經複製的相同步驟。 雖然,我會編輯*明確*注意這兩個 – Cheeku 2015-04-06 07:12:25

+0

請參閱?你的問題現在好多了。你有一些autocompletion插件? – romainl 2015-04-06 08:26:02

回答

0

這是由vim的cindent設置引起的。當你鍵入std:時,vim假定你正在創建一個名爲「std」的標籤,並將其縮進降低爲0.由於某種原因,這與可視塊插入有關。輸入:set nocindent即可獲得您想要的行爲。我不確定這是否能以更持久的方式得到解決,但你可能不會經常這樣做。