VIM如何自动删除Python注释上的缩进?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

我正在使用Vim并编辑Python脚本。

Autoindent通常工作得很好,但是当我开始一个新行并输入'#'来输入注释时,Vim将为我排除这些内容。

例如,如果有

def foo():

我按Enter键,Vim会正确地缩进

def foo():
    pass

但是,如果不是键入pass,我输入#,它自动打开缩进。

def foo():
# comment

class Thing():
    def __init__(self):
         pass
# comment line gets unindented all the way

我的.vimrc文件如下。有人知道为什么会这样吗?

set tabstop=4
set smartindent
set shiftwidth=4
set expandtab
set backspace=indent,eol,start
set scrolloff=3
set statusline=%f%m%r%h%w\ [%Y\ %{&ff}]\ [%l/%L\ (%p%%)]
set laststatus=2
提问于
用户回答回答于

设置smartindent使Vim的行为就像你为我描述的那样,而使用nosmartindent(这是我倾向于使用的),它的行为就像你喜欢的那样。

从文档smartindent

当在新行中输入“#”作为第一个字符时,该行的缩进被删除,'#'被放入第一列。下一行恢复缩进。如果你不想要这个,使用这个映射:“:inoremap#X ^ H#”,其中^ H是用CTRL-V CTRL-H输入的。当使用“>>”命令时,以'#'开头的行不会右移。

这似乎是。

用户回答回答于

尽管Michał的文章解释了smartindent的作用,但你可以做得比只关闭它好很多。可以根据自己的喜好进行更多的配置,或者更好地让Vim选择更好的缩进。在vimrc中使用以下代码而不是其他缩进设置:

filetype indent on

Vim会自动为python使用正确的缩进插件。这比仅仅不去除缩进#行更好 - 几乎所有东西都应该正确缩进。

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问5 回答
  • Dingda

    Dingda · 站长 (已认证)

    4 粉丝0 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问2 回答

扫码关注云+社区

领取腾讯云代金券