Jak określić ustawienia Vima dla wszystkich plików w bieżącym katalogu?
Idealnym rozwiązaniem byłoby, gdyby Vim szukał i czytał plik .vimrc w bieżącym katalogu przed wyszukaniem ~ / .vimrc i stosował tam ustawienia dla całego drzewa.
Widziałem wtyczkę , ale oznacza to, że zastosowane ustawienia nie są przezroczyste, ponieważ wymagają zainstalowania wtyczki. W przeciwieństwie do tego, modeline jest przezroczysty, ponieważ niezależnie od vimrc użytkownika lub konkretnego wywołania vim, ustawienia modeline zostaną zastosowane do tego pliku.
Próbowałem
- umieszczenie .vimrc w katalogu roboczym
:so vimrc
w modelinie.
Przypuszczam, że oba nie działają ze względów bezpieczeństwa. Nie potrzebuję pełnej mocy vimrc; wystarczy przywiązanie do ustawień akceptowanych przez modelinę. Moim celem jest ułatwienie vimmersom przyjęcia standardów kodowania w projekcie.
Odpowiedzi:
Jestem zwolennikiem sposobu korzystania z wtyczek . Z kilku powodów:
Przy okazji, rozwiązanie sth może zostać użyte do pozyskania pojedynczego pliku konfiguracyjnego. Jest to bardzo podobne do podejścia z wtyczkami, z wyjątkiem tego, że .vimrc musi być obciążony nie globalnymi opcjami i nie obsługuje łatwo wielu / współdzielonych plików konfiguracyjnych.
źródło
Możesz wstawić coś takiego
$VIM/vimrc
źródło
Zdecydowanie radzę nie używać
set exrc
Nawet z
set secure
* nix, vim nadal będzie uruchamiał autokomendy, powłokę i inne, jeśli jesteś właścicielem pliku. Więc jeśli zdarzyło ci się edytować plik w tym archiwum, wysłałem ci.vimrc
zawierający:prawdopodobnie będziesz mniej rozbawiony niż ja.
źródło
To pytanie jest stare, ale wydaje się całkiem naturalne i trwałe.
Moje rozwiązanie jest dość proste. Umieszczam
.vimrc
plik w katalogu głównym moich projektów. Pierwsza linia.vimrc
pliku zwykle zawiera źródła~/.vimrc
, a następnie dodaje określoną konfigurację, którą chcę. Pseudonimtvim='vim -u .vimrc'
i używamtvim
w moich osobistych katalogach projektów. „tvim” oznacza „zaufany vim”, co oznacza, że jeśli wykonam go w katalogu zawierającym.vimrc
plik i coś pójdzie nie tak, winić można tylko siebie, ponieważ wyraźnie powiedziałem, że mu ufam. Przechowuję również grupę tych plików, aby czasami móc po prostu połączyć programowo ten, który chcę, do określonego rodzaju projektu.źródło
source $HOME/.vimrc
z mojego lokalnego.vimrc
, Vim narzeka, że nie może znaleźć moich wtyczek zainstalowanych w całym systemie (w tym przypadku patogen;execute pathogen#infect()
polecenie na górze$HOME/.vimrc
nie działaUnknown function ...
). Jak mogę to naprawić?Umieszczanie .vimrc w katalogu roboczym jest faktycznie obsługiwane, tylko domyślnie wyłączone. Zobacz
:h 'exrc'
i:h startup
po szczegóły ustawienie'exrc'
umożliwi odczyt.vimrc
z bieżącego katalogu.Zaleca się również
:set secure
podczas korzystania z tego. To blokuje:autocmd
, powleka i zapisuje polecenia.vimrc
w bieżącym katalogu.Inną rzeczą, na którą warto zwrócić uwagę, jest skonfigurowanie sesji (
:h session
) ze standardowym widokiem i ustawieniami projektu.Wszystko to powiedziawszy, prawdopodobnie wybrałbym opcję wtyczki opisaną przez Luca Hermitte'a.
źródło
Aby zminimalizować zagrożenia bezpieczeństwa z DOWOLNYMI funkcjami „automatycznego uruchamiania” CZEGOKOLWIEK w dzisiejszych czasach, czy mogę doradzić Ci wykorzystanie istniejących funkcji vima zamiast wtyczek (bagaż przenośności)?
Na przykład.
Plik vimrc mojego folderu lokalnego nosi nazwę „_gvimrc” (celowo). Zmniejsza to nadzieję, że ludzie tacy jak Fen nie będą się bawić naszym kosztem. :-)
W moim pliku $ VIM / .vimrc wstawiłem:
na końcu.
Używam "filereadable ()" zamiast "fileexists ()", ponieważ później ma pewne dziwactwa, gdy torturuje się otwieraniem wielu (10+) plików jednocześnie (nie wiem dlaczego).
Oczywiście możesz nadać własną unikalną nazwę pliku, aby jeszcze bardziej zaciemnić potencjalnego sprawcę problemów. Takich jak "_mygvimrc", "_gobbledygook", itd. Musisz tylko wybrać jedną znormalizowaną nazwę i odpowiednio ją umieścić w swoim $ VIM / .vimrc. Poleganie na wewnętrznych rozwiązaniach vi / vim wyklucza problemy z przenośnością. ALE, NIE NAZYWAJ go .vimrc (lub _vimrc), aby zapobiec rekursywnemu źródłu w przypadku późniejszej edycji pliku $ VIM / .vimrc w vimie.
Używam tego od Windoze 98SE, poprzez Windork XP Pro, a teraz Windorkier 7 (już ponad 5 lat). Zaznaczę listę plików .txt w Eksploratorze, a następnie użyję „Edytuj z wieloma Vimami”, co spowoduje jednoczesne otwarcie wielu okien Vima. W swojej pracy robię to kilka razy dziennie, codziennie. Wszystkie pliki zostały potraktowane z tym, co ustawiłem w moim lokalnym _gvimrc.
źródło
Zakładając, że ludzie nie dodają plików co kilka dni, prawdopodobnie możesz dodać modelinę na początku każdego pliku. W rzeczywistości, jeśli twój system kontroli wersji na to pozwala, prawdopodobnie możesz wymusić regułę, która mówi, że każdy plik musi mieć modeline, kiedy jest wpisywany.
źródło
Zgadzam się z podejściem do wtyczek ze względów bezpieczeństwa.
Istnieje bardzo dobra wtyczka, o której jeszcze nie wspomniano. Pozwala na użycie
.lvimrc
w katalogach projektu.Wypróbuj „localvimrc”:
http://www.vim.org/scripts/script.php?script_id=441
https://github.com/embear/vim-localvimrc
źródło
Użyj „editorconfig”
Jeśli rodzaje standardów kodowania, które chcesz wymusić, są związane ze stylem wcięcia, rozmiarem tabulatora, formatem pliku i zestawem znaków, możesz zajrzeć do „editorconfig” , który jest standardem między edytorami, aby określić tego rodzaju ustawienia w konkretny projekt i wszyscy redaktorzy powinni przestrzegać tej konfiguracji.
Specyfikacja „editorconfig” umożliwia projektom żądanie różnych ustawień w zależności od rozszerzeń plików lub nazw w projekcie. (Możesz więc mieć pliki Makefile używające TAB, skrypty Pythona używające 4 spacji, a skrypty powłoki używające 2 spacji do wcięć).
Potrzebujesz wtyczki do używania "editorconfig" w Vimie. Oficjalna strona udostępnia jeden, ale osobiście polecam sgur / vim-editorconfig , który jest napisany w czystym Vimscript, więc nie musisz się zbytnio martwić o zewnętrzne zależności.
Ponieważ „editorconfig” ma na celu kompatybilność z wieloma edytorami, jest dość ograniczony w tym, co robi, więc jeśli chcesz mieć spójne białe znaki, format pliku (DOS vs. Unix) i kodowanie (Unicode utf-8, itp.), Wtedy „editorconfig " jest dla Ciebie.
źródło
Wypróbuj vim-localrc
https://github.com/thinca/vim-localrc/blob/master/doc/localrc.txt
źródło
Spojrzałem na istniejące wtyczki i nie podobały mi się żadne z nich, więc napisałem prostą funkcję, która działa na vim-fugitive . Zaletą tego jest to, że wie, że korzeniem projektu jest zawsze katalog główny repozytorium, a dodatkowo mogę haszować plik, aby zachować tabelę zaufania. Po prostu umieść następujące informacje w swoim
.vimrc
pliku.Jeśli
!
opcja jest ustawiona wviminfo
ustawieniu,SAFE_VIMRC
słownik zostanie zachowany między uruchomieniami (zwróć uwagę,^
aby dołączyć opcję przed nią, aby nie zepsułan
opcji).źródło