【问题标题】:Vim - indent like EmacsVim - 像 Emacs 一样缩进
【发布时间】:2011-05-04 09:06:44
【问题描述】:

我使用 vim(主要是为了让我可以在普通的 ssh 终端上工作 - 仍然对 Emacs 非 gui 版本感到不舒服)但我组织中的大多数同事都使用 emacs。所以使用 CVS,我们会面临缩进不一致的问题(制表符变成空格、制表符/空格的数量、代码布局等)。

有没有办法让 VIM 缩进完全像 EMACS。 (类似于我同事使用的默认 emacs 配置文件)。

(最重要的是,我希望 vim 的 C++ 和 TCL 缩进方案与 emacs 相匹配)。

问候,

日本

【问题讨论】:

标签: vim emacs indentation


【解决方案1】:

以下是 .vimrc 中有关缩进的一些选项的摘录:

set expandtab
set tabstop=2
set shiftwidth=2
set autoindent
set smartindent

vim 帮助中很好地描述了所有选项:

:help smartindent
:help autoindent

UPD:也适用于类 C 语言,您可以考虑 :help C-indenting

【讨论】:

  • 嗨,有没有办法知道 tabstop/shiftwidth 的值将最接近地模仿 emacs。 bzh 将它们列为 8,4 但我怀疑 2,2 更合适。有什么指点吗?
  • @JP19 抱歉,我从来没有使用过 emacs,所以我对默认外观一无所知 :)
【解决方案2】:

我不知道有没有办法直接将 Emacs 缩进设置导入 vim,但你可能可以在 vim 本身中配置相同的行为:

set expandtab 将制表符转换为空格
set autoindent 将保持上一行的缩进级别
set shiftwidth=4 将影响块缩进 >> 和 set softtabstop=4 设置长度空格软制表符
set tabstop=8设置制表符宽度

这在vim wiki 中得到了正确解释。

当您需要特定文件类型的缩进时,您有两种选择:

  1. 设置 autocmd 以更改文件读取和文件创建时的缩进:
    au BufRead,BufNewFile *.py,*pyw,*.html,*.js set shiftwidth=4 将为 *.py 文件设置 shiftwidth。
  2. 配置文件类型插件,在.vim/ftplugin 文件夹中为特定文件类型创建name.vim 脚本,并在那里设置描述的变量。这在vim wiki 中也有详细描述。

【讨论】:

    【解决方案3】:

    关于 c++ 和 TCL 的专用缩进,有一些特殊的东西适用于所有其他建议的设置信息。 Vim 在不同语言的代码中定义了特殊的缩进规则。其中一些可以在 vim 安装的 /indent 目录中找到,其中每种文件类型都有一个单独的文件。有关其工作原理的更多信息,请阅读“indentexpr”的帮助。

    c 缩进——我认为也是 c++ 的缩进——主要是在 Vim 源代码中定义的,并且有无数的选项可以设置,另外还可以在 c.vim 或 c++.vim 缩进中特别配置文件。阅读“cindent”和“c-indenting”的帮助以获得更多帮助。

    简而言之,tcl.vim 文件控制 tcl 文件的特殊缩进。如果你想修改缩进如何与 tcl 一起工作,你会想改变那个文件中的 main 函数。 c/c++ 缩进很大程度上由 Vim 内部控制,但有许多不同的选项标志。您可以通过按照您想要的方式配置选项和/或通过在 /indent 目录中为缩进文件编写函数来控制 c/c++ 缩进。 (我相信 /indent 目录中没有 c++ 文件,不确定 c.vim 是否是要在那里编辑的文件,或者您是否需要创建新的 c++.vim 文件。我认为这是将使用的 c.vim 文件。这在标准 Vim 安装中基本上是一个空壳,但您可以阅读其他 *.vim 缩进文件以了解它们的工作原理。

    【讨论】:

      猜你喜欢
      • 2014-04-22
      • 2012-11-18
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多