Как я могу достичь конкретного отступа проекта в vim?

Я работаю над несколькими проектами, каждый из которых использует разные стили отступов (для разных типов файлов). Например, 1 вкладка на уровень отступа, 2 или 4 пробела и т.д. Как я могу автоматизировать переключение между этими разными стилями? Я обычно предпочитаю отступы с вкладками, но я устал от необходимости вводить: set expandtabs все время, когда работает с кодом с пространственным разделением. Возможные решения включают загрузку части конфигурации vim на основе пути к файлу или некоторой конфигурации в корне проекта. Есть ли плагин, чтобы решить это для меня элегантным способом?

Ответы

Ответ 1

  • Посмотрите параметр cinoptions и softtabstopexpandtab, но вы это знаете).
  • В вашем '~/.vimrc' определите автоматические команды ввода буфера для каждого каталога, в котором вы сохраняете источники какого-либо проекта, например:

    augroup ProjectSetup
    au BufRead,BufEnter /path/to/project1/* set et sts=2 cindent cinoptions=...
    au BufRead,BufEnter /path/to/project2/* set noet sts=4 cindent cinoptions=...
    augroup END
    

    Если у проекта есть смесь языков и для этого нужны разные настройки, вы также можете добавьте расширения, например:

    au BufRead,BufEnter /path/to/project1/*.{c,h} set noet sts=0 cindent cinoptions=...
    au BufRead,BufEnter /path/to/project1/*.py set et sts=4
    

Ответ 2

Я использую плагин localvimrc, который делает именно то, что вы просите:

Иногда, когда вы работаете над разными проектами, у вас есть проблема, что они используют разные отступы, расширение вкладок и так далее. Вам нужен vimrc для каждого проекта, который отменяет ваши предпочтительные настройки с ~/.vimrc

Ответ 3

EditorConfig и его плагин Vim:

Что такое EditorConfig?

EditorConfig помогает разработчикам определять и поддерживать согласованное кодирование стили между различными редакторами и IDE. Проект EditorConfig состоит из формата файла для определения стилей кодирования и коллекции плагинов текстового редактора, которые позволяют редакторам читать формат файла и придерживаться определенных стилей. Файлы EditorConfig легко читаются и они прекрасно работают с системами контроля версий.

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

Вам просто нужно создать файл .editorconfig в корне проекта, и Vim автоматически найдет его (при условии, что у вас установлен плагин), установив правильные значения. Создание файлов .editorconfig для каждого проекта позволяет добиться того, что вам нужно - отступа для конкретного проекта.

Пример файла конфигурации:

root = true

[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true

[*.{js,html}]
indent_size = 2

[*.css]
indent_size = 4

Ответ 4

Да, есть: Если вы используете Project Plugin, вы можете указать файл, содержимое которого оценивается каждый раз, когда вы открываете файл проекта (этот файл называется in.vim). Противоположностью in.vim является out.vim: этот выполняется каждый раз, когда вы покидаете проект.