2010-05-10 87 views
1

我開始在工作中使用Linux和Vim。我開始閱讀vims文檔並創建我自己的.vimrc文件等。如何在vim中使用縮進進行Web開發?

我是一個使用HTML,XML,CSS,JS,Python,PHP,ZPT,DTML和SQL的Web開發人員。

我想要一個縮進功能like this one:對於每種語言/設置,相應的縮進解決方案。

所以,在JS,writing function test(){|}會變成在

function test(){ 
    | 
} 

如果PHP,寫<?php function test(){|}

<?php 
    function test(){ 
     | 
    } 
?> 

...和這樣的。用Python寫一個函數定義,然後創建一個for循環語句,它會自動創建一個縮進。

我以autoindent,smartindent,cindent開頭,但我對他們的分歧有點困惑。

vim中的縮進如何工作?我是否應該爲每種語言下載插件?我描述過的行爲可能與已有的現有插件或者我必須創建它嗎?

我一直在看使用Vim的人,我也在嘗試這樣做,因爲我使用的機器太有限了,但是我恐怕我不能在自己的機器上有一個像樣的自動縮進解決方案它。我真的認爲必須始終手動縮進代碼(而不是有時只是)浪費時間,這與vim的「MOTTO」我見過稱爲「生產力」是對立的。

(我在Visual Studio中一點點小項目中使用自動縮進,和真的很喜歡他們的做法。是否有一個插件?)

回答

0

我發現基於一個blog post此設置:

set autoindent 
inoremap {<CR> {<CR>}<Esc>O<Tab> 

有了這個與snipmate.vim和autoclose.vim工作完美無缺。

0

VIM通常有不同的語言一堆語法插件。如果你想利用這些縮進,你將需要:

set autoindent 
filetype indent on 

您可能還需要syntax on但我不知道這是需要縮進。雖然...

2

一旦你定義了正確的選項卡大小等設置Vim通常是相當聰明的縮進。 (編輯:正如伊戈爾在另一個答案中提到的,一定要打開文件類型特定的縮進。)似乎你希望vim自動插入新行,儘管我不認爲沒有插件就能做到。

但是,我想你可能想看看snipMate,這是一個爲不同編程語言定義大量「片段」的插件,你也可以定義你自己的。它基本上是一種改進的製表完成的:

一個例子:

php<tab> 

變成

<?php 
| 
?> 

隨着|作爲你的光標。有些片段甚至定義了多個光標位置,您可以通過另一次按下標籤來切換光標位置。

+0

我已經在使用snipMate ...但我想要一個關於縮進的bultin解決方案,而不是使用插件創建我需要的所有標識,以及我描述的所有語言。 – 2010-05-11 11:57:48

+0

嗯。如果你對snipMate和'filetype indent on'不滿意,我認爲沒有簡單的方法去做你所要求的東西,而沒有基本解析你正在編寫的語言。你可以嘗試使用autocmds腳本來插入vim來插入(通過:s/x/y/g),然後調用vim的「正確縮進這個段落」 - 功能性(按{=})。只是定義更多的snipMate剪輯可能會更容易。 – DataWraith 2010-05-12 10:03:28

+0

嗯,你有一點。我要去尋找這種方法,並且等待幾天纔能有更多的答案來解決我的問題。不管怎麼說,還是要謝謝你! – 2010-05-12 13:02:37