我正在尝试使用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来进行正确的格式化。
答案 0 :(得分:2)
'cindent'实际上仅用于缩进C或C类语言。 Scheme甚至不是远程c-like,它是lisp。
尝试设置'lisp'和'autoindent'而不是'cindent'。更好的方法是,在你的.vimrc中添加filetype indent plugin on
,使用Vim中定义的特定于文件类型的缩进规则。
请注意,filetype插件通常会覆盖您在.vimrc中设置的设置。 “cindent”尤其几乎总是被文件类型缩进脚本覆盖,有时也会被“cino”覆盖。