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

15

Я работаю над проектами с разными уровнями отступов. Во многих из этих проектов из-за того, как файлы обычно структурированы, большинство строк имеют отступ по крайней мере на двух уровнях (например, методы в файлах Java).

Это будет означать, что создание новой строки, когда на линии строки

public void something () {

Перенес бы мой курсор на следующую строку, автоматически с отступом, как

public void something () {
    [cursor]

Хотя я могу несколько раз нажать клавишу табуляции на новой строке, чтобы она выстроилась в линию, есть ли лучший способ сделать это (возможно автоматически)?

Кевин Браун
источник

Ответы:

12

Это можно сделать с помощью комбинации autoindentопции и filetypeплагина.

autoindentВариант будет копировать текущие отступы при создании новой строки. Таким образом, если ваш текущий уровень отступа равен 4, когда вы начинаете новую строку, курсор будет перемещен на тот же уровень отступа на следующей строке.

В вашем ~/.vimrcфайле вы бы положили

set autoindent

Вы также можете использовать filetypeплагин для автоматического определения следующего уровня отступа в зависимости от типа файла.

Вы можете включить это на лету с

:filetype indent on

Или в вашем ~/.vimrcфайле вы бы положили

filetype plugin indent on

Который будет автоматически определять отступ в зависимости от типа файла.

Кевин Браун
источник
6

Используйте :set cindent( :set cinдля краткости) или :set smartindent( :set siдля краткости). Если ваша строка заканчивается открывающей скобкой, и вы нажмете Enter, следующая строка будет автоматически с отступом на один дополнительный уровень. (Это лучше, чем :set autoindent, что просто делает отступ для следующей строки на том же уровне.) cindentЛучше приспособлено для языков, подобных С, но smartindentболее универсально для использования с другими языками программирования.

Количество и тип отступа находится под контролем :set shiftwidth=…, :set tabstop=…и :set expandtab.

200_success
источник
'smartindent'не рекомендуется, так что это не лучший выбор. Он был заменен на 'cindent'и 'cinoptions'для C-подобных языков. Тем не менее, в общем случае отступ в типе файла - 'autoindent'это запасной вариант.
Jamessan
@jamessan smartindentне устарела, но cindentстоит отметить. Я обновил ответ. (Спасибо!)
200_success
Я также рекомендую вам взглянуть на editorconfig.org . Конечно, есть плагин для vim (и многих других редакторов), и это отличный способ сохранить настройки вашего редактора по умолчанию на вашей VCS
Cyber ​​Oliveira
0

В нижней части файла я использую:

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Например Dockerfile:

FROM centos-7
RUN ...
CMD ...

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Если вы хотите сохранить только отступ, используйте # vim: st ai si

Эдуардо Куомо
источник