<<
或>>
该行修复几次,以进行修复。对于多余的空格,我将为我实际想要的每个缩进级别分别执行100<<
和>>
。问题是,就像|允许您通过编号
10|
设置列的动作会将光标移至第10列。如何指定缩进级别?shiftwidth=4 expandtab
的示例(此操作不起作用):The quick (indent level 0)
••••Brown Fox (indent level 1)
••••••••••Jumped over the lazy dog (indent level 2 with two extra spaces)
计算最后一行(2)的缩进级别,并为多余的空格加一个,然后键入
3<<
,然后计算我然后1>>
的缩进级别(或使用autoindent
和==
命令)。我要求类似1==
的功能将压痕强制为1级压痕。或者在某些情况下,请使用0==
一起删除所有压痕。 (分别),因此不能满足我的要求,但希望它能更好地说明问题。#1 楼
您可以使用:left
命令::[range]le[ft] [indent]
[range]
中的左对齐线。将行中的缩进设置为[indent]
(默认值为0)。 {Vi无此功能} 请注意,
:left
将缩进设置为n个空格,并且不知道shiftwidth
或tabstop
,因此使用:left 8
将使用8个空格。如果要设置缩进级别,可以轻松定义一个命令:
command! -nargs=1 Left execute 'left ' . &sw * <args>
使用
:Left 2
将缩进设置为8个空格。要将其映射到
noremap <expr> <Leader>= ':left ' . str2nr(nr2char(getchar())) * &sw . '<CR>'
我不确定这是否是最佳方法,但这是唯一的方法我可以管理... \ = 2会将当前行缩进8个空格,而5 \ = 3会将接下来的5行缩进12个空格。
相关的提示解决您的问题的方法是设置
shiftround
选项。从:help 'shiftround'
缩进到
'shiftwidth'
的倍数。适用于>
和<
命令。插入模式下的CTRL-T和CTRL-D总是将缩进量四舍五入为
'shiftwidth'
的倍数(这是Vi兼容的)。 “舍入”到8个空格。因此,您的问题(使用<<
和3<<
)得到了解决。而且如帮助页面所述,您还可以从插入模式使用>>
。
评论
太棒了!这些解决方案工作完美。
– Sukima
15年3月7日在1:35