首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在vi中对齐代码(大括号、括号等)?

如何在vi中对齐代码(大括号、括号等)?
EN

Stack Overflow用户
提问于 2010-04-07 02:50:34
回答 3查看 47.2K关注 0票数 28

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

我粘贴了一大段代码,我需要对其进行格式化/对齐……显然,我是一个vi新手。

X

EN

回答 3

Stack Overflow用户

发布于 2010-04-16 23:30:12

我的答案中的这些命令在vim中有效。大多数认为他们正在使用vi的人都在使用vim。要想知道你的' vi‘是否真的是'vim',打开vi并输入:version --如果是vim,它会这样说。否则,您可能只看到没有程序名称的版本号。此外,当你第一次打开vim时,你通常会看到一个闪屏,上面写着"VIM - VI iMproved“……

自动缩排

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

代码语言:javascript
复制
:filetype indent on

可以使用以下命令禁用自动缩进

代码语言:javascript
复制
:filetype indent off

自动调整/更正缩进

通常,={motion}会将代码与缩进级别对齐。

  • ==对齐当前的line
  • =i{对齐内部的block
  • =%对齐到cursor
  • =14j下匹配的括号/括号或14==对齐下14个lines
  • =G对齐到文件的末尾
  • vG=相同的事情,对齐到文件末尾(但使用视觉模式)
  • vjjj=对齐四行(使用视觉模式)

手动缩排

如果vim没有正确猜测缩进级别,有两种方法可以更改它:

如果处于正常模式(其中所有内容都是命令),请执行<<将一行向左移动,或执行>>将其向右移动一个制表符(

  • )。您可以使用我上面展示的相同的移动命令(例如,>i{缩进当前的内部代码块)来对几行代码执行此操作。

对齐等于符号等

如果您希望在声明列表中对齐等号,则应考虑使用以下vim脚本:http://www.vim.org/scripts/script.php?script_id=294

调整缩进/制表符大小

如果您希望vim在缩进时使用空格而不是制表符,请运行此命令(或考虑将其添加到vimrc文件中)

代码语言:javascript
复制
 :set expandtab

要设置多少个空格等于一个制表符,我通常这样做:

代码语言:javascript
复制
 :set expandtab softtabstop=3 tabstop=3 shiftwidth=3

characters)

  • shiftwidth

  • tab -一个选项卡计多少列(影响现有选项卡的显示) key

  • expandtab -使用<<和>>等控制重新缩进的大小-按tab键时要插入多少空间

-扩展tab键以空格

但是如果你不得不大量使用不同数量的标签,你也可以使用这个函数和快捷键:

代码语言:javascript
复制
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>

如果您正在编辑混有制表符和空格的文件,则可能需要在设置制表符大小后使用此命令:

代码语言:javascript
复制
:retab
票数 48
EN

Stack Overflow用户

发布于 2010-04-07 02:53:40

={motion}

:h =

附注:如果vim可用,则不应使用vi。

票数 5
EN

Stack Overflow用户

发布于 2010-04-07 03:12:50

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

如果缩进减少了很多,我将使用<将所有内容向左移位,并使用.重复此操作,然后重新缩进所有内容。

另一种解决方案是使用Your problem with Vim is that you don't grok vi.{!}fmt中所述的unix fmt命令

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2587435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档