我使用vim(主要是因为我可以在普通的ssh终端上工作 - 仍然对Emacs非gui版本感到不舒服)但是组织中的大多数同事都使用emacs。因此,使用CVS,我们会遇到缩进不一致问题(制表符变为空格,制表符/空格数,代码布局等)。
有没有办法让VIM作为EMACS完全缩进。 (类似于我的同事使用的默认emacs配置文件)。
(最重要的是,我希望vim的C ++和TCL缩进方案与emacs相匹配)。
的问候,
JP
答案 0 :(得分:6)
我不知道是否有办法直接将Emacs缩进设置导入到vim中,但您可以在vim中配置相同的行为:
set expandtab
会将标签转换为空格
set autoindent
将保留上一行的缩进级别
set shiftwidth=4
将使用>>影响块缩进并且<<
set softtabstop=4
设置空格中软标签的长度
set tabstop=8
设置制表符的宽度
vim wiki正确解释了这一点。
当您需要特定于文件类型的缩进时,您有两个选择:
au BufRead,BufNewFile *.py,*pyw,*.html,*.js set shiftwidth=4
将为* .py文件设置shiftwidth。name.vim
文件夹中为特定文件类型创建.vim/ftplugin
脚本,并在那里设置所描述的变量。这在vim wiki。答案 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