我使用vim相当新,所以如果这是一个非常简单的问题请耐心等待。问题是我在我的.vimrc中设置了smartindent(基本上只有这一个缩进)并且它按照我的预期工作,例如在js文件中编写下面的代码后,它缩进2个制表符(或8个空格)间距(I认为默认选项):
1 sjsjs function(sjdhd, jdjd,{
2 aaaa,
3 bbbb,
4 cccc,
5 dddd
6 });
如果我删除缩进:%left,然后用gg = G自动缩进整个文件,我得到:
1 sjsjs function(sjdhd, jdjd,{
2 aaaa,
3 bbbb,
4 cccc,
5 dddd
6 });
如果我使用' autoindent'和'文件类型插件缩进'我得到一个奇怪的行为,它缩进行dddd,如果我添加eeee它会给出一个双缩进(smartindent在大括号内保持相同的缩进):
1 sjsjs function(sjdhd, jdjd,{
2 aaaa,
3 bbbb,
4 cccc,
5 dddd
6 });
我怎样才能获得以下方式:%left和gg = G?另外,我想整理我的代码(不仅仅是js,而是c ++,shell,html),所以它们看起来很好缩进(例如,没有太多的缩进,我认为cindent会产生太多的缩进)。你能建议一个很好的缩进设置吗?我知道这最后一个问题可以有成千上万的答案/方法,但仍然希望得到一些建议。
提前致谢,
PS。
$ vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 28 2014 01:24:00)
Included patches: 1-417
Compiled by <cygwin@cygwin.com>
$ grep set .vimrc
set nocompatible
"set backspace=indent,eol,start
set nobackup " do not keep a backup file, use versions instead
set backup " keep a backup file (restore to previous version)
set undofile " keep an undo file (undo changes after closing)
set history=50 " keep 50 lines of command line history
set ruler " show the cursor position all the time
set showcmd " display incomplete commands
set incsearch " do incremental searching
set mouse-=a
set hlsearch
autocmd FileType text setlocal textwidth=78
" set autoindent " always set autoindenting on
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
set background=light
set number
set smartindent
答案 0 :(得分:0)
smartindent
是一个旧的,已弃用的选项/机制;你应该用这两个代替那一行:
filetype plugin indent on
set autoindent
第一个激活通常更智能的文件类型特定缩进,第二个激活空缓冲区的基本自动缩进。
答案 1 :(得分:0)
在阅读this和this后,我发现最好使用与您正在使用的文件格式相关的特定插件。对于javascript,这个Better Javascript Indentation插件可以解决问题。我刚刚删除了smartindent等人并使用了插件。