Pracuję nad scenariuszem, który stał się dość zawiły. Podejrzewam, że istnieje kilka sekcji, które mają prawie identyczny kod. Czy mogę (i jak mogę) otworzyć plik w vimie, używając dwóch (lub więcej) okien w buforze i zmienić zawartość okien w tym samym pliku? vimdiff wydaje się działać tylko na dwóch plikach. Jeśli zrobię kopię pliku i spróbuję vimdiff dwóch wersji, początek źródła pozostaje zamknięty na początku pliku. Chociaż mogę odłączyć-zablokować okna i przenieść okna do części pliku, które chcę porównać, nie pokazują się różnice. Wszelkie wskazówki lub porady? Mogłem wycinać i wklejać sekcje, które chcę porównać z różnymi plikami, a następnie zastosować vimdiff, ale wtedy ryzykuję zagubienie się w tym, co pochodzi z sekcji, kiedy próbuję załatać osobne pliki razem i jestem przekonany, że musi być prostsze łatwiejszy sposób.Rozproszone okna w vim
Odpowiedz
Co ja zwykle nie jest diff do kopii
:%w %.alt
:vert diffsplit %.alt
A potem happiliy zmienić 'Alt' wersję tak, że bity pseudo-dopasowując się wyrównane.
Zauważ, że (prawdopodobnie) git zawiera wystrzałowych seryjnej/diff krowy uprawnień, które powinny być w stanie wykryć sub-file przeniósł blok zmienia.
Chociaż tego nie zrobiłem (jeszcze) w praktyce, mam przeczucie, że bardzo ładna wtyczka git fugitive
dla vima może być w stanie wykorzystać niektóre z tych koni mechanicznych, aby ułatwić to. Uwaga: w pełni spodziewałem się tego wymagać scriptinh przed użytkować, ale wciąż myślał, że byłoby miło, aby udostępnić tę ideę
Jako alternatywę (być może można udostępnić skrypt, jeśli się do niego pierwszy!) rozwiązanie, które używam od czasu do czasu i które działa bardzo ładnie moim zdaniem jest linediff.vim.
Pozwala na użycie trybu wizualnego w celu wybrania dwóch ciał tekstu z arbitralnych buforów (lub tego samego) i uruchomienia vimdiff na nich. Jego piękno polega na tym, że podczas edycji i zapisywania tymczasowych buforów diff aktualizujesz oryginalne bufory zmianami, bez zapisywania.
Jednym z moich przypadków użycia jest rozwiązywanie problemów scalania związanych z refaktoryzacją skryptów i zmianą kolejności, w których funkcja została przeniesiona i być może zmodyfikowana. Aby upewnić się, że nie utracisz żadnej z modyfikacji przychodzących z przodka, możesz różnicować dwie wersje tej funkcji, wizualnie wybierając je i uruchamiając polecenie linediff.
- 1. ustalanie rozmiaru okna w vim
- 2. Programowanie rozproszone w C++
- 3. Rozproszone buforowanie
- 4. Rozproszone kompilacje w XCode 4.5?
- 5. Rozproszone hierarchiczne grupowanie
- 6. Android Współrzędne GPS Rozproszone
- 7. konsolidacja plików vim w folderze ~/.vim
- 8. Vim w OSX: Jak wkleić tekst z otwartego okna do otwartego pliku w vim?
- 9. Transakcje SOA i transakcje rozproszone
- 10. Rozproszone porównanie zrzutów z Selenium
- 11. Zapobieganie wyświetlaniu okna podglądu Vim z przesunięciem głównym
- 12. czy zdarzenie vim jest wyzwalane przez zmianę rozmiaru okna terminala?
- 13. Jak efektywnie generować numery rozproszone Zipf?
- 14. Rozproszone kodowanie wideo - Gearman kontra Beanstalkd
- 15. Transakcje rozproszone między MySQL i MSSQL
- 16. Rozproszone urywki Lift (Scala) (wiele elementów dziennie)
- 17. Rozproszone planowanie zadań, zarządzanie nimi i raportowanie
- 18. HDFS rozproszone odczyty bez mapy/redukcja
- 19. vim podświetlanie składni vim
- 20. Rozproszone testowanie jednostek i pokrycia kodu w Pythonie
- 21. Czy istnieją łatwe w użyciu rozproszone relacyjne bazy danych?
- 22. Histogramy 2D i 3D rozproszone z tablic w Pythonie
- 23. Jak utrzymać NERDTree w zmianie rozmiaru okna projektu w (g) vim?
- 24. vim
- 25. Wykrywanie wymiarów okna podzielonego
- 26. VIM: Szukaj w wielu dzielonych oknami
- 27. Określanie szerokości dla: vsplit w vim
- 28. Vim 7.2 zawiesza się przy starcie, "killall vim" naprawia to
- 29. Jak utworzyć mapę klawiszy do otwierania i zamykania okna quickfix w Vim
- 30. Wiele autokomendy w vim
Okej, użycie% w odniesieniu do nazwy pliku bieżącego bufora jest miłe, nie byłem tego świadomy! Ale nadal nie jestem pewien, jak zmienić aranżację na prawą, aby pasujące bity były wyrównane. : se noscrollbind wydaje się pomagać, ale jak mogę uzyskać vim, aby podkreślić różnice między tymi dwoma oknami? – ChrisDR
Mam na myśli dosłownie przegrupowanie (używam C/C#, więc 'd2] M' usuwa dwie metody, nawiguje do punktu wstawienia,' P' i voila); Również "prawidłowa wersja alt" była literówką dla "alternatywnej wersji". Wiem, że to wciąż ręczna praca, ale (oprócz idei wykorzystującej wykrywanie kopii/ruchu Gita) nie znam lepszego sposobu. Sztuczka polegająca na użyciu tymczasowej kopii jest całkiem zgrabna. – sehe