Может ли кто-нибудь объяснить мне простыми словами самый простой способ изменить поведение Vim для отступов в зависимости от типа файла? Например, если я открываю файл Python, он должен иметь отступ от 2 пробелов, но если я открываю скрипт Powershell, он должен использовать 4 пробела.
file
vim
settings
indentation
EBGreen
источник
источник
Ответы:
Вы можете добавлять
.vim
файлы для выполнения всякий раз, когда vim переключается на определенный тип файла.Например, у меня есть файл
~/.vim/after/ftplugin/html.vim
с таким содержанием:Что заставляет vim использовать вкладки с шириной 2 символа для отступа (
noexpandtab
опция установлена глобально в другом месте в моей конфигурации).Это описано здесь: http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4 , прокрутите вниз до раздела о плагинах типов файлов.
источник
~/.vim/after/ftplugin/html.vim
вместо. Но, как другие отметили ниже, гораздо приятнее просто добавитьautocmd FileType html setlocal shiftwidth=2 tabstop=2
к вашему.vimrc
.autocmd FileType javascript setlocal shiftwidth=2 tabstop=2
)filetype plugin on
в свой vimrc тоже.Используйте ftplugins или автокоманды для установки параметров.
ftplugin
В
~/.vim/ftplugin/python.vim:
И не забудьте включить их в
~/.vimrc
:(
:h ftplugin
для получения дополнительной информации)автокомандного
В
~/.vimrc
:Вы можете заменить любого из длинных команд или настроек с их короткими версиями:
autocmd
:au
setlocal
:setl
shiftwidth
:sw
tabstop
:ts
softtabstop
:sts
expandtab
:et
Я бы также предложил изучить разницу между
tabstop
иsofttabstop
. Многие люди не знают оsofttabstop
.источник
sw
является короткимsoftwidth
,sts
короткимsofttabstop
,et
короткимexpandtab
,setl
короткимsetlocal
иau
короткимautocmd
. Вы можете использовать длинные формы вместо коротких.sw
расширяется,shiftwidth
а неsoftwidth
.отредактируйте
~/.vimrc
и добавьте файлы разных типов для разных отступов, например, я хочу сделатьhtml/rb
отступ для 2 пробелов иjs/coffee
отступ для файлов для 4 пробелов:обратитесь к: Установка параметров пробела Vim по типу файла
источник
"
:)'
дает ошибку на всех моих Linux-vim (7.3+, 8.0 ...)"
, то есть не закрывайте его с другим"
. Не уверен, почему я это прокомментировал, хотя.'
но не оставил"
без права"
@. @Поместите команды autocmd на основе суффикса файла в ваш ~ / .vimrc
Команды, которые вы ищете, вероятно, ts = и sw =
источник
FileType
?Я обычно работаю с
expandtab
сетом, но это плохо для make-файлов. Я недавно добавил:до конца моего файла .vimrc, и он распознает Makefile, makefile и * .mk как make-файлы и не расширяет вкладки. Предположительно, вы можете продлить это.
источник
Лично я использую эти настройки в .vimrc:
источник
Это может быть известно большинству из нас, но в любом случае (я был озадачен в первый раз): Выполнение
:set et
(:set
expandtabs) не меняет вкладки, уже существующие в файле, это нужно сделать:retab
. Например:и вкладки в файле заменяются достаточным количеством пробелов. Чтобы получить вкладки назад просто сделайте:
источник
Сегодня вы можете попробовать editorconfig , для этого есть плагин vim . Благодаря этому вы можете не только изменять размер отступа в vim, но и во многих других редакторах сохранять согласованные стили кодирования.
Ниже приведен простой файл editorconfig, как вы можете видеть, файлы python будут иметь 4 пробела для отступа, а файлы шаблонов pug будут иметь только 2.
источник
Несмотря на то, что вы можете точно настроить отступы Vim, используя плагин Indent или вручную, используя настройки, я рекомендую использовать сценарий Python под названием Vindect, который автоматически устанавливает соответствующие параметры при открытии файла Python. Используйте этот совет, чтобы сделать использование Vindect еще более эффективным. Когда я впервые начал редактировать файлы Python, созданные другими людьми с различными стилями отступов (табуляция против пробела и количество пробелов), это было невероятно сложно. Но Vindect вместе с этим файлом отступа
Также рекомендуем:
источник
Для тех
autocmd
, кто использует , это лучшая практика, чтобы сгруппировать их вместе. Если группировка связана с определением типа файла, у вас может быть что-то вроде этого:Группировка помогает сохранить
.vimrc
организованность, особенно если с типом файла связано несколько правил. В приведенном выше примере определен ярлык комментария для файлов .c.Первоначальный вызов
autocmd!
vim сообщает vim об удалении любых ранее определенных автокоманд в указанной группировке. Это предотвратит повторное определение, если.vimrc
оно получено снова. Смотрите:help augroup
для получения дополнительной информации.источник
Я использую утилиту, которую я написал в C называется
autotab
. Он анализирует первые несколько тысяч строк файла, который вы загружаете, и определяет значения для параметров Vimshiftwidth
,tabstop
иexpandtab
.Это компилируется с использованием, например,
gcc -O autotab.c -o autotab
. Инструкции по интеграции с Vim находятся в заголовке комментария вверху.Autotab довольно умен, но время от времени может запутаться, в частности, из-за того, что он некорректно поддерживается с использованием разных стилей отступов.
Если файл явно использует вкладки или комбинацию вкладок и пробелов для отступа, Autotab определит, какой размер вкладки используется, с учетом таких факторов, как выравнивание внутренних элементов по последовательным строкам, таких как комментарии.
Он работает для различных языков программирования и прощает «внешние» элементы, которые не подчиняются приращениям, такие как директивы предварительной обработки C, метки операторов C, не говоря уже об очевидных пустых строках.
источник