Проблема с отступом редактора Vim, когда первый символ строки является резким символом #

Это убежище было прослушивать меня с первого дня, используя Vim в течение 3 лет. Всякий раз, когда я пытаюсь отложить строку с помощью Shift + >, когда ПЕРВЫЙ ХАРАКТЕР линии начинается с "#", она не работает вообще, независимо от типов файлов (.php,.txt и т.д.)..). Потому что # используется для комментариев в PHP, и я также использую его для оформления текстовых файлов, например:

# This is a comment

### 1. Instruction one

# ------------ this is an sample --------------

Я использую Vim 7.2 в Ubuntu со следующими настройками .vimrc

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

Спасибо!

Ответ 1

Вставьте следующее в .vimrc:

set nosmartindent

Это smartindent, что приводит к тому, что строки, начинающиеся с #, не будут отступаться по вашему желанию. Вы можете узнать больше об этом, набрав :help smartindent. Если вы используете файл отступов для скриптов python (или любой другой синтаксис), включите также следующее.

filetype indent on

Ответ 2

Вы можете использовать:

inoremap # X^H#

Я думаю, что это поведение не совсем ошибочно для C/С++, поэтому я просто изменяю его в python/php.

autocmd FileType python,php inoremap # X^H#

:help smartindent говорит:

При вводе # в качестве первого символа в новой строке отступ для эта строка удаляется, в первую колонку помещается #. Отступ восстанавливается для следующей строки.

Если вы этого не хотите, используйте это сопоставление: :inoremap # X^H#, где ^H вводится с CTRL-V CTRL-H. При использовании команды >> строки, начинающиеся с #, не сдвигаются вправо.