Запретить Vim от вставлять строку при вводе двоеточия (:) в Python
Всякий раз, когда я добавляю символ :
в Vim в режиме Python, он либо:
- вставляет строку
- выделяет строку
- ничего не делает
Что он даже пытается сделать, и как мне избавиться от этого поведения?
Ответы
Ответ 1
Некоторые клавиши при нажатии будут вызывать функцию отступа Vim, которая будет пытаться установить правильное количество отступов в текущей строке. (Вы можете вручную запустить это, набрав ==
в нормальном режиме.)
Вы можете изменить, какие клавиши запускают это поведение, но сначала вам нужно знать, какой режим отступов используется.
Сначала выполните :set indentexpr?
. Если это непусто (я бы ожидал этого для Python), то используется режим indentexpr
. В этом случае выполнение :set indentkeys?
дает вам список триггерных ключей. Чтобы удалить двоеточие, выполните :setlocal indentkeys-=:
.
Если indentexpr
пуст, вы, вероятно, используете режим cindent
, а :set cindent?
сообщит вам, что установлен cindent
. В этом случае сделайте то же самое, что и раньше, но используйте cinkeys
вместо indentkeys
. (Обратите внимание, что режим indentexpr
имеет приоритет над режимом cindent
.)
Ответ 2
Он пытается быть полезным. Если вы хотите отключить автоматический отступ для текущего файла,
:setlocal noautoindent
:setlocal nocindent
:setlocal nosmartindent
:setlocal indentexpr=
Или вы можете добавить набор в свой файл vimrc. Вы также можете сделать это для каждого типа файла. См. здесь
Ответ 3
Ответ Натана Григга поставил меня на правильный путь. Мне пришлось внести несколько изменений для моей настройки.
Мне пришлось использовать :setlocal indentkeys-=<:>
, потому что в моем случае :set indentkeys?
показал indentkeys=0{,0},!^F,o,O,e,<:>,=elif,=except
.
Кроме того, размещение :setlocal indentkeys-=<:>
в .vim/after/ftplugin/python.vim
не помогло сделать изменение постоянным. Я обнаружил, что есть встроенный файл indent python vim, который запускается ПОСЛЕ этого файла после ftplugin.
Диагностировать, открыть файл Python для редактирования и запустить :scriptnames
. Это покажет вам список всех скриптов vim, которые были запущены, в порядке приоритета. Сценарии внизу этого списка были применены совсем недавно и имеют приоритет. См. этот вопрос в SuperUser для получения дополнительной информации.
Когда я это сделал, он показал мне встроенный файл vim в /my-install-path/vim/7.4.1830/share/vim/vim74/indent/python.vim
. Разумеется, это установило <:>
как часть отступов.
Чтобы исправить это, я установил автокоманду в .vimrc, и это действительно последнее слово.
autocmd FileType python setlocal indentkeys-=<:>
Обновление
Мне пришлось добавить :setlocal indentkeys-=:
в конце концов. Вот что у меня в моем .vimrc
сейчас.
autocmd FileType python setlocal indentkeys-=<:>
autocmd FileType python setlocal indentkeys-=: