例如,我通常先键入成对的大括号,然后将光标移动到块中,我期望的应该是这样的:
....{
....?
....}
Run Code Online (Sandbox Code Playgroud)
但是vim会自动清空第二行,因为其中只有空格字符,因此结果如下:
....{
?
....}
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
(点用于空格字符,█表示光标的位置.)
当您离开插入模式时,不要担心Vim会从空行中剥离空格.正如其他人所评论的那样,这是一件好事.相反,当您在该行上调用插入模式时,寻找一种自动恢复缩进级别的方法.
的i,I,a和A命令把你置于插入模式时,所有保存的光标位置.但请查看以下文档:help cc:
["x]cc Delete [count] lines [into register x] and start
insert linewise. If 'autoindent' is on, preserve
the indent of the first line.
Run Code Online (Sandbox Code Playgroud)
如果该autoindent选项处于启用状态,则cc在空白行上运行将切换到插入模式并恢复适当的缩进级别,并根据需要进行设置:
....{
|
....}
Run Code Online (Sandbox Code Playgroud)
请注意,S键是cc(:help S)的同义词.
如果你真的想要这样(尽管我同意@ThiefMaster),那么只需改变你的输入方式即可。
\n\n这里有2个解决方案:
\n\n步骤 1 \n光标为“|”。键入{
{|\nRun Code Online (Sandbox Code Playgroud)\n\n步骤 2 \n输入 Return
\n\n{\n |\nRun Code Online (Sandbox Code Playgroud)\n\n步骤 3 \n键入}
{\n}|\nRun Code Online (Sandbox Code Playgroud)\n\n步骤 4 \n按向上箭头
\n\n{|\n}\nRun Code Online (Sandbox Code Playgroud)\n\n步骤 5 \n输入 Return
\n\n{\n |\n}\nRun Code Online (Sandbox Code Playgroud)\n\n步骤 1 \n键入{
{|\nRun Code Online (Sandbox Code Playgroud)\n\n步骤 2 \n输入 Return
\n\n{\n |\nRun Code Online (Sandbox Code Playgroud)\n\n步骤 3 \n键入}
{\n}|\nRun Code Online (Sandbox Code Playgroud)\n\n步骤 4 \n退出插入模式
\n\n{\n}\xe2\x96\x88\nRun Code Online (Sandbox Code Playgroud)\n\n步骤 5 \n键入O
{\n |\n}\nRun Code Online (Sandbox Code Playgroud)\n