How does one align code (braces, parens etc) in vi?
如何在vi中美化/对齐/格式化代码?什么是命令?
我已经粘贴了大量的代码,我需要将其全部格式化/对齐…很明显我是个新手。
X
我答案中的这些命令在VIM中起作用。大多数认为自己在使用vi的人都在使用vim。为了找出你的"vi"是否真的是"vim",打开vi,输入
自动缩进
要打开自动缩进,请确保Vim知道您正在编辑的文件类型(它通常从文件扩展名自动检测到这一点,但可能无法通过某些文件类型找到它)。您可以使用菜单来突出显示语法,告诉它文件类型。然后,这样做:
1 | :filetype indent on |
您可以禁用自动缩进
1 | :filetype indent off |
自动调整/校正压痕
一般来说,=运动将代码与缩进级别对齐。
== 对齐当前行=i{ 对准内块=% 与光标下的匹配括号/括号对齐=14j 或14== 对齐下14行=G 与文件结尾对齐- 同一件事,对准文件(但使用视觉模式)
vjjj= 对齐四行(使用视觉模式)
手动缩进
如果VIM没有正确猜测压痕级别,有两种方法可以更改它:
- 如果您处于正常模式(所有内容都是命令),请执行
<< 向左移动一行,或执行>> 向右移动一个选项卡。您可以使用上面显示的相同移动命令(例如,>i{ 缩进当前的内部代码块)对多行执行此操作。 - 如果处于插入模式,则可以通过执行ctrl-t进一步缩进行(不移动光标),或者使用ctrl-d取消缩进一个选项卡。
对齐等号等
如果要在声明列表中对齐等号,应该考虑使用这个vim脚本:http://www.vim.org/scripts/script.php?Script PTId=294
调整缩进/制表符大小
如果希望vim在缩进时使用空格而不是制表符,请运行此命令(或考虑将其添加到vimrc文件中)。
1 | :set expandtab |
要设置多少空格等于一个制表符,我通常这样做:
1 | :set expandtab softtabstop=3 tabstop=3 shiftwidth=3 |
- Tabstop-选项卡计数的列数(影响现有选项卡字符的显示)
- shiftwidth-使用<<和>>等命令控制重新插入的大小。
- SoftTabstop-按Tab键时插入的空间
- expand tab-将tab键扩展到空格
但是,如果需要大量使用不同数量的选项卡,也可以使用此函数和键绑定:
1 2 3 4 5 | 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> |
如果编辑的文件混合了制表符和空格,则在设置制表符大小后,可能需要使用此命令:
1 | :retab |
另外,如果VIM可用,您不应该使用vi。
如果手动调整缩进,我将在要重新缩进的第一行或最后一行上使用
如果缩进量大了,我会把所有东西都移到
另一种解决方案是使用unix