Изменение поведения отступа Vim по типу файла
может кто-нибудь объяснить мне простыми словами самый простой способ изменить поведение отступа Vim на основе типа файла? Например, если я открываю файл Python, он должен отступать с 2 пробелами, но если я открываю скрипт Powershell, он должен использовать 4 пробела.
10 ответов:
вы можете добавить
.vimфайлы, которые будут выполняться всякий раз, когда vim переключается на определенный тип файла.например, у меня есть файл
~/.vim/after/ftplugin/html.vimС этим содержание:setlocal shiftwidth=2 setlocal tabstop=2что заставляет vim использовать вкладки шириной 2 символа для отступа ( установлен глобально в другом месте в моей конфигурации).
это описано здесь:http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4, прокрутите вниз до раздела тип файла подключаемый модуль.
используйте ftplugins или autocommands для установки параметров. (
:h ftpluginдля получения дополнительной информации)In
~/.vim/ftplugin/python.vim:setlocal sw=2 sts=2 etи не забудьте включить их в
~/.vimrcfiletype plugin indent onили
~/.vimrcau FileType python setl sw=2 sts=2 etЯ бы также предложил узнать разницу между
'ts'и'sts'. Многие люди не знают о'sts'.
редактировать
~/.vimrcи добавить различные типы файлов для различных отступов,например, я хочу!--2--> отступ для 2 пробелов иjs/coffeeотступ файлов для 4 пробелов:" by default, the indent is 2 spaces. set shiftwidth=2 set softtabstop=2 set tabstop=2 " for html/rb files, 2 spaces autocmd Filetype html setlocal ts=2 sw=2 expandtab autocmd Filetype ruby setlocal ts=2 sw=2 expandtab " for js/coffee/jade files, 4 spaces autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 expandtab autocmd Filetype coffeescript setlocal ts=4 sw=4 sts=0 expandtab autocmd Filetype jade setlocal ts=4 sw=4 sts=0 expandtab
поместите команды autocmd на основе суффикса файла в~/.vimrc
autocmd BufRead,BufNewFile *.c,*.h,*.java set noic cin noexpandtab autocmd BufRead,BufNewFile *.pl syntax onкоманды, которые вы ищете, вероятно, ts= и sw=
Я обычно работаю с
expandtabset, но это плохо для makefiles. Я недавно добавил::autocmd FileType make set noexpandtabдо конца мой .файл vimrc и он распознает Makefile, makefile и *.mk как makefiles и не расширяет вкладки. Предположительно, вы можете продлить это.
меня всегда поражают люди, которые меняют размер вкладок для разных типов файлов. Что вы делаете, когда смотрите на файл, используя меньше?
лично я использую эти параметры .vimrc:
autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab
Это может быть известно большинству из нас, но в любом случае (я был озадачен мой первый раз): Делать
:set et(:setexpandtabs) не изменяет вкладки, уже существующие в файле, нужно сделать:retab. Например::set et :retabи вкладки в файле заменяются достаточным количеством пробелов. Чтобы иметь вкладки обратно просто сделать:
:set noet :retab
хотя вы можете настроить отступ Vim просто отлично с помощью плагина отступа или вручную с помощью настроек, я рекомендую использовать скрипт python под названием Vindect это автоматически устанавливает соответствующие настройки для вас, когда вы открываете файл python. Используйте этот совет чтобы сделать использование Vindect еще более эффективным. Когда я впервые начал редактировать файлы python, созданные другими с различными стилями отступов (tab vs space и количество пробелов), это было невероятно неприятно. Но Vindect вместе с этот абзац файл
Также рекомендую:
сегодня вы можете попробовать editorconfig, есть плагин vim для него. Благодаря этому вы можете не только изменять размер отступа в vim, но и во многих других редакторах, поддерживать согласованные стили кодирования.
Ниже приведен простой editorconfig, как вы можете видеть, файлы python будут иметь 4 места для отступа, а файлы шаблонов pug будут иметь только 2.
# 4 space indentation for python files [*.py] indent_style = space indent_size = 4 # 2 space indentation for pug templates [*.pug] indent_size = 2
я использую утилиту, которую я написал в C под названием
autotab. Он анализирует первые несколько тысяч строк загружаемого файла и определяет значения параметров Vimshiftwidth,tabstopиexpandtab.это компилируется с помощью, например,
gcc -O autotab.c -o autotab. Инструкции по интеграции с Vim находятся в заголовке комментария вверху.Autotab довольно умный, но может запутаться время от времени, в частности, что были непоследовательно поддерживается с использованием различных стилей отступов.
если файл явно использует вкладки или комбинацию вкладок и пробелов для отступа, Autotab выяснит, какой размер вкладки используется, учитывая такие факторы, как выравнивание внутренних элементов по последовательным строкам, например комментарии.
Он работает для различных языков программирования и прощает для" внеполосных " элементов, которые не подчиняются шагам отступа, таким как директивы предварительной обработки C, C метки операторов, не говоря уже об очевидных пустых строках.
Comments