如何获得smartindent的相同结果:%left和gg = G.

时间:2014-10-22 15:57:31

标签: vim cygwin indentation vi

我使用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

2 个答案:

答案 0 :(得分:0)

smartindent是一个旧的,已弃用的选项/机制;你应该用这两个代替那一行:

filetype plugin indent on
set autoindent

第一个激活通常更智能的文件类型特定缩进,第二个激活空缓冲区的基本自动缩进。

答案 1 :(得分:0)

在阅读thisthis后,我发现最好使用与您正在使用的文件格式相关的特定插件。对于javascript,这个Better Javascript Indentation插件可以解决问题。我刚刚删除了smartindent等人并使用了插件。