Niedawno zdałem sobie sprawę, że moje vimrc
ma teraz ponad 400 linii (które IMO to za dużo, postaram się to zmniejszyć) i aby ułatwić nawigację, czytanie i edycję, postanowiłem zbadać koncepcję składania w vimie (która Nie znałem) .
- Próbowałem ustawić metodę składania na,
indent
ale nie podobał mi się wynik (był to zbyt bałagan, głównie dlatego, że duża część mojegovimrc
nie jest tak naprawdę wcięta). - Próbowałem również do zestawu
foldmethod
doexpr
asyntax
, ale nie był w stanie prawidłowo złożyć cokolwiek. - Tutaj użycie
diff
metody składania nie wydaje się istotne. (Lub jeśli tak, nie rozumiem, jak go używać) - Na razie używam
marker
metody, która nie do końca mnie satysfakcjonuje ze względu na znaczniki"{{{
i"}}}
, które znalazłem w pliku „zaszumione”.
Chciałbym więc wiedzieć, czy istnieją najlepsze praktyki lub wspólne wytyczne dotyczące prawidłowego składaniavimrc
.
Uwaga 1: Jak wszyscy wiemy SO nie jest forum i nie jest przeznaczone do zbierania osobistych opinii i nie tego szukam: oczywiście myślę, że niektórzy ludzie mają swoje preferencje, ale chciałbym wiedzieć, dlaczego warto korzystać znaczniki (na przykład) poprawiają czytelność bardziej niż użycie wcięcia.
Uwaga 2: Moim głównym celem jest również vimrc
wyjaśnienie tego, jak to możliwe, więc jeśli istnieją inne najlepsze praktyki tworzenia fajnych vimrc
, jestem tego ciekawy.
Edycja 1: Powinienem był sprecyzować, że mój vimrc
jest już podzielony na sekcje (a czasem podsekcje).
- ogólne opcje
- wtyczki (zawierające podsekcję dla każdej wtyczki i jej konfiguracji)
- mapowania
- nawigacja (zawierająca także podsekcję)
- kolor
- itp...
I to właśnie ta struktura sprawiła, że pomyślałem o zwijaniu: czuję, że możliwość wygenerowania tylko części, która mnie interesuje w pewnym momencie, jest dość wygodna.
Edycja 2: Odpowiedź podająca podział na vimrc
kilka plików jest poprawna, ale jako osobistą preferencję wolę używać składania, ponieważ myślę, że łatwiej jest utrzymać tylko jeden plik w repozytorium git zawierającym moje pliki dot. To tylko osobiste preferencje i wiem, że można również zastosować to podejście, ale wolałbym używać foldowania.
"{{{
jest najbardziej „vimopodobnym” sposobem robienia rzeczy, solaryzowana wtyczka korzysta z tego i chociaż może być głośna, daje najbardziej standardowy sposób ręcznego składaniaOdpowiedzi:
Na dole
vimrc
mam następujące modelki, które skopiowałem od godlygeek, autora tabel :Spowoduje to, że każda linia, zaczynająca się od 2+
"
, jest fold. Im więcej"
, tym głębsza jest zakładka. To pozwala ci podzielić sekcje, jeśli potrzebujesz.źródło
>extra number of "
(poziom początkowy, który jest nasycony liczbą po <w tej linii) lub'='
(użyj poziomu poprzedniej linii), znaczenie można znaleźć wfold-expr
Dobrym pomysłem jest najpierw zdefiniowanie własnych kategorii
.vimrc
(np. Listy z podlistami i podlistami) i dodanie wszystkich wtyczek / ustawień / funkcji do odpowiednich kategorii. W połączeniu z niestandardowym składaniem może to działać świetnie:Powyższy przykład pokazuje możliwe kategorie, które uważam za pomocne w uporządkowaniu moich
.vimrc
. Wykorzystuje następujące spersonalizowane ustawienia składania:Aby zdefiniować własne kategorie i podkategorie, użyj następującej składni:
Kategorię najwyższego poziomu można utworzyć naprawdę łatwo, jeśli używasz vim-snippets (np. Z UltiSnips ): Po prostu rozwiń
box
lubbbox
snippet dostarczony przez vim-snippets (napiszbox
lubbbox
naciśnij spust rozwijania).Aby przełączyć fałdy w tryb otwierania i zamykania jeszcze szybciej, naciskając dwukrotnie spację:
W ten sposób masz dobrze zorganizowaną,
.vimrc
łatwą w obsłudze nawigację.źródło
Używam mojego podstawowego
vimrc
jako linku do kilku innych skategoryzowanych plików, pozyskując każdy w miarę upływu czasu, np. Opcje Vima w jednym pliku, ustawienia wtyczki w innym.Jako bardziej bezpośrednią odpowiedź na pytanie OP, używam metody markera, ale w większości z prawej strony z odstępami i wokół większej liczby kategorii niż pojedynczych. Jednak każdą wtyczkę robię osobno.
źródło
vimrc
różnych plików, ponieważ (IMO) zwiększa to złożoność i utrudnia utrzymanie. O składaniu, co rozumiesz przez „przesunięcie w prawą stronę z odstępami”?" {{{
tyle miejsc, ile masz,textwidth
więc znaczniki znajdują się w pobliżu prawej krawędzi. Mam również spersonalizowaną funkcję FoldText w pliku folding.vim. Wolę osobne pliki, aby moje repozytorium git zawierało tylko jeden określony typ modu na zatwierdzenie.Można powiedzieć, że „najlepsza praktyka” jest przede wszystkim kwestią opinii :), ale istnieją dwa podejścia, które (1) mają oczywisty sens i (2) można zastosować do wszystkich plików konfiguracyjnych, nie tylko Vima: składanie według sekcji logicznych i podrozdziały (lub nawet głębsze, jeśli czujesz się odważny), i dzielenie konfiguracji na kilka mniejszych plików i
:source
ich używanie.Osobiście wolę składanie, ponieważ ułatwia dostęp do rzeczy, a jednocześnie daje mi trochę hierarchii do wyboru.
autocmd
Dobrym pomysłem jest również składanie funkcji is na najbardziej wewnętrznych poziomach, ponieważ tworzą one „naturalne” jednostki logiczne.marker
Składanie ma sens w tym wszystkim, ponieważ logiczne hierarchie niekoniecznie odzwierciedlają się w poziomach wcięć lub w podświetlaniu składni. Zwiększam równieżfoldcolumn
, co daje mi wizualną wskazówkę, gdzie jestem:Na marginesie, ta
foldtext
funkcja (modyfikacja podobnej funkcji przez Drew Neila, IIRC) ma dla mnie większy sens niż domyślna:Przy drugim podejściu do dzielenia plików głównymi problemami są znajdowanie rzeczy i przełączanie się z jednego pliku do drugiego. Bardzo dobrym sposobem rozwiązania obu jest użycie wtyczki takiej jak CtrlSF , CtrlP lub podobnej. Ale prawdopodobnie i tak już używasz jednego z nich.
źródło
marker
. Rzeczywiście, dostosowaniefoldcolumn
jest fajną rzeczą, zobaczę, która wartość najlepiej pasuje do moich potrzeb. Podzielam również twój pogląd na podzielone pliki, ale nie wiedziałemCtrlSF
, że przyjrzę się temu, nawet jeśli jestem bardzo zadowolonyCtrlP
.fdm
sięfoldtext
iMyFoldText()
ale wydaje się, że to nie jest właściwa droga, aby go używać.CtrlSF
działa najlepiej z ag lub ack , które są zasadniczo wyspecjalizowanymi wersjamigrep
.foldtext
nie jest niestandardową metodą składania, ale funkcją zmieniającą wygląd złożonego tekstu. Ostatni wiersz w moich pokazów urywek, jak to działa:set foldtext=MyFoldText()
.Podstawowe najlepsze praktyki:
Podziel na sekcje:
Skomentuj każdą sekcję / powiąż ponownie
( wykonaj kopię zapasową swojego
.vimrc
lub_vimrc
na Github)Po prostu moje osobiste preferencje. Może nie tak wiele pomocy.
źródło
Zainspirowany @ PeterRincker za odpowiedź , mam przygotowane następujące użyć nagłówków w stylu ATX. Dodaj go na końcu swojego
.vimrc
źródło
Jeśli masz duże funkcje, takie jak ja, możesz użyć tego do złożenia swoich funkcji:
I dodaj tę modelkę do swojego vimrc:
źródło
Rozszerzenie idei @Peter Rincker i @ go2null. Jeśli nie chcesz ustawiać opcji składania w modeline Vima. Możesz użyć następującego autocmd, aby ustawić metodę składania i wyrażenie składania.
Wprowadziłem małe modyfikacje, aby oryginalna odpowiedź działała jak zwykłe polecenie vima (nie trzeba uciekać dwukropka, ale należy unikać podwójnego cudzysłowu).
Jeśli nie podoba ci się długi
foldexpr
ciąg, możemy zdefiniować funkcję:Następnie wymień autocmd o linię
foldexpr
doźródło