它应该很小,甚至可能在帮助中,但我不知道如何导航它。如何在vi中快速缩进多行?


当前回答

Vim UI的优点在于其一致性。编辑命令由命令和光标移动组成。光标移动始终相同:

H到屏幕顶部,L到底部,M到中间nG到第n行,G单独到文件底部,gg到顶部n移动到下一个搜索匹配,n移动到上一个}至段落末尾%到下一个匹配的括号,括号或标记类型进入下一行“x标记x,其中x是字母或其他字母”。还有很多,包括单词的w和w、行尖的$或0等,这些都不适用于这里,因为它们不是行移动。

因此,为了使用vim,您必须学会移动光标并记住一系列命令,例如,>to indent(和<to“outdent”)。

因此,要将光标位置的行缩进到屏幕顶部,请执行>H,>G以缩进到文件底部。

如果不是键入>H,而是键入dH,则删除相同的行块,cH替换它,等等。

某些光标移动更适合特定命令。特别是,%命令可以方便地缩进整个HTML或XML块。如果文件突出显示了语法(:syn on),则在标记的文本中设置光标(例如,在<div>的“i”中,输入>%将缩进到最后的</div>标记。

这就是Vim的工作原理:只需要记住光标移动和命令,以及如何混合它们。因此,我对这个问题的回答是:如果缩进被解释为移动行,=如果缩进被理解为在漂亮的打印中,那么“转到要缩进的行块的一端,然后键入>命令并移动到块的另一端”。

其他回答

要缩进文件类型中的每一行,请按Esc,然后按G=gg。

我使用块模式视觉选择:

到块的前面移动(在顶部或底部)。按Ctrl+V进入视觉块模式。导航以选择行前面的列。按I(Shift+I)进入插入模式。键入一些空格。按Esc键。所有线路都会移位。

这不是一蹴而就。它起作用:

在队伍中间。在所有行上插入任何字符串。要更改列(使用c而不是I)。拖动、删除、替换等。。。

执行以下操作:

$vi .vimrc

并添加此行:

autocmd FileType cpp setlocal expandtab shiftwidth=4 softtabstop=4 cindent

这仅适用于cpp文件。您可以对其他文件类型执行此操作,也可以通过修改文件类型。。。

对我来说,MacVim(Visual)解决方案是用鼠标选择并按“>”,但在“~/.vimrc”中输入以下行后,因为我喜欢空格而不是制表符:

set expandtab
set tabstop=2
set shiftwidth=2

此外,能够从命令行(Terminal.app)调用MacVim也是很有用的,因为我有以下助手目录“~/bin”,我在其中放置了一个名为“MacVim”的脚本:

#!/usr/bin/env bash
/usr/bin/open -a /Applications/MacPorts/MacVim.app $@

当然,在“~/.bashrc”中:

export PATH=$PATH:$HOME/bin

MacPorts经常使用“~/.profile”,因此PATH环境变量可能会很长。

使用VISUAL MODE的快速方法使用与注释代码块相同的过程。

如果您希望不更改shiftwidth或使用任何set指令,并且足够灵活,可以使用TABS或SPACE或任何其他字符,则此选项非常有用。

将光标定位在块的开头v切换到--视觉模式--选择要缩进的文本类型:切换到提示替换为3个前导空格::'<,'>s/^//g或替换为前导制表符::'<,'>s/^/\t/g简要说明:“<,”>-在可视选定范围内s/^//g-在整个范围内的每行开头插入3个空格(或)s/^/\t/g-在整个范围内每行的开头插入制表符