Изменение поведения отступа Vim по типу файла



может кто-нибудь объяснить мне простыми словами самый простой способ изменить поведение отступа Vim на основе типа файла? Например, если я открываю файл Python, он должен отступать с 2 пробелами, но если я открываю скрипт Powershell, он должен использовать 4 пробела.

682   10  

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

и не забудьте включить их в ~/.vimrc

filetype plugin indent on

или ~/.vimrc

au 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

см.: Настройка параметров пробела Vim по типу файла

поместите команды autocmd на основе суффикса файла в~/.vimrc

autocmd BufRead,BufNewFile   *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile   *.pl syntax on

команды, которые вы ищете, вероятно, ts= и sw=

Я обычно работаю с expandtab set, но это плохо для 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 (:set expandtabs) не изменяет вкладки, уже существующие в файле, нужно сделать :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. Он анализирует первые несколько тысяч строк загружаемого файла и определяет значения параметров Vim shiftwidth,tabstop и expandtab.

это компилируется с помощью, например,gcc -O autotab.c -o autotab. Инструкции по интеграции с Vim находятся в заголовке комментария вверху.

Autotab довольно умный, но может запутаться время от времени, в частности, что были непоследовательно поддерживается с использованием различных стилей отступов.

если файл явно использует вкладки или комбинацию вкладок и пробелов для отступа, Autotab выяснит, какой размер вкладки используется, учитывая такие факторы, как выравнивание внутренних элементов по последовательным строкам, например комментарии.

Он работает для различных языков программирования и прощает для" внеполосных " элементов, которые не подчиняются шагам отступа, таким как директивы предварительной обработки C, C метки операторов, не говоря уже об очевидных пустых строках.

Comments

    Ничего не найдено.