2014-02-13 51 views
0

我想用cindent自動縮進方案/ racket文件。什麼我目前正在與這些選項獲得:集華蟾素=(S,U1,)0,M1是:Cindent選項在編輯.scm文件時似乎什麼也不做。

(test 
     (myStuff 1) 
    ) 

而且,我希望(myStuff 1)代碼是縮進1個shiftwidth的從(test,但事實並非如此。實際上,改變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來誹謗。另外需要注意的是,無論何時將語法設置爲ANY語法類型,都不會改變這些行的縮進方式。我試過的語法規則列表和所有的人都縮進以同樣的方式:

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

這是爲什麼不與我改變任何語法變化?我現在就在那裏,我覺得我只需要編寫一個python或perl腳本來執行我的格式化,因爲我似乎無法配置vim在此處執行正確的格式設置。

+0

在'smartindent'和'auotindent'之間切換似乎沒有改變任何東西。 – user985030

回答

2

「cindent」實際上僅用於縮進C或C類語言。 Scheme甚至不是遠程c-like,它是lisp。

嘗試設置'lisp'和'autoindent'而不是'cindent'。更妙的是,使用Vim中定義的特定於文件類型的縮進規則,在您的.vimrc中添加filetype indent plugin on

請注意,filetype插件通常會覆蓋您在.vimrc中設置的設置。 'cindent'特別幾乎總是會被文件類型縮進腳本覆蓋,有時也會被'cino'覆蓋。

+0

我明白這是格式化C,但我想要的東西,我可以利用已經。問題是,我的.vimrc文件曾經用於老版本的vim,當我切換到更新的版本時,它似乎並沒有縮小我設置過程中一直困擾着我的方式。 Lisp使用的自動縮進文件幾乎沒有任何內容,因此打開或關閉自動縮進似乎沒有效果。此外,如果我':設置語法= cpp'並試圖改變括號行爲,它什麼也不做。我可以設置'cino =(100s,U100,)100,m100並且重新注入什麼也不做。 – user985030