将自动缩进设置为 neovim 中的空格?
Setting autoindentation to spaces in neovim?
我想知道如何在 neovim 启动时将自动缩进设置为四个空格,因为我使用空格进行缩进。
提前致谢。
我不是特别了解 Neovim,但是(根据我的阅读 there)我猜它在这个主题上与 Vim 兼容。所以下面的解释适用于纯 Vim.
您要找的选项是'expandtab'
。但是,为了清楚起见,我在进入此选项之前解释了缩进宽度。
缩进宽度
缩进的宽度由几个选项控制。 “缩进”,在这里,我的意思是例如在插入模式下按 <Tab>
(或 <BS>
,后退 space,这会撤消现有的缩进),或者自动增加缩进级别(取决于关于语言)。
:help tabstop
:help softtabstop
:help shiftwidth
整数选项 'tabstop'
指示用于显示实际制表字符 (\t
) 的宽度(不是您感兴趣的直接内容,而是见下文)。
整数选项 'softtabstop'
表示缩进应该跨越多宽。特殊值 0 表示复制 'tabstop'
的值(或更准确地说,禁用“软制表位”功能),特殊值 −1 表示复制 'shiftwidth'
.[= 的值46=]
整数选项'shiftwidth'
给出用于移位命令的宽度,例如<<
、>>
和==
.特殊值 0 表示复制 'tabstop'
.
的值
缩进 spaces
当设置 'expandtab'
时,缩进总是只使用 space 个字符。否则,按 <Tab>
将插入尽可能多的制表字符,并以 space 个字符完成,直至缩进宽度。
:help expandtab
插图
例如,如果 tabstop=8
和 softtabstop=3
,则在插入模式下:
- 在空行上按
<Tab>
将插入 3 spaces,因此总缩进为 3 列宽;
- 再次按
<Tab>
将再插入 3 个 space,因此总缩进为 6 列宽;
- 按
<Tab>
将使总缩进9列宽;如果设置了'expandtab'
,则总共使用9space来写入;否则,它将使用制表符(取代之前的 whitespaces)后跟 space 字符来编写;
- 按
<BS>
将撤消步骤 3;
- 按
<BS>
将撤消步骤 2;
- 按
<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
文件中。
当然,此外,您可以根据每个缓冲区的文件类型 select 进行特定设置。例如:
" 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
如果您想使用 2 个空格缩进,请将其添加到您的配置中:
set tabstop=2
set shiftwidth=2
set expandtab
set smartindent
如果使用 nvim/lua/settings.lua
:
local o = vim.o
o.expandtab = true
o.smartindent = true
o.tabstop = 2
o.shiftwidth = 2
我想知道如何在 neovim 启动时将自动缩进设置为四个空格,因为我使用空格进行缩进。
提前致谢。
我不是特别了解 Neovim,但是(根据我的阅读 there)我猜它在这个主题上与 Vim 兼容。所以下面的解释适用于纯 Vim.
您要找的选项是'expandtab'
。但是,为了清楚起见,我在进入此选项之前解释了缩进宽度。
缩进宽度
缩进的宽度由几个选项控制。 “缩进”,在这里,我的意思是例如在插入模式下按 <Tab>
(或 <BS>
,后退 space,这会撤消现有的缩进),或者自动增加缩进级别(取决于关于语言)。
:help tabstop
:help softtabstop
:help shiftwidth
整数选项 'tabstop'
指示用于显示实际制表字符 (\t
) 的宽度(不是您感兴趣的直接内容,而是见下文)。
整数选项 'softtabstop'
表示缩进应该跨越多宽。特殊值 0 表示复制 'tabstop'
的值(或更准确地说,禁用“软制表位”功能),特殊值 −1 表示复制 'shiftwidth'
.[= 的值46=]
整数选项'shiftwidth'
给出用于移位命令的宽度,例如<<
、>>
和==
.特殊值 0 表示复制 'tabstop'
.
缩进 spaces
当设置 'expandtab'
时,缩进总是只使用 space 个字符。否则,按 <Tab>
将插入尽可能多的制表字符,并以 space 个字符完成,直至缩进宽度。
:help expandtab
插图
例如,如果 tabstop=8
和 softtabstop=3
,则在插入模式下:
- 在空行上按
<Tab>
将插入 3 spaces,因此总缩进为 3 列宽; - 再次按
<Tab>
将再插入 3 个 space,因此总缩进为 6 列宽; - 按
<Tab>
将使总缩进9列宽;如果设置了'expandtab'
,则总共使用9space来写入;否则,它将使用制表符(取代之前的 whitespaces)后跟 space 字符来编写; - 按
<BS>
将撤消步骤 3; - 按
<BS>
将撤消步骤 2; - 按
<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
文件中。
当然,此外,您可以根据每个缓冲区的文件类型 select 进行特定设置。例如:
" 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
如果您想使用 2 个空格缩进,请将其添加到您的配置中:
set tabstop=2
set shiftwidth=2
set expandtab
set smartindent
如果使用 nvim/lua/settings.lua
:
local o = vim.o
o.expandtab = true
o.smartindent = true
o.tabstop = 2
o.shiftwidth = 2