你如何在vi中美化/对齐/格式化代码?命令是什么?
我已经粘贴了一大堆代码,我需要将它全部格式化/对齐...显然我是一个新手。
X
答案 0 :(得分:45)
我的回答中的这些命令在vim中工作。大多数认为他们正在使用vi的人正在使用vim。要查明你的'vi'是否真的是'vim',请打开vi并输入:version
- 如果它是vim,它会这样说。否则,您可能只看到没有程序名称的版本号。此外,当您第一次打开vim时,您通常会看到某种类型的闪屏,其中显示“VIM - VI iMproved”......
自动缩进
要打开自动缩进,请确保vim知道您正在编辑的文件类型(它通常会自动从文件扩展名中检测到这一点,但可能无法通过某些文件类型找出它)。您可以使用语法突出显示的菜单告诉它文件类型。然后,这样做:
:filetype indent on
您可以使用
禁用自动缩进:filetype indent off
自动调整/更正缩进
通常, = {motion} 会将代码与缩进级别对齐。
==
对齐当前行=i{
对齐内部块=%
与光标下匹配的括号/括号对齐=14j
或 14==
对齐后续14行=G
与文件末尾对齐vG=
同样的事情,对齐到结尾
文件(但使用可视模式)vjjj=
对齐四行(使用可视模式)手动缩进
如果vim没有正确猜测缩进级别,有两种方法可以更改它:
<<
向左移动一行,或 >>
将其右移一个标签。您可以使用我在上面显示的相同移动命令(例如, >i{
缩进当前内部代码块),使用多行来执行此操作。对齐等号等
如果要在声明列表中对齐等号,则应考虑使用此vim脚本:http://www.vim.org/scripts/script.php?script_id=294
调整缩进/标签尺寸
如果你希望vim在缩进时使用空格而不是制表符,请运行此命令(或考虑将其添加到vimrc文件中)
:set expandtab
要设置与标签相等的空格数,我通常会这样做:
:set expandtab softtabstop=3 tabstop=3 shiftwidth=3
但是如果你必须经常使用不同数量的标签,你也可以使用这个功能和键绑定:
function! Ktabs(tabsize)
execute "set softtabstop=" . a:tabsize . " tabstop=" . a:tabsize . " expandtab shiftwidth=" . a:tabsize
"set softtabstop=a:tabsize tabstop=a:tabsize expandtab shiftwidth=a:tabsize
endfunction
noremap <leader><Tab> :call Ktabs(3)<Left>
如果您正在编辑包含制表符和空格混合的文件,则可能需要在设置制表符大小后使用此命令:
:retab
答案 1 :(得分:5)
={motion}
:h =
P.S。如果vim可用,则不应使用vi。
答案 2 :(得分:4)
如果手动调整缩进,我将在我要重新缩进的第一行或最后一行打开一个带有V
的可视块,移动到包含该块的大括号,转到另一个大括号%
然后使用>
或<
如果缩进很多,我将使用<
一直移动所有内容,并使用.
重复,然后重新缩进所有内容。
另一种解决方案是使用Your problem with Vim is that you don't grok vi.,fmt
{!}fmt
命令