Jak mogę automatycznie wciskać nowe linie?

15

Pracuję nad projektami o różnych poziomach wcięcia. W wielu z tych projektów, ze względu na typową strukturę plików, większość linii jest wcięta co najmniej na dwóch poziomach (takich jak metody w plikach Java).

Oznaczałoby to, że utworzenie nowej linii na linii

public void something () {

Przyniosłbym mój kursor do następnej linii, automatycznie wcięty, jak

public void something () {
    [cursor]

Chociaż mogę nacisnąć klawisz Tab kilka razy w nowej linii, aby ustawić ją w kolejce, czy istnieje lepszy sposób na zrobienie tego (możliwe automatycznie)?

Kevin Brown
źródło

Odpowiedzi:

12

Można to zrobić za pomocą kombinacji autoindentopcji i filetypewtyczki.

autoindentOpcja skopiuje aktualną wcięcia przy tworzeniu nowej linii. Więc jeśli bieżący poziom wcięcia wynosi 4 po uruchomieniu nowej linii, kursor zostanie przesunięty na ten sam poziom wcięcia w następnym wierszu.

W swoim ~/.vimrcpliku umieściłbyś

set autoindent

filetypeWtyczki można również użyć do automatycznego określenia następnego poziomu wcięcia na podstawie typu pliku.

Możesz włączyć to w locie za pomocą

:filetype indent on

Lub, w swoim ~/.vimrcpliku, umieściłbyś

filetype plugin indent on

Który automatycznie określi wcięcie na podstawie typu pliku.

Kevin Brown
źródło
6

Użyj :set cindent( :set cinw skrócie) lub :set smartindent( :set siw skrócie). Jeśli twoja linia kończy się otwierającym nawiasem klamrowym, a ty uderzysz Enter, następna linia zostanie automatycznie wcięta o jeden dodatkowy poziom. (Jest to lepsze niż :set autoindent, które jedynie wcina następny wiersz na tym samym poziomie.) cindentJest lepiej dostosowane do języków podobnych do C, a jednocześnie smartindentjest bardziej uniwersalne do użytku z innymi językami programowania.

Ilość i rodzaj wgłębienia jest sterowany :set shiftwidth=…, :set tabstop=…oraz :set expandtab.

200_sukces
źródło
'smartindent'jest przestarzałe, więc nie jest to najlepszy wybór. Został zastąpiony przez 'cindent'i 'cinoptions'dla języków podobnych do C. Ogólnie rzecz biorąc, wcięcie typu pliku jest dobrym rozwiązaniem, 'autoindent'ponieważ jest rezerwowe.
jamessan
@jamessan smartindentnie jest przestarzały, ale cindentwarto go zauważyć. Zaktualizowałem odpowiedź. (Dzięki!)
200_success
Polecam również zajrzeć na Editorconfig.org . Jest oczywiście wtyczka do vima (i wielu innych edytorów) i jest to świetny sposób, aby zachować domyślne ustawienia edytora w VCS
Cyber ​​Oliveira
0

Na dole pliku używam:

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

Na przykład Dockerfile:

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

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

Jeśli chcesz zachować tylko wcięcie, użyj # vim: st ai si

Eduardo Cuomo
źródło