如何在vim中使用缩进进行web开发?

如何在vim中使用缩进进行web开发?,vim,indentation,Vim,Indentation,我开始在工作中使用Linux和Vim。我开始阅读vims文档并创建自己的.vimrc文件等等 我是一名使用HTML、XML、CSS、JS、Python、PHP、ZPT、DTML和SQL的web开发人员 我希望有一个缩进特性:对于每种语言/集合,都有一个对应的缩进解决方案 因此,在js中,编写函数test(){|}将打开 function test(){ | } 如果是php,编写 ……等等。用Python编写函数定义,然后创建for循环语句,它会自动创建缩进 我从autoindent

我开始在工作中使用Linux和Vim。我开始阅读vims文档并创建自己的.vimrc文件等等

我是一名使用HTML、XML、CSS、JS、Python、PHP、ZPT、DTML和SQL的web开发人员

我希望有一个缩进特性:对于每种语言/集合,都有一个对应的缩进解决方案

因此,在js中,
编写函数test(){|}
将打开

function test(){
    |
}
如果是php,编写

……等等。用Python编写函数定义,然后创建for循环语句,它会自动创建缩进

我从autoindent、smartindent和cindent开始,但我对它们的区别有点困惑

vim中的缩进是如何工作的?我应该下载每种语言的插件吗?我描述的行为是否可能与您已经习惯的现有插件一起使用,或者我必须创建它

我一直看到有人在使用Vim,我也在尝试这样做,因为我使用的机器太有限了,但我恐怕我无法在其中提供一个像样的自动缩进解决方案。我真的认为,必须一直手动缩进代码(而不是有时只缩进代码)是浪费时间,这与vim的“生产率”格言背道而驰


(我在VisualStudio的一个小项目中使用了自动缩进,我非常喜欢他们的方法。是否有用于此的插件?

vim通常附带一系列用于不同语言的语法插件。如果要将这些用于缩进,则需要:

set autoindent
filetype indent on

您可能还需要上的
语法,但我不确定缩进是否需要这些语法。不过没什么不好的…

一旦定义了选项卡大小等的正确设置,Vim通常会非常聪明地进行缩进。(编辑:正如Igor在另一个答案中提到的,一定要打开特定于文件类型的缩进。)看起来您希望vim自动插入换行符,但我认为没有插件是无法做到的

不过,我想您可能想看看,这是一个插件,它为不同的编程语言定义了大量的“代码段”,您也可以定义自己的代码段。这基本上是一种改进的制表符完成:

一个例子:

php<tab>
php
变成

<?php
|
?>


以|为光标。有些代码片段甚至定义了多个光标位置,您可以通过另一次按tab键切换到这些位置。

我发现了基于以下内容的设置:

设置自动缩进
inoremap{{}O

使用snipmate.vim和autoclose.vim可以完美地实现这一点。

我已经在使用snipmate…但我希望有一个关于缩进的基本解决方案,而不是使用插件创建我需要的所有标识,使用我描述的与.Hm一起使用的所有语言。如果你对snipmate和“文件类型缩进打开”不满意,我会ink如果不解析正在编写的语言,就没有简单的方法可以完成您的要求。您可以尝试使用autocmds为vim编写脚本,在需要的地方插入换行符(通过:s/x/y/g),然后调用vim的“正确缩进此段落”功能(按{=})。不过,仅仅定义更多的snipMate snips可能会更容易。好吧,你说得有道理。我将搜索此方法,并等待几天,以获得我的问题的更多答案。无论如何,谢谢!谢谢回答,我将在我提供的解决方案中使用更多的snipMate方法。谢谢!
<?php
|
?>
set autoindent
inoremap {<CR> {<CR>}<Esc>O<Tab>