在neovim中将自动缩进设置为空格?

时间:2018-08-23 22:30:56

标签: vim neovim

我想知道如何在neovim启动时将自动缩进设置为四个空格,因为我使用空格进行缩进。

谢谢。

2 个答案:

答案 0 :(得分:3)

我不特别了解Neovim,但是(从我读到的there来看)我认为它与Vim在该主题上兼容。因此,以下说明适用于纯Vim。

您要寻找的选项是'expandtab'。但是,为清楚起见,在进入此选项之前,我先解释了缩进宽度。

缩进宽度

缩进的宽度由几个选项控制。这里的“缩进”是指例如在插入模式下按<Tab>(或按<BS>,退格键,这会撤消现有的缩进),或自动增加缩进级别(取决于语言)。

:help tabstop
:help softtabstop
:help shiftwidth

整数选项 'tabstop' 指示用于显示实际制表符(\t)的宽度(不是您感兴趣的字符,而是下面的内容)。 / p>

整数选项 'softtabstop' 表示缩进应该跨越的宽度。特殊值0表示复制'tabstop'的值(或更确切地说,要禁用“软制表位”功能),特殊值-1表示复制'shiftwidth'的值。

整数选项 'shiftwidth' 给出用于移位命令的宽度,例如<<>>==。特殊值0表示复制'tabstop'的值。

缩进空格

设置 'expandtab' 时,缩进始终仅使用空格字符完成。否则,按<Tab>会插入尽可能多的制表符,并以空格字符(最大缩进宽度)结尾。

:help expandtab

插图

例如,如果tabstop=8softtabstop=3,则在插入模式下:

  1. 在空白行上按<Tab>将插入3个空格,因此总压痕为3列宽;
  2. 再次按<Tab>将再插入3个空格,因此总缩进宽度为6列;
  3. 按下<Tab>将使整个缩进成为9列宽;如果设置了'expandtab',那么它将总共使用9个空格来写入;否则,将使用制表符(代替以前的空白)和空格字符来编写;
  4. 按下<BS>将撤消步骤3;
  5. 按下<BS>将撤消步骤2;
  6. 按下<BS>将撤消步骤1。

示例配置

通常,您想使其简单并且三个宽度选项的值相同。这是一个标识所有三个选项的示例配置,因此您只需要根据自己的喜好更改'tabstop'的值。它还根据您的要求设置'expandtab'。最后,由于您使用了自动缩进功能,因此我添加了相关选项:'autoindent''smartindent''cindent';但是您应该为此使用特定于语言的插件。

" length of an actual \t character:
set tabstop=4
" length to use when editing text (eg. TAB and BS keys)
" (0 for ‘tabstop’, -1 for ‘shiftwidth’):
set softtabstop=-1
" length to use when shifting text (eg. <<, >> and == commands)
" (0 for ‘tabstop’):
set shiftwidth=0
" round indentation to multiples of 'shiftwidth' when shifting text
" (so that it behaves like Ctrl-D / Ctrl-T):
set shiftround

" if set, only insert spaces; otherwise insert \t and complete with spaces:
set expandtab

" reproduce the indentation of the previous line:
set autoindent
" keep indentation produced by 'autoindent' if leaving the line blank:
"set cpoptions+=I
" try to be smart (increase the indenting level after ‘{’,
" decrease it after ‘}’, and so on):
"set smartindent
" a stricter alternative which works better for the C language:
"set cindent
" use language‐specific plugins for indenting (better):
filetype plugin indent on

您可以调整这些设置并将其记入.vimrc.nvimrc文件中。

当然,此外,您还可以根据每个缓冲区的文件类型选择特定的设置。例如:

" do NOT expand tabulations in Makefiles:
autocmd FileType make setlocal noexpandtab

" for the C language, indent using 4‐column wide tabulation characters,
" but make <Tab> insert half‐indentations as 2 spaces (useful for labels):
autocmd FileType c setlocal noexpandtab shiftwidth=2

" use shorter indentation for Bash scripts:
autocmd FileType sh setlocal tabstop=2

答案 1 :(得分:0)

如果要使用2个空格缩进,请将其放在配置中:

set tabstop=2
set shiftwidth=2
set expandtab
set smartindent