Mam fragment źle sformatowanego kodu Perla:
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
chcę przeformatować to w Vimie. Po użyciu polecenia gg=G
, kod jest sformatowany jako:
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
Właściwie chcę go sformatować w Vimie jak poniżej:
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
Co powinienem zrobić?
- Po użyciu vim-perl , automatyczne formatowanie nadal nie robi tego, co chcę.
vim
perl
indentation
autoindent
Marslo
źródło
źródło
filetype plugin indent on
w twoim vimrc i robiset ft?
powrótfiletype=perl
?filetype plugin indent on
został ustawiony na linia 110 . Czy dodałeś wtyczkę do składni Perla?vim -u NONE -N a.pl -c 'filetype plugin indent on' -c 'filetype detect'
co oznacza, że nie jest to moja konfiguracja vima. Używam vim 7.4.258.Odpowiedzi:
Zakładając, że jesteś na systemie operacyjnym podobnym do Uniksa ...
Złapać perltidy (wysoce dostosowywalny wgłębnik / formater kodu Perla). Następnie zaktualizuj swój
~/.vimrc
plik zawierający następujące elementy:Pozwoli to zaznaczyć dowolny blok kodu Perla, a następnie sformatować go, naciskając = . To zakłada, że
perltidy
znajduje się w twoim$PATH
, w przeciwnym razie podaj pełną ścieżkę do pliku wykonywalnego.Domyślnie,
perltidy
sformatuje Twój kod jako... ale używając
-i=2
(--indent-columns=2
) i-pt=2
(--paren-tightness=2
) (umieściłbyś te opcje w swoim~/.perltidyrc
plik, po jednym w linii)To jest dokładnie to, o co prosiłeś.
Jeśli naprawdę nie musisz mieć miejsca po
while
, zawsze używaj-nsak=while
(--nospace-after-keyword=while
).źródło
Najpierw ustaw wymagane opcje formatowania, np.
set cindent sw=2 expandtab
(użyj wcięcia typu C, wcięcie 2 spacji, rozwinięcie znaku tabulacji do spacji). Następnie wcnij cały plik / bufor.źródło
Vim zawiera wtyczkę do wcięcia Perla i tak długo, jak masz
:filetype indent on
gdzieś w twoim starcie (takim jak vimrc) powinno być możliwe wykonanie wcięć dla plików Perla. Ale zauważ, że będzie to tylko wcięcie, nie doda ani nie usunie znaków nowej linii.źródło