Vim编辑器缩进问题,当行的第一个字符是尖锐的#字符



从使用Vim的第一天起,这个问题就一直困扰着我3年。每当我尝试通过Shift + >缩进一行时,当该行的第一个字符以"#"开头时,它根本不起作用,无论文件类型(.php, .txt等)。因为#在PHP中用于注释我也用它来修饰文本文件比如:

#这是一个注释# # # 1。指导一个# ------------ 这是一个样品  --------------

我在Ubuntu中使用以下.vimrc设置的Vim 7.2

syntax on
set t_Co=256
set incsearch
set hlsearch
set number
set nowrap
set nowrapscan
set ignorecase
set et
set sw=4
set smarttab
set smartindent
set autoindent
set textwidth=0
set noequalalways
set formatoptions=1
set lbr
set vb      
set foldmethod=marker

在您的.vimrc中插入以下内容:

set nosmartindent

smartindent导致以#开头的行不像您想的那样缩进。您可以通过输入:help smartindent来了解更多信息。如果你为python脚本(或任何其他语法)使用缩进文件,也包括以下内容:

filetype indent on

您可以使用:

inoremap # X^H#

我认为这种行为在C/c++中并不完全错误,因此我只是在python/php中更改它。

autocmd FileType python,php inoremap # X^H#

:help smartindent说:

当输入#作为新行的第一个字符时,缩进为这一行被删除,#被放在第一列。的缩进为下一行还原。

如果你不需要这个,使用这个映射::inoremap # X^H#,其中^HCTRL-V CTRL-H一起输入。当使用>>命令时,以#开头的行不会右移。

在询问ChatGPT后,我终于找到了解决方案。

默认情况下,vim将foldignore设置为#,您可以通过在vim中运行此命令来验证:

set foldignore?

您将看到输出foldignore=#

解决方案:将此添加到您的vim配置:

set foldignore=

最新更新