我正在练习在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;
它最终会在第一行插入文字,而其他文字保持不变。
请指导。
答案 0 :(得分:0)
这是由vim的cindent设置引起的。当您键入std:
时,vim假定您正在创建一个名为&#34; std&#34;的标签。并将其缩进减少到0.出于某种原因,这会弄乱视觉块插入。输入:set nocindent
以暂时获得您想要的行为。我不确定这是否可以以更持久的方式修复,但您可能不会经常这样做。