Vim:用一个空格缩进(不移动两个空格)
默认VIM缩进命令按移位宽度空格缩进 e、 gVim:用一个空格缩进(不移动两个空格),vim,Vim,默认VIM缩进命令按移位宽度空格缩进 e、 g >按移位两个空格缩进行 要更改为缩进插入的空格字符数,请使用shiftwidth选项: :set shiftwidth = <number> :设置移位宽度= 在这里查看更多信息 您还可以将其添加到.vimrc文件中。我不确定是否有更好的方法。但是,有几种方法可以做到这一点(我无论如何都能想到) 您的视觉块解决方案 正如您所说:按Ctl-V选择所需的行,按I插入,然后输入空格数 搜索 与上面类似,但更灵活一点-您可以使用“选择段落”
>按移位两个空格缩进行
要更改为缩进插入的空格字符数,请使用shiftwidth
选项:
:set shiftwidth = <number>
:设置移位宽度=
在这里查看更多信息
您还可以将其添加到.vimrc
文件中。我不确定是否有更好的方法。但是,有几种方法可以做到这一点(我无论如何都能想到)
您的视觉块解决方案
正如您所说:按Ctl-V
选择所需的行,按I
插入,然后输入空格数
搜索
与上面类似,但更灵活一点-您可以使用“选择段落”vip
命令,或任何范围:按v
或vip
或您要选择的范围,键入:s/^/{n spaces}
,其中{n spaces}是要插入的空格数
它有点冗长,但适用于几乎任何范围。见鬼,如果你想做整个文件,你可以做Ctl-A
(取决于操作系统)并缩进整个文件(或者跳过整个视觉模式,只做命令模式…如:1,$s/^/{n spaces}
请注意,不必在s///中包含第三个斜杠,因为在搜索结束时没有放置任何开关
全球
可能您只想缩进与某些模式匹配的行。例如…所有包含foo的行。没问题:键入:g/foo/s/^/{n spaces}
如果Global的多行部分具有相似的模式,那么它就特别方便。您可以跳转到正常模式land,选择所需的行并相应缩进::g/foo/norm Vjj:s/^/{n spaces}Ctl-V{Enter}
。使用额外的Ctl-V{Enter}稍微复杂一点
结尾,但在某些情况下很有用
使用tabstop和shiftwidth
是的,如果你经常这样做-我会做:设置ts=2
和:设置et
和:设置sw=2
并使用>
和如果我理解正确,你可以使用:
ctrl+V,jj然后是“:le n”,其中n是要缩进的空格数
使用可视块模式将vi中的代码块缩进三个空格:
选择要缩进的代码块。在正常模式下使用Ctrl+V并向下箭头选择文本。选中该代码块时,输入“:”可向所选文本块发出命令
命令行中将显示以下内容::“在要缩进的代码之间放置标记('a'和'b'):
<position cursor at top of block>
m a
<position cursor at bottom of block>
m b
我必须在vim脚本中按给定数量的空格(amount
)进行删除。这起到了作用:
let sw_setting = &shiftwidth
set shiftwidth=1
exe "normal v" . amount . "<"
let &shiftwidth = sw_setting
让sw_设置=&shiftwidth
设置shiftwidth=1
exe“normal v”.amount.“为什么要避免更改sw
?这就是原因所在。在可视行选择中,{count}>
将按{count}*'shiftwidth'
缩进,而在正常模式下,{count}”
用于计算缩进的行数。这可能是您想要的。请注意,视觉块选择也是如此,但空格插入在块的第一列之前,而不是行的开头。这非常棒,除了……当有空行时,它插入空格。无论如何要避免这种情况?这是更好的答案。选择的答案是太复杂了,在回答中,选项1“您的视觉块解决方案”在大多数系统上都不起作用。我不同意,因为带有:le 3
的解决方案从左边距缩进(第1/0列),但我认为OP希望(进一步)将文本块从其所在位置缩进。例如,为了更好地垂直对齐代码/文本,与更好的位置相比,自动缩进的代码/文本仅隔几格。我同意这是最好的解决方案,但可能应该用(0)作为前缀导航到行最终应该到达的列,读取并记住列号(在我的配置中显示在右下角),使用它而不是3作为le
命令的参数。使用搜索方法时,它会显示为空格将插入空行的开头。是否有一种干净而聪明的方法来避免这种情况?我还发现我需要直观地选择一个块,然后:
,然后“+1作为可视块解决方案。它非常适合快速修改可视块解决方案不适合我,它只插入到单行,而不是所有行对于那些也想知道什么是et
,ts
和sw
的人来说,expandtab
,tabstop
和shiftwidth
这节省了我大量的时间。很好!1up。一些建议的解决方案在没有设置shiftwidth的情况下,并不像他们所说的那样有效。
Vjjjj:le 3
<position cursor at top of block>
m a
<position cursor at bottom of block>
m b
:'a,'bs/^/ /g
let sw_setting = &shiftwidth
set shiftwidth=1
exe "normal v" . amount . "<"
let &shiftwidth = sw_setting