在vim中多行插入文本,不适用于std ::

时间:2015-04-06 05:34:48

标签: vim

我正在练习在vim中多行插入文本,如this教程和this SO回答中所述。

但是,如果要插入的文本类似于“std ::”甚至“std:”,这种技术似乎不起作用。最后的冒号似乎搞砸了什么。

对于像

这样的代码
cout << "Hello World" << endl;
cout << "Yo Yo!" << endl;

我将光标移到第一行,在'c',按,'Ctrl + V'进入Visual Block模式。然后我按'j'也选择下一行。然后我按'I'进入特殊插入模式,然后输入我要插入的文本。然后我按'Esc'

对于任何简单的文字,例如'try _',

它给出了

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

但如果我的文字类似'std ::'

它只是给出了

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

它最终会在第一行插入文字,而其他文字保持不变。

请指导。

1 个答案:

答案 0 :(得分:0)

这是由vim的cindent设置引起的。当您键入std:时,vim假定您正在创建一个名为&#34; std&#34;的标签。并将其缩进减少到0.出于某种原因,这会弄乱视觉块插入。输入:set nocindent以暂时获得您想要的行为。我不确定这是否可以以更持久的方式修复,但您可能不会经常这样做。