Pracuję w kilku grupach, z których każda ma własne standardy tabulacji / wcięć / odstępów w C.
Czy istnieje sposób na stworzenie oddzielnych konfigurowalnych konfiguracji VIM dla każdego z nich, więc kiedy edytuję plik:
- Robię coś takiego jak
set group=1
wybranie konfiguracji - lokalny plik .vimrc, który znajduje się w katalogu roboczym, jest używany do automatycznego ustawiania konfiguracji
Odpowiedzi:
W podsumowaniu
Jest na to kilka sposobów, z których większość została zaproponowana, ale pomyślałem, że podsumuję je dwoma dodatkowymi:
~/project1
i masz~/project1/.vim.custom
i robiszcd ~ ; vim project1/file.c
, niestandardowe ustawienia nie zostaną znalezione.Wyszukiwanie nagłówka
W wielu organizacjach na górze każdego pliku źródłowego znajduje się standardowy nagłówek (z informacją o prawach autorskich, nazwą projektu itp.). Jeśli tak jest, możesz zmusić Vima do automatycznego skanowania pierwszych (np.) 10 linii pliku w poszukiwaniu słowa kluczowego. Jeśli go znajdzie, może zmienić Twoje ustawienia. Zmodyfikowałem to, aby było prostsze niż formularz, którego używam (który robi wiele innych rzeczy), ale stwórz
~/.vim/after/filetype.vim
(jeśli jeszcze go nie masz) i dodaj coś takiego:Za każdym razem, gdy otwierany jest plik dowolnego typu i ustawiany jest typ pliku (
au FileType *
linia),ConfigureFiletypes
wywoływana jest funkcja. Sprawdza, czy typ pliku znajduje się na liście typów plików związanych z bieżącą grupą (NAZWA GRUPY), w tym przypadku „c”, „cpp”, „vhdl” lub „c.doxygen”. Jeśli tak, wywołuje CheckForGROUPNAMECode (), który odczytuje pierwsze 10 wierszy pliku i jeśli zawierają GROUPNAME, dokonuje pewnych dostosowań. Oprócz ustawiania zakładek rozwijanych lub czegokolwiek, zmienia to również pasek stanu, aby wyraźnie pokazywać nazwę grupy, dzięki czemu od razu wiesz, że działa.Sprawdzanie konfiguracji podczas otwierania
Podobnie jak w przypadku sugestii JS Bangsa, posiadanie niestandardowego pliku konfiguracyjnego może być przydatne. Jednak zamiast ładować go do vimrc, rozważ coś takiego, które sprawdzi, kiedy plik .c zostanie otwarty dla pliku .vim.custom w tym samym katalogu co plik .c.
źródło
Mam to w
$HOME/.vimrc
:To pozwala mi umieścić
.vim.custom
plik w każdym katalogu, aby załadować polecenia i opcje specyficzne dla tego katalogu. Jeśli pracujesz nad wieloma projektami, które mają głębokie struktury katalogów, możesz potrzebować czegoś bardziej wyrafinowanego (np. Przejść po drzewie katalogów, aż.vim.custom
zostanie znaleziony), ale ta sama podstawowa idea zadziała.AKTUALIZACJA:
Robię teraz coś takiego, aby odczytać
.vim
plik z tego samego katalogu, co plik, który edytuję, niezależnie od tego, jaki jest bieżący katalog.źródło
'exrc'
opcja pozwala już zrobić coś bardzo podobnego do tego. Załaduje.vimrc
/.exrc
/.gvimrc
w bieżącym katalogu roboczym.exrc
powinien być właściwą odpowiedzią. Wszystko inne wydaje się być zepsute i skomplikowane.exrc
jest przyjemne, ale doceniam otrzymanie poprawnego pliku, nawet jeśli nie jestem w tym samym katalogu roboczym, co plik, który edytuję.Można również umieścić autokomend w twoich
.vimrc
który zestaw opcji szczególnych na podstawie na ścieżce.źródło
Wtyczka działająca właściwie: http://www.vim.org/scripts/script.php?script_id=441
„Ta wtyczka szuka lokalnych plików vimrc w drzewie systemu plików aktualnie otwartego pliku. Domyślnie wyszukuje wszystkie pliki „.lvimrc” od katalogu pliku do katalogu głównego i ładuje je w odwrotnej kolejności. Nazwę pliku i ilość wczytanych plików można dostosować za pomocą zmiennych globalnych ”.
źródło
Zakładając, że inni programiści nie będą na to narzekać, zawsze możesz dodać ustawienia Vima do każdego pliku w komentarzach.
źródło
Właśnie w tym celu stworzyłem narzędzie typu open source. Zapomnij o nagłówkach, skanowaniu, konfiguracjach i lokalnych plikach vimrc.
Spróbuj pływać.
Pływać
swim
to szybkie narzędzie do przełączania plików vimrc i tworzenia wygodnych aliasów. Oto krótka lista zastosowań. Zobacz repozytorium Github, aby zapoznać się z gifem instruktażowym i instrukcjami pobierania:Stosowanie
Czytaj więcej
https://github.com/dawsonbotsford/swim
źródło
Po wypróbowaniu wtyczki localvimrc zasugerowanej na poprzednim plakacie, bardzo lubię mieć nieograniczoną kontrolę nad projektami nad ustawieniami vima.
Domyślnie prosi o potwierdzenie przed załadowaniem pliku .lvimrc, ale jest ustawienie, które automatycznie ładuje pliki .lvimrc. Niektórzy mogą postrzegać to jako lukę w zabezpieczeniach, ale działa zgodnie z reklamą.
Zdecydowałem się na .gitignore pliki .lvimrc. Alternatywnie możesz je zarejestrować jako formę wspólnych ustawień (rozszerzenie zakładek / spacji, tabulatory, inne ustawienia specyficzne dla projektu).
źródło
.lvimrc
plik do.gitignore
? Chodzi o to, że każdy, kto używa vima i ma zainstalowaną wtyczkę, otrzymuje te same ustawienia.Jak wspomniano na saniach użycie tej wtyczki jest najlepszą opcją, jaką widziałem i używam. jerseyboy skomentował, że zalecane narzędzie prosi o potwierdzenie przed załadowaniem (tj. po otwarciu każdego pliku). Aby tego uniknąć, ustaw jako główną
.vimrc
listę.lvimrc
plików lokalnych :let g:localvimrc_whitelist='/development/kernel/.lvimrc'
źródło
Oto wariacja na temat jamessana
Często będę uruchamiał vi bez konkretnego pliku, do którego skaczę, więc umożliwia to warunkowe ładowanie konfiguracji w oparciu o bieżący katalog roboczy. Wadą jest to, że konfiguracja nie jest stosowana na podstawie pliku, ale poza katalogiem roboczym.
źródło
~/.vimrc
, przestawiłem/src/mobile
na katalog moich projektów Symfony (w moim przypadku był/www/symfony
) i zmodyfikowałem,.vim.mobile
aby.vim.symfony
następnie umieścić nową konfigurację .vimrc w~/.vim.symfony
plikuPracuję jednocześnie z różnymi rodzajami open source. Tworzenie oddzielnych
.vimrc
plików i ponowna konfiguracja standardów formatowania nie jest praktyczne . Ponad dziesięć lat temu w końcu zmęczyło mnie zajmowanie się konfiguracją edytora i napisałem program,autotab
który go obsłużył.Gdy
autotab
jest skonfigurowany z sugerowanym przez Vima, za każdym razem, gdy ładujesz plik do Vima,autotab
jest na nim wywoływany, a dane wyjściowe ustawień Vimaautotab
są przekazywane do:set
polecenia.autotab
odczytuje kilka tysięcy wierszy z pliku, analizuje je i określa ustawienia parametrówexpandtab
,tabstop
ishiftwidth
.Sprawdza, czy plik używa twardych tabulatorów, czy tylko spacji do wcięcia, i oblicza rozmiar wcięcia. Jeśli plik jest wcięty za pomocą tabulatorów, oblicza właściwy rozmiar tabulatora na podstawie renderowania próbki pliku przy użyciu różnych rozmiarów tabulatorów i oceniając go zgodnie z heurystykami, takimi jak wyrównanie linii do linii elementów wewnętrznych.
Działa na tyle dobrze, że przestałem modyfikować algorytm lata temu. Jeśli coś się pomyli, dzieje się tak prawie zawsze, ponieważ plik ma problemy z formatowaniem, takie jak użycie wielu konwencji w tym samym czasie.
Jest także „agnostyczny” w stosunku do typu pliku i dobrze współpracuje z wieloma różnymi językami. Używam go nie tylko w C, ale także w skryptach powłoki, Lisp, Makefiles, HTML i co masz.
Zauważ, że nie obsługuje innych parametrów formatowania, które mogą być specyficzne dla projektu, na przykład w plikach C, niezależnie od tego, czy
case
etykiety wswitch
instrukcji są wcięte, czy nie, lub czy listy argumentów funkcji opakowanej są po prostu wcięte lub wyrównane do otwierający nawias listy argumentów. Vim ma ustawienia na tego typu rzeczy, więc program można w wiarygodny sposób rozszerzyć, aby analizował styl i wyświetlał te parametry.źródło
Szukając głównie tego samego problemu, znalazłem również wtyczkę Sauce: http://www.vim.org/scripts/script.php?script_id=3992
Twierdzi:
Uważam za szczególnie interesujące, że przechowuje całą konfigurację w swoim katalogu danych, zamiast oczekiwać, że użytkownik posypie pliki dotfiles w całym systemie plików. Często jest to raczej kwestia osobistego gustu.
Jednak jeszcze go nie przetestowałem.
źródło
Możesz użyć stow do przełączania konfiguracji (dowolne pliki dotfiles, nie tylko
.vimrc
)Zainstaluj
stow
:Utwórz wiele katalogów dla każdej konfiguracji:
Umieść
.vimrc
w nich różne :Teraz możesz utworzyć instancję konfiguracji vim-golang za pomocą tego polecenia (powinno być uruchomione w katalogu dotfiles):
Teraz jest połączony:
Jeśli chcesz zmienić konfigurację, po prostu wykonaj
stow
to ponownie :Więcej przeczytania tutaj: Zarządzanie plikami dotfiles za pomocą GNU stow
Zalety : całkiem proste, bez zależności od wtyczek vim, może być używane do zarządzania wszystkimi plikami dot, nie tylko
.vimrc
.Wady : konfiguracje są niezależne od siebie, musisz zarządzać / aktualizować każdą z nich osobno (jeśli nie przełączasz / aktualizujesz konfiguracji zbyt często - to nie będzie problem).
źródło