neovim 自动缩进的细微差别
neovim auto-indentation nuances
我刚从 vim 切换到 neovim。以下 vim 配置设置通过缩进获得我想要的行为:
set tabstop=4
set shiftwidth=4
set softtabstop=4
set autoindent
set backspace=indent,eol,start
这里的相关部分是自动缩进:
set autoindent
在每个换行符上,这会导致 vim 匹配上一行的缩进:
def demo_autoindent():
a = 'This line was manually indented'
····
a
的声明手动缩进了一步,但第二行自动缩进了同一级别。这里 我用一系列 ·
个字符表示自动缩进。
Neovim 匹配此行为。然而,Neovim 试图在块方面变得更聪明,或者在这种情况下在 python:
中声明字典
def example_neovim():
b = {
············
请注意,Neovim 不会 自动缩进此行。如果有,它将具有与 b
的声明相同的 4-space 缩进。相反,Neovim 添加了额外的 两个 缩进,使总数达到 12-spaces。
很明显,它打算做的是再增加一个缩进:
def example_neovim_intention():
c = {
········
如何将 Neovim 配置为:
- 匹配 vim 的行为,只是自动缩进到同一级别。
- 在声明时添加一个(而不是两个)额外缩进字典。
问题是 neovim 默认启用了 filetype-indentation:
:filetype
filetype detection:ON plugin:ON indent:ON
将以下内容添加到我的 neovim init 中恢复了基本的 auto-indent 功能:
filetype indent off
这不能令人满意。我怀疑 file-type 检测与我拥有的其他一些缩进配置冲突(或加倍),但自从禁用它后我没有错过它。
我刚从 vim 切换到 neovim。以下 vim 配置设置通过缩进获得我想要的行为:
set tabstop=4
set shiftwidth=4
set softtabstop=4
set autoindent
set backspace=indent,eol,start
这里的相关部分是自动缩进:
set autoindent
在每个换行符上,这会导致 vim 匹配上一行的缩进:
def demo_autoindent():
a = 'This line was manually indented'
····
a
的声明手动缩进了一步,但第二行自动缩进了同一级别。这里 我用一系列 ·
个字符表示自动缩进。
Neovim 匹配此行为。然而,Neovim 试图在块方面变得更聪明,或者在这种情况下在 python:
中声明字典def example_neovim():
b = {
············
请注意,Neovim 不会 自动缩进此行。如果有,它将具有与 b
的声明相同的 4-space 缩进。相反,Neovim 添加了额外的 两个 缩进,使总数达到 12-spaces。
很明显,它打算做的是再增加一个缩进:
def example_neovim_intention():
c = {
········
如何将 Neovim 配置为:
- 匹配 vim 的行为,只是自动缩进到同一级别。
- 在声明时添加一个(而不是两个)额外缩进字典。
问题是 neovim 默认启用了 filetype-indentation:
:filetype
filetype detection:ON plugin:ON indent:ON
将以下内容添加到我的 neovim init 中恢复了基本的 auto-indent 功能:
filetype indent off
这不能令人满意。我怀疑 file-type 检测与我拥有的其他一些缩进配置冲突(或加倍),但自从禁用它后我没有错过它。