Vim - 像Emacs一样缩进

时间:2010-11-03 08:57:25

标签: vim emacs indentation

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

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

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

的问候,

JP

3 个答案:

答案 0 :(得分:6)

我不知道是否有办法直接将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. 配置文件类型插件,在name.vim文件夹中为特定文件类型创建.vim/ftplugin脚本,并在那里设置所描述的变量。这在vim wiki
  3. 中也有详细描述

答案 1 :(得分:1)

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

c缩进 - 我认为c ++的缩进 - 主要是在Vim源代码中定义的,并且有很多可以设置的选项,加上c.vim或c ++中的特殊配置.vim indent文件。阅读'cindent'和'c-indent'的帮助以获得更多帮助。

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

答案 2 :(得分:0)

这是关于.vimrc缩进的一些选项的摘录:

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

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

:help smartindent
:help autoindent

UPD:也适用于类似C语言的:help C-indenting