vim wydajnie edytuje / przełącza między wieloma plikami w dużych strukturach katalogów

11

Nie jestem bynajmniej użytkownikiem zaawansowanym vim, dopiero zaczynam rozumieć zaawansowane ruchy i polecenia za pomocą vim. Ale jest jedna wada, której nie mogę się obejść.

Dorastałem z programami graficznymi do pisania kodu, ale niedawno zacząłem używać vim over ssh & screen do pracy przy dość dużych projektach z wieloma folderami.

Jestem ciekaw, co robią mistrzowie vima, aby szybko i łatwo pracować z wieloma plikami. Jako przykład rozważ aplikację Railsową. Powiedz, że chcesz edytować kontroler, aby uruchomić.

vim app/controllers/controller.rb

Ale potem szybko chcesz przejść do edycji widoku lub migracji bazy danych, moim pierwszym instynktem jest :wqpowrót do bash, aby przejść do tego katalogu i ponownie uruchomić vima w zupełnie nowym buforze.

To oczywiście błędne.

Dowiedziałem się o kilku rzeczach, takich jak:

  • Clientserver (ale nie chcę używać X przez ssh i wydaje się, że to jedyny sposób)
  • :eaby otworzyć inny plik podczas przeglądania, ale nie mogę tego zrobić bardzo szybko. Tab Complete naprawdę mnie zaskakuje.
  • Otwieranie całego katalogu i przeszukiwanie buforów.
  • NERDTree jest obiecujący, ale naprawdę chcę trzymać się z daleka od jakiejkolwiek reprezentacji graficznej, aby nadal zmuszać mnie do opanowania nawigacji w wierszu poleceń

Przepraszam za bycie naiwnym, ale naprawdę chcę nauczyć się, jak to zrobić, nawet jeśli jest to bardzo subiektywne.

Jakie są twoje metody i co byś polecił?

lut
źródło
Ruby on Rails w szczególności Tim papieża wtyczki rails.vim ma kilka poleceń Nicea (z zakończeniem; rozszerzalne na nowe hierarchie) do otwierania plików dla modeli / views / controllers / migracje / testy / ... (zobacz rails-type-navigationw dokumentacji lub :help rails-type-navigationkiedy mieć to zainstalowane).
Chris Johnsen

Odpowiedzi:

7

Możliwe jest skonfigurowanie vima do edycji wielu plików bez konieczności wychodzenia. Używasz wielu buforów i przełączasz się między nimi. Ponieważ używasz wewnętrznego ekranu vima, możesz w swoim ~ / .vimrc umieścić następujące elementy, aby to włączyć.

   set hidden
   syntax enable
   source $VIMRUNTIME/menu.vim
   set wildmenu
   set cpo-=<
   set wcm=<C-Z>
   map <F4> :emenu <C-Z>
   nmap <Esc>[5D :bp<CR>
   nmap <Esc>Od  :bp<CR>
   nmap <Esc>OD  :bp<CR>
   nmap <Esc>[5C :bn<CR>
   nmap <Esc>Oc  :bn<CR>
   nmap <Esc>OC  :bn<CR>
   nmap <Esc>[3~ :bd<CR>
   nmap ZZ :bd<CR>

Te mapowania klawiszy odwzorowują klawisze Ctrl-Strzałka w lewo i Strzałka w prawo, aby przełączać bufory. Klawisz F4 wywołuje to samo menu, które wyświetlałby GUI. Naciśnięcie karty wyświetla teraz także małe menu do wybierania zakończenia po naciśnięciu karty prasy.

Keith
źródło
Bardzo dobra wskazówka, te trzy odpowiedzi naprawdę pomogły mi poczuć się bardziej komfortowo. Dobre zarządzanie buforami bez wtyczek to świetna umiejętność. Uwielbiam wildmenu!
luty
5

Hah! Byłem dokładnie taki jak ty, więc wiem dokładnie, skąd pochodzisz. Nawet teraz, gdy wiem, co robię do pewnego stopnia (nie jestem bogiem vimów, ale mam nadzieję, że się tam dostanę), od czasu do czasu zrobię: wq i wrócę do mojej powłoki.

Sprawdź to - może ci to pomóc. (Pomoże mi to również, ponieważ nigdy o tym nie wiedziałem. To jest niesamowite w witrynach Stackexchange - uczysz się, pomagając innym się uczyć!)

Oto kilka rzeczy, które robię.

  1. :ePoleceń. Od wewnątrz vima, podczas edycji pliku, możesz zrobić coś takiego, :e dir/subdir/otherfilea otworzy się on w nowym buforze, co oznacza, że ​​będziesz mieć otwarte dwa pliki jednocześnie.

  2. Ctrl-Shift-6(Nie znam rzeczywistych wartości ascii). Jeśli masz otwarte dwa bufory, możesz przełączać się między nimi błyskawicznie za pomocą tego przełącznika.

  3. bd- usuwanie bufora. Pozwala wyczyścić bufor.

  4. To jest naprawdę bardzo przydatne - :sh. Jeśli musisz wrócić do powłoki z jakiegokolwiek powodu (powiedzmy, aby spojrzeć na katalog i chmod plik), możesz wywołać polecenie powłoki vima, zrób to. Wyjście ze skorupy zabierze cię z powrotem do miejsca, w którym byłeś w vimie.

  5. W tej samej kategorii co powyżej - wpisanie :!i polecenie unix wykona to polecenie. Wypróbuj to z ls. (Myślę, że działa również z wbudowanymi powłokami, ale nie jestem pewien).

Tych używam cały czas. Jest też :nnastępny i :ppoprzedni plik, ponieważ możesz mieć więcej niż dwa bufory otwarte w vimie (zwykle jednak tego nie robię).

lunchmeat317
źródło
Wspaniale dziękuję za te wskazówki. Znalazłem to także: wincent.com/products/command-t . Zacząłem go używać. Jedynym minusem jest to, że potrzebujesz rubinu (niezbyt przyjaznego dla rzeczy ssh), ale dokładnie tego szukałem. Że w połączeniu z :sh, :ei właściwe zarządzanie buforami, a robi się sexy
FEBS
W większości powłok (tj. Powłok z kontrolą zadań) Ctrl+Znależy zawiesić proces ( fgod powłoki, aby wyświetlić go ponownie) - co jest alternatywą dla :sh.
maxschlepzig
Kolejna świetna wskazówka! Doskonały! Będę musiał skompilować je w poście na blogu lub coś takiego.
luty
2

Poleciłbym również korzystanie z podzielonych okien do przeglądania wielu plików jednocześnie. Dodaj umiejętności zarządzania buforami i oknami w VIM, a będziesz ninja VIM w mgnieniu oka.

Aby zapoznać się z rzeczywistą dokumentacją, odsyłam cię do dokumentacji systemu Windows VIM , ale postaram się dać ci przewagę tutaj.

Uruchom VIM z 2 (lub więcej) poziomo podzielonymi oknami, górne okno ma plik 1, następne okno w dół ma plik2 itp.

vim -o <file1> <file2> (file3 file4 ...)

Uruchom VIM z 2 (lub więcej) pionowo podzielonymi oknami, najbardziej lewe okno ma plik1, następne okno ma plik2 itp.

vim -O <file1> <file2> (file3 file4 ...)

Przesuń kursor do innego okna:

CTRL-W <vim direction key> (h=left, j=up, k=down, l=right)

Już edytujesz jeden plik, ale chcesz podzielić okno i edytować inny plik również:

:split <file2>
:vsplit <file2>

Dla podziału poziomego i pionowego odpowiednio.

Istnieją również polecenia do przenoszenia okien, zmiany ich wielkości itp.

5mi11er
źródło
1

Użyj polecenia vi: split, aby otworzyć drugie okno edycji. podział może wykonywać zarówno podział poziomy, jak i pionowy oraz więcej niż dwa jednocześnie. W tej samej sesji vi miałem otwartych aż 10 plików.

wesmat
źródło