Właśnie zainstalowałem Ctagi (aby pomóc w rozwoju C ++) z moim Vimem (a raczej gVimem) i chciałbym znaleźć twoje ulubione polecenia, makra, skróty, wskazówki, które się z tym zgadzają ...
Podziel się swoim najlepszym arsenałem. Jakie inne dodatki Vima poleciłbyś dla C ++ w rozwoju Vima?
EDYCJA Jakiego innego dodatku używałbyś w połączeniu z Ctags?
EDIT2 Jakiej wersji gVim używasz z tagami? Czy to robi różnicę?
EDIT3 Jak zwiększyć swoje doświadczenie programistyczne zarówno dla dużych, jak i małych projektów?
vim
ctags
vim-macros
kenorb
źródło
źródło
closed as not constructive
prawie dwa lata temu jest to dla mnie takie konstruktywneOdpowiedzi:
Ctrl+ ]- przejdź do definicji
Ctrl+ T- przeskocz z definicji.
Ctrl+ W Ctrl+ ]- Otwórz definicję w układzie poziomym
Dodaj te linie w vimrc
map <C-\> :tab split<CR>:exec("tag ".expand("<cword>"))<CR>
map <A-]> :vsp <CR>:exec("tag ".expand("<cword>"))<CR>
Ctrl+ \- Otwórz definicję w nowej karcie
Alt+ ]- Otwórz definicję w podziale pionowym
Po wygenerowaniu tagów. Możesz użyć następujących klawiszy, aby oznaczyć i wyłączyć funkcje:
Ctrl+
Left MouseClick
- Przejdź do definicjiCtrl+
Right MouseClick
- Przejdź z definicjiźródło
Ctrl-w C-]
możesz zrobićC-w T
(inaczej Shift-t), aby zmienić podział na nową kartę.g C-]
jest bardzo przydatne. Otwiera szybkie okno dialogowe do wyboru jednej z wielu definicji.g]
jest również przydatne. Możesz ustawić kursor nad nazwą znacznika i nacisnąć,g]
aby uzyskać listę pasujących znaczników.Jedna linia, która zawsze idzie w moim .vimrc:
Spowoduje to wyszukanie w bieżącym katalogu „znaczników” i przesunie drzewo w kierunku katalogu głównego aż do znalezienia jednego z nich. IOW, możesz być w dowolnym miejscu w drzewie źródłowym zamiast tylko jego katalogu głównego.
źródło
cscope
?Inną przydatną wtyczką do programowania w języku C jest cscope Podobnie jak Ctags pozwala przeskakiwać do definicji, Cscope przeskakuje do wywołania funkcji .
Jeśli masz cscope w katalogu ~ / bin /, dodaj do .vimrc i użyj g ^], aby przejść do funkcji wywołującej (patrz: help cscope).
Prawie zapomniałem ... Podobnie jak ctags - musisz wygenerować (i okresowo aktualizować) bazę danych. Używam następującego skryptu
Gdzie „select_files” to kolejny skrypt, który wyodrębnia listę plików C i plików nagłówkowych z Makefile. W ten sposób indeksuję tylko pliki faktycznie używane przez projekt.
źródło
Możesz dodawać katalogi do wyszukiwania ctags. Na przykład mam indeks ctags zbudowany dla Qt4 i mam go w moim .vimrc:
źródło
Wszystkie powyższe i ...
code_complete: parametr funkcji zakończony, fragmenty kodu i wiele innych.
taglist.vim: przeglądarka kodów źródłowych (obsługuje C / C ++, java, perl, python, tcl, sql, php itp.)
źródło
Używam ALT-left i ALT-right, aby pop / push z / do stosu znaczników.
Jeśli używasz
hjkl
ruchu, możesz odwzorować<M-h>
i<M-l>
zamiast tego.źródło
Kilka definicji o tej samej nazwie
<C-w>g<C-]>
otwórz definicję w podziale, ale również zrób to,:tjump
co albo przechodzi do definicji, albo, jeśli istnieje kilka definicji, przedstawia listę definicji do wyboru.źródło
:ptag
polecenie, które otwiera definicję w oknie podglądu.:h CursorHold-example
której wyświetla znacznik dla elementu pod kursorem w oknie podglądu po ustawionym czasie.:help
czasem jest niesamowity ... patrz:help CTRL-W_g}
i:ptjump
Polecenie, którego najczęściej używam, to C-], które przeskakuje do definicji funkcji pod kursorem. Możesz go używać częściej, aby śledzić więcej połączeń. Po tym, Co przeniesie cię z powrotem o jeden poziom, Ci znów idzie głębiej.
źródło
Uważam, że wtyczka taglist jest niezbędna. Zawiera listę wszystkich znaczników, o których wie (pliki, które otworzyłeś) w osobnym oknie i bardzo ułatwia nawigację po większych plikach.
Używam go głównie do programowania w języku Python, ale może być lepszy tylko w C / C ++.
źródło
Zamknąłem manipulację tagami w eksperymentalnej wtyczce mojej .
Jeśli chodzi o rozwój C ++ w vimie, już tam odpowiedziałem : używam własnego pakietu i kilku innych wtyczek.
źródło
Od dwóch lat dostosowuję wtyczki vim, aby obsługiwać wystarczająco duży projekt c ++. Możesz na nie spojrzeć.
Używają ctags i cscsope.
http://www.vim.org/scripts/script.php?script_id=1638
http://www.vim.org/scripts/script.php?script_id=2507
źródło
W moim pliku .gvimrc umieszczam następujące polecenie, które wyszukuje drzewo z dowolnego miejsca w poszukiwaniu pliku znaczników po uruchomieniu gvim:
Następnie okresowo generuję ponownie plik znaczników u góry drzewa źródłowego za pomocą skryptu, który wygląda następująco:
źródło
Używam vima w macos, a oryginalne ctagi nie działają dobrze, więc pobieram najnowsze i konfiguruję make make install. Instaluję ctgas w / usr / local / bin / ctags (aby zachować oryginalny)
źródło
Dostosowałem funkcję wyszukiwania SetTags () powyżej (która powinna zostać zastąpiona odpowiednikiem
set tags+=./tags;/
), aby działała dla cscope. Wydaje się działać!źródło
Kolejna iteracja powyższej funkcji SetCscope (). To ustawia ścieżkę wstępną cscope, aby uzyskać dopasowania bez znajdowania się w katalogu, w którym „cscope.out” to:
źródło