编辑.scm文件时,Cindent选项似乎无效

时间:2014-02-13 00:33:28

标签: vim scheme racket

我正在尝试使用cindent自动缩进方案/ racket文件。我目前得到的这些选项:set cino =(s,U1,)0,m1是:

    (test
      (myStuff 1)
      )

另外,我希望(myStuff 1)代码从(test缩进1个shiftwidth,但事实并非如此。实际上,改变shiftwidth似乎对此没有影响。我已经证实cindent已经开启了。

我真正想要的是:

     (test
     'shiftwidth'(myStuff 1)
     ) <---- This is aligned with '(' in (test. 

我的.vimrc文件如下所示:

 set nocompatible
 set ai 
 set shiftwidth=3
 set tabstop=3
 filetype off
 filetype plugin indent on

这是我得到的另一个例子:

    ; This is what my indentation currently looks like...
    (this is
          (not what) ; shifted over to line-up with the "i" in is.  
          (I want)
          (to happen)
          )           ; closing paren does NOT line up with opening. 

    ; This is what I want my indentation to look like...
    (this IS
       (what) ;This is shifted over by SHIFT width
       (I want)
       (to happen)
    ) ; This is on the same column as opening paren

据我所知,这是加载lisp语法规则。而且可以肯定的是,我使用:set syntax=lisp强制它成为lisp。另外请注意,每当我将语法设置为ANY语法类型时,这都不会改变这些行缩进的方式。我已经尝试了这个语法规则列表,所有这些都以同样的方式缩进:

     :set syntax=cpp
     :set syntax=php
     :set syntax=lisp
     :set syntax=ruby 
     ... etc. 

为什么我改变的语法没有改变?我现在处于这样的地步,我觉得我只需要编写一个python或perl脚本来进行格式化,因为我似乎无法配置vim来进行正确的格式化。

1 个答案:

答案 0 :(得分:2)

'cindent'实际上仅用于缩进C或C类语言。 Scheme甚至不是远程c-like,它是lisp。

尝试设置'lisp'和'autoindent'而不是'cindent'。更好的方法是,在你的.vimrc中添加filetype indent plugin on,使用Vim中定义的特定于文件类型的缩进规则。

请注意,filetype插件通常会覆盖您在.vimrc中设置的设置。 “cindent”尤其几乎总是被文件类型缩进脚本覆盖,有时也会被“cino”覆盖。