缺省VIM缩进命令按Shift宽度空格缩进例如:
>> Indent line by shiftwidth spaces << De-indent line by shiftwidth spaces
有没有办法缩进一个或n个(其中n!=移位宽度)空格?一种方法是垂直选择块中的一列,然后输入Ctrl+V,I垂直插入,然后输入space和<Esc>。
Ctrl+V
I
space
<Esc>
qojgxg4l1#
我不确定有没有更好的方法。但是,有几个方法你可以做到这一点(无论如何我能想到的)...
您的可视数据块解决方案
就像你说的:按Ctl-V选择所需的行,按I插入,然后输入空格数。
Ctl-V
搜寻
与上面类似但更灵活一点--您可以与'select paragraph' vip命令一起使用,或者实际上使用任何范围:按v或vip或其他键选择范围,然后键入:s/^/{n spaces},其中{n个空格}是要插入的空格数。它有点冗长,但在几乎任何范围内都能很好地工作。见鬼,如果你想做整个文件,你可以做Ctl-A(取决于操作系统),并缩进整个文件(或者跳过整个视觉模式的事情,只做命令模式...就像:1,$s/^/{n spaces}一样请注意,您不必在s///中包含第三个斜杠,因为您没有在搜索的末尾放置任何开关。
vip
v
:s/^/{n spaces}
Ctl-A
:1,$s/^/{n spaces}
全局
也许你只想缩进符合某种模式的行。比如......所有包含foo的行。没问题:类型:g/foo/s/^/{n spaces}如果它的多行部分具有类似的模式,全局是特别方便的。你可以直接跳到正常模式,然后选择你想要的行并相应地缩进::g/foo/norm Vjj:s/^/{n spaces}Ctl-V{Enter}。在结尾处添加额外的Ctl-V{Enter}稍微复杂一点,但在某些情况下很有用。
:g/foo/s/^/{n spaces}
:g/foo/norm Vjj:s/^/{n spaces}Ctl-V{Enter}
Ctl-V{Enter}
使用制表位和移位宽度
是的,如果你经常这样做-我会做:set ts=2和:set et和:set sw=2,并使用>>和<<的每一种方式...
:set ts=2
:set et
:set sw=2
>>
<<
生成函数
好吧,还是不够简短,不管出于什么原因,你都需要做很多次,你不能忍受sw,et和ts的设置。没问题,写一个快速的函数,给予它一个localleaderMap:
sw
et
ts
localleader
function! AddSpace(num) range let s:counter = 0 let s:spaces = '' while s:counter < a:num let s:spaces .= ' ' let s:counter = s:counter + 1 endwhile execute a:firstline .','. a:lastline .'s/^/'. s:spaces endfunction :map <LocalLeader>i :call AddSpace(3)Ctl-V{enter}
也许仅仅知道不止一种方法比只知道一种更好?毕竟,有时最好的解决方案取决于问题:)
5anewei62#
使用可视块模式将vi中的代码块缩进三个空格:
1.选择要缩进的代码块。在正常模式下使用Ctrl+V,然后按向下箭头选择文本。选中后,输入“:“对所选文本块给予命令。1.命令行中将显示以下内容::'<,'>1.要将缩进设置为3个空格,请键入le 3并按Enter键。将显示以下内容::'<,'>le 31.所选文本将立即缩进3个空格。
:'<,'>
le 3
:'<,'>le 3
使用Visual Line模式将vi中的代码块缩进三个空格:
1.在VI中打开文件。1.将光标放在一些代码上1.在正常模式下按以下键:
Vjjjj:le 3
对您所做工作的解释:
V表示开始选择文本。jjjj向下箭头4行,突出显示4行。:告诉vi您将为突出显示的文本输入一条指令。le 3表示突出显示文本缩进3行
V
jjjj
:
nqwrtyyt3#
要更改为缩进而插入的空格字符数,请使用shiftwidth选项:
shiftwidth
:set shiftwidth = <number>
请在此处查看更多details。您也可以将其添加到.vimrc文件中。
.vimrc
ogsagwnx4#
如果我没理解错的话,你可以用途:Ctrl+V,jj,然后':le n',其中n是要缩进的空格数。http://vim.wikia.com/wiki/Shifting_blocks_visually
um6iljoc5#
在要缩进的代码之间放置标记(“a”和“b”):
<position cursor at top of block> m a <position cursor at bottom of block> m b
执行replace命令,使标记之间的每个换行符都替换为所需的空格数(在本例中为2个空格):
:'a,'bs/^/ /g
v6ylcynt6#
我必须在一个vim脚本中缩进一个给定的空格数amount。
amount
let sw_setting = &shiftwidth set shiftwidth=1 exe "normal v" . amount . "<" let &shiftwidth = sw_setting
一个副作用是它会重置最后一个视觉模式选择。相反,您可能希望编辑exe...行,使其在正常模式下重复执行“〈〈”amount次。即:如果amount为3,则将其改为normal <<<<<<,而不是normal v3<。
exe...
normal <<<<<<
normal v3<
fwzugrvs7#
如果白色缩进已经存在,并且您希望进一步增加一列或多列,则使用Ctrl-V选择一个包含一个或多个空白列的块,拖动并将其粘贴到同一位置。
Ctrl-V
bpsygsoo8#
我喜欢使用空格来缩进一个带有单个空格的可视选择:
vnoremap <silent> <space> :s/^/ /<CR>:noh<CR>gv
我无法使用Shift+Space来缩进,所以我使用z:
vnoremap <silent> z :s/^\s\=//<CR>:noh<CR>gv
8条答案
按热度按时间qojgxg4l1#
我不确定有没有更好的方法。但是,有几个方法你可以做到这一点(无论如何我能想到的)...
您的可视数据块解决方案
就像你说的:按
Ctl-V
选择所需的行,按I
插入,然后输入空格数。搜寻
与上面类似但更灵活一点--您可以与'select paragraph'
vip
命令一起使用,或者实际上使用任何范围:按v
或vip
或其他键选择范围,然后键入:s/^/{n spaces}
,其中{n个空格}是要插入的空格数。它有点冗长,但在几乎任何范围内都能很好地工作。见鬼,如果你想做整个文件,你可以做
Ctl-A
(取决于操作系统),并缩进整个文件(或者跳过整个视觉模式的事情,只做命令模式...就像:1,$s/^/{n spaces}
一样请注意,您不必在s///中包含第三个斜杠,因为您没有在搜索的末尾放置任何开关。
全局
也许你只想缩进符合某种模式的行。比如......所有包含foo的行。没问题:类型
:g/foo/s/^/{n spaces}
如果它的多行部分具有类似的模式,全局是特别方便的。你可以直接跳到正常模式,然后选择你想要的行并相应地缩进:
:g/foo/norm Vjj:s/^/{n spaces}Ctl-V{Enter}
。在结尾处添加额外的Ctl-V{Enter}
稍微复杂一点,但在某些情况下很有用。使用制表位和移位宽度
是的,如果你经常这样做-我会做
:set ts=2
和:set et
和:set sw=2
,并使用>>
和<<
的每一种方式...生成函数
好吧,还是不够简短,不管出于什么原因,你都需要做很多次,你不能忍受
sw
,et
和ts
的设置。没问题,写一个快速的函数,给予它一个localleader
Map:也许仅仅知道不止一种方法比只知道一种更好?毕竟,有时最好的解决方案取决于问题:)
5anewei62#
使用可视块模式将vi中的代码块缩进三个空格:
1.选择要缩进的代码块。在正常模式下使用Ctrl+V,然后按向下箭头选择文本。选中后,输入“:“对所选文本块给予命令。
1.命令行中将显示以下内容:
:'<,'>
1.要将缩进设置为3个空格,请键入
le 3
并按Enter键。将显示以下内容::'<,'>le 3
1.所选文本将立即缩进3个空格。
使用Visual Line模式将vi中的代码块缩进三个空格:
1.在VI中打开文件。
1.将光标放在一些代码上
1.在正常模式下按以下键:
对您所做工作的解释:
V
表示开始选择文本。jjjj
向下箭头4行,突出显示4行。:
告诉vi您将为突出显示的文本输入一条指令。le 3
表示突出显示文本缩进3行nqwrtyyt3#
要更改为缩进而插入的空格字符数,请使用
shiftwidth
选项:请在此处查看更多details。
您也可以将其添加到
.vimrc
文件中。ogsagwnx4#
如果我没理解错的话,你可以用途:
Ctrl+V,jj,然后':le n',其中n是要缩进的空格数。
http://vim.wikia.com/wiki/Shifting_blocks_visually
um6iljoc5#
在要缩进的代码之间放置标记(“a”和“b”):
执行replace命令,使标记之间的每个换行符都替换为所需的空格数(在本例中为2个空格):
v6ylcynt6#
我必须在一个vim脚本中缩进一个给定的空格数
amount
。一个副作用是它会重置最后一个视觉模式选择。相反,您可能希望编辑
exe...
行,使其在正常模式下重复执行“〈〈”amount
次。即:如果amount
为3,则将其改为normal <<<<<<
,而不是normal v3<
。fwzugrvs7#
如果白色缩进已经存在,并且您希望进一步增加一列或多列,则使用
Ctrl-V
选择一个包含一个或多个空白列的块,拖动并将其粘贴到同一位置。bpsygsoo8#
我喜欢使用空格来缩进一个带有单个空格的可视选择:
我无法使用Shift+Space来缩进,所以我使用z: