它应该很小,甚至可能在帮助中,但我不知道如何导航它。如何在vi中快速缩进多行?
当前回答
可以使用norm i命令在行的开头插入给定的文本。要在第2-10行前插入10个空格:
:2,10norm 10i
请记住,命令末尾必须有一个空格字符——这将是我们想要插入的字符。我们还可以用任何其他文本缩进一行,例如用五个下划线字符缩进文件中的每一行:
:%norm 5i_
或者更花哨的东西:
:%norm 2i[ ]
更实际的例子是用#字符注释Bash/Python/etc代码:
:1,20norm i#
要重新缩进,请使用x而不是i。例如,要从每行中删除前5个字符:
:%norm 5x
其他回答
更多视觉人的按键:
进入命令模式:逃跑移动到要缩进的区域的开头:hjkl公司↑↓←→启动块:v移动到要缩进的区域末端:hjkl公司↑↓←→(可选)键入所需的缩进级别数0..9在块上执行缩进:>
我使用块模式视觉选择:
到块的前面移动(在顶部或底部)。按Ctrl+V进入视觉块模式。导航以选择行前面的列。按I(Shift+I)进入插入模式。键入一些空格。按Esc键。所有线路都会移位。
这不是一蹴而就。它起作用:
在队伍中间。在所有行上插入任何字符串。要更改列(使用c而不是I)。拖动、删除、替换等。。。
假设您使用2个空格缩进代码。类型:
:set shiftwidth=2
键入v(进入视觉块编辑模式)使用箭头键(或使用h/j/k/l)移动光标以高亮显示要缩进或不缩进的行。
然后:
键入>以缩进一次(2个空格)。键入2>以缩进两次(4个空格)。键入3>以缩进三次(6个空格)。...键入<以取消缩进一次(2个空格)。类型2<取消缩进两次(4个空格)。类型3<至无凹痕三次(6个空格)。...
你明白了。
(空行不会缩进,我觉得这有点不错。)
我在(g)vim文档中找到了缩进块的答案:
:help visual-block
/indent
如果要给命令计数,请在键入之前执行此操作运算符字符:“v{movearound}3>”(将第3行缩进到右侧)。
转到文本开头
按v进入视觉模式。使用向上/向下箭头突出显示文本。按=缩进高亮显示的所有行。
假设|表示光标在Vim中的位置。如果要缩进的文本包含在代码块中,如:
int main() {
line1
line2|
line3
}
您可以执行>i{,这意味着“在(i)块({)内缩进(>)”并获得:
int main() {
line1
line2|
line3
}
现在假设这些线是连续的,但在块之外,例如:
do
line2|
line3
line4
done
要缩进第2行到第4行,您可以直观地选择行并键入>。或者更快,您可以做>2j以获得:
do
line2|
line3
line4
done
注意,>Nj表示从当前行缩进到下面的N行。如果要缩进的行数很大,用户可能需要几秒钟才能计算出正确的N值。为了节省宝贵的时间,您可以使用设置的relativenumber激活相对数选项(从Vim 7.3版开始提供)。
推荐文章
- 强迫自己掌握vi的最好方法是什么?
- 如何在Atom中更改缩进模式?
- 如何回到行之前编辑的最后一个在Vim?
- 如何缩进/格式选择的代码在Visual Studio代码?
- 如何跳转到一个特定的人物在vim?
- 如何删除一个大的文本块而不计算行?
- 在Python中格式化多行字典的正确方法是什么?
- 是否有Eclipse行宽标记?
- 在Vim/Vi中,如何将光标移动到前一个单词的末尾?
- 如何在vim中自动删除尾随空格
- git可以自动在空格和制表符之间切换吗?
- 为什么Vim使用~扩展名保存文件?
- 如何在Vim或Linux中将空格转换为制表符?
- 如何在编辑器(Atom, notepad++, Kate, VIM, Sublime, Textpad等)和ide (NetBeans, IntelliJ IDEA, Eclipse, Visual Studio等)中选择列
- 使用Emacs递归地查找和替换尚未打开的文本文件