关于格式:如何在vi中对齐代码(大括号,parens等)?

How does one align code (braces, parens etc) in vi?

如何在vi中美化/对齐/格式化代码?什么是命令?

我已经粘贴了大量的代码,我需要将其全部格式化/对齐…很明显我是个新手。

X


我答案中的这些命令在VIM中起作用。大多数认为自己在使用vi的人都在使用vim。为了找出你的"vi"是否真的是"vim",打开vi,输入:version--如果是vim,它会这样说。否则,您可能只看到一个没有程序名称的版本号。另外,当你第一次打开Vim时,你通常会看到一个类似于"Vim-Vi改进"的闪屏……

自动缩进

要打开自动缩进,请确保Vim知道您正在编辑的文件类型(它通常从文件扩展名自动检测到这一点,但可能无法通过某些文件类型找到它)。您可以使用菜单来突出显示语法,告诉它文件类型。然后,这样做:

1
:filetype indent on

您可以禁用自动缩进

1
:filetype indent off

自动调整/校正压痕

一般来说,=运动将代码与缩进级别对齐。

  • ==对齐当前行
  • =i{对准内块
  • =%与光标下的匹配括号/括号对齐
  • =14j14==对齐下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


={motion}

:h =

另外,如果VIM可用,您不应该使用vi。


如果手动调整缩进,我将在要重新缩进的第一行或最后一行上使用V打开一个可视块,移动到包含该块的大括号,使用%转到另一个大括号,然后使用><移动该行。

如果缩进量大了,我会把所有东西都移到<左边,然后用.重复,然后重新缩进所有东西。

另一种解决方案是使用unix fmt命令,正如您在vim问题中所描述的那样,这是因为您不摸索vi.、{!}fmt