Płynne przewijanie dla vima w terminalu Mac / iTerm?

13

Czy możliwe jest płynne przewijanie (za pomocą kółka myszy lub touchpada Macbook) w terminalu w systemie Mac OSX (Lion)? Ponadto, czy mogę to zrobić w vimie?

Uważam, że płynne przewijanie pomaga w odczytywaniu kodu, nie podoba mi się to, gdy można przewijać tylko dyskretne linie w przeciwieństwie do ciągłego przewijania piksel po pikselu.

Dzięki

Wir
źródło
Możesz mieć lepsze wrażenia, jeśli używasz aplikacji Vim zamiast korzystać z niej w sesji terminalowej ( code.google.com/p/macvim , macvim.org/OSX ). Czy istnieje powód, aby używać go w terminalu?
Chris Page
3
MacVim również nie zapewnia płynnego przewijania.
romainl
Cześć @romainl. Zastanawiam się, jak zachowuje się vim, jeśli rozmiar bufora (rozmiar systemu Windows) jest naprawdę duży (tj. Rozmiar całego pliku). GOtta przetestuj to. Następnie moglibyśmy umieścić bufor vim w płynnie przewijanym widżecie GTK (lub QT) i płynnie przewijać cały bufor vim wewnątrz widgetu. Miałoby to dodatkową zaletę, że kursor można łatwo ukryć, tak jak w przypadku nowoczesnych edytorów. Gdy użytkownik przesunie kursor, widżet będzie wiedział (używając tego samego interfejsu API, którego używa gVim) i odpowiednio wyśrodkuje pozycję przewijania.
trusktr
(cd.) Podział okna można nawet osiągnąć, kopiując dane wyjściowe pełnej długości pliku vima do nowego widżetu i płynnie przewijając widżet do odpowiedniej pozycji. To wszystko wymagałoby prostej arytmetyki i dobrej znajomości ładnego zestawu narzędzi do widgetów. Podział okna (poziomy i pionowy) oraz przewijanie i zmiana rozmiaru widżetów to. Reszta to bułka z masłem (menu, tabulatory, rzeczy, które już robią gVim i qVim).
trusktr
(kont.) Może to również znacznie poprawić wydajność vima. Pomyśl o tym: za każdym razem, gdy przewijasz okno konsoli vim lub g / qvim (obecnie), vim musi przepisać prawie każdą postać na ekranie. Jeśli bufor vim był pełnej długości, a przewijanie było obsługiwane niezależnie przez gładko przewijany widżet, vim musiałby aktualizować znaki jednej linii na raz, ilekroć przesuwasz kursor do nowej linii (lub jeszcze lepiej, do pojedynczej linii postać, gdy przesuwasz się do przodu lub do tyłu o jedną postać). Byłoby to OGROMNA przewaga wydajności dla vima!
trusktr

Odpowiedzi:

5

Korzystam z iterm2 i znajduję bardzo fajną funkcjonalność za pomocą vima 7.3 w terminalu z następującymi opcjami:

set mouse=niv #or set mouse=a
set clipboard=unnamed

EDYCJA: ustaw mysz = a także wydaje się fajny w użyciu, jak wskazano w drugiej sugestii.

To automatycznie przełącza cię w tryb wizualny z normalnego podczas wybierania tekstu lub w tryb, który mówi - (wstaw) WIZUALNY - z trybu wstawiania. Ma to również tę zaletę, że w ogóle nie ustawia tych trybów, ponieważ kiedy masz numery linii lub względne numery linii, zacznie kopiować te liczby, których prawdopodobnie nie chcesz kopiować. Gdy wpada w ten sposób w tryb wizualny obsługiwany myszą, unika kopiowania tych numerów linii, ponieważ działa raczej w celu kontroli wyboru trybu wizualnego niż wyboru natywnego terminala (który jest tłumiony). Przewijanie działa dobrze, pamiętając, że wybiera wszystko od miejsca, w którym zacząłeś zaznaczanie, do dolnej części ekranu. Zapomnij o ctrl + c / ctrl + v w vimie - używasz poleceń vim yankypasta (y, yy, p,

http://vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing#Comments

Ponownie, iterm2 - wbudowany terminal osxa to śmieci. Naprawdę nie widzę twojej wołowiny z przewijaniem linia po linii, ponieważ jestem zadowolony z tego, jak to po prostu działa jak vim, ale może to z podobnych powodów, dla których nie mogę oglądać, jak inni ludzie grają w gry wideo z choroba lokomocyjna lub dlaczego światło fluorescencyjne i monitor CRT migają w głowach ludzi aż do migreny. Spróbuj wyregulować częstotliwość odświeżania w swoim mózgu, możesz poczuć pokrętło, jeśli wciśniesz wystarczająco mocno w skroń i obrócisz.

Dmitri DB
źródło
0

Tak naprawdę nie zgadzam się z tobą, ale tutaj jest wtyczka Terminal.app, która robi to, co chcesz i więcej.

Może być konieczne dodanie

set mouse=a

do twojego .vimrc. Zobacz :help mousewięcej informacji.

romainl
źródło
Niestety wtyczka wymaga SIMBL, który nie jest dostępny dla Lion
Eddy
Nie wiedziałem, bo nie mam Lwa. MouseTerm to jedyny sposób na dodanie przewijania myszy do Terminal.app, o którym słyszałem. Wygląda na to, że niektóre osoby zgłosiły ograniczony sukces w korzystaniu z SIMBL na Lionie. Widzę też, że iTerm2 zapewnia „raportowanie myszy” i przewijanie, ale prawdopodobnie będzie przewijać wiersz po wierszu. Na marginesie Ledwo przewijania (w górę / w dół / j / k) już: Uważam /, ?, fF, tTi <C-f>/ <C-b>dużo bardziej użyteczne.
romainl
Zauważ, że powodują one przewijanie kółkiem myszy, ale nie rozwiązują podstawowego problemu: „Nie podoba mi się to, gdy można przewijać tylko w dyskretnych liniach, w przeciwieństwie do ciągłego przewijania piksel po pikselu”.
Chris Page
Ten typ przewijania (linia po linii) jest na stałe zakodowany w Vimie. Na szczęście nie można tego obejść. Jeśli ktoś naprawdę tego potrzebuje, powinien nalegać na to, używając dokładnie sformułowanych argumentów na vim-dev lub dostarczyć łatkę.
romainl
Powód, dla którego chcę płynnego przewijania, polega na tym, że tracę swoje miejsce podczas dyskretnego przewijania linii. Trudno to wyjaśnić. Może nie ma to wpływu na wszystkich, ale robi to dla mnie
Eddy,