Комментарии (#) переходят на начало строки в режиме вставки в Vim - PullRequest
56 голосов
/ 14 января 2010

Всякий раз, когда я хочу добавить комментарий к строке с отступом в vim, я нажимаю Shift - o (открыть новую строку над текущим, перейти в режим вставки) и запустить ввод комментария Python (используя #). Затем этот хеш волшебным образом перемещается в начало строки (без отступа), и мне приходится несколько раз нажимать на вкладку.

Кто-нибудь знает, как обойти это?

Ответы [ 3 ]

61 голосов
/ 14 января 2010

Я полагаю, у вас есть set smartindent в вашем .vimrc

См. :h smartindent

When typing '#' as the first character in a new line, the indent for
that line is removed, the '#' is put in the first column.  The indent
is restored for the next line.  If you don't want this, use this
mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
When using the ">>" command, lines starting with '#' are not shifted
right.

Полагаю, вам не нужно умное отступление при кодировании на python. Так что просто удалите его из ваших настроек или добавьте следующее .vimrc:

au! FileType python setl nosmartindent
9 голосов
/ 14 января 2010

попробуйте поместить это в ваш .vimrc:

autocmd BufRead *.py inoremap # X<c-h>#

Это сделает так, что вставка знака хеша (фунта) всегда имеет отступ в исходных файлах Python.

1 голос
/ 14 января 2010

Вы можете попробовать Nerd Commenter , который является плагином, который позволяет автоматически добавлять комментарии к строкам на большинстве языков. Просто поместите курсор на интересующую вас строку и введите , c Пробел , и строка будет закомментирована. Те же самые нажатия клавиш удаляют комментарий, чтобы показать строку.

Итак, если у вас есть:

def func():
  print("indented") &lt- cursor position in command mode

Тип , c Пробел и вы получите:

def func():
  #print("indented")
...