Reibungsloses Scrollen für vim in Mac Terminal / iTerm?


13

Ist es möglich, innerhalb eines Terminals unter Mac OSX (Lion) reibungslos zu scrollen (mit dem Mausrad oder dem MacBook Touchpad)? Könnte ich das auch innerhalb von vim tun?

Ich finde, dass reibungsloses Scrollen das Lesen von Code unterstützt. Ich mag es nicht, wenn Sie nur in diskreten Zeilen scrollen können, im Gegensatz zum kontinuierlichen pixelweisen Scrollen.

Vielen Dank


Möglicherweise haben Sie eine bessere Erfahrung, wenn Sie eine Vim-Anwendung verwenden, anstatt sie in einer Terminalsitzung zu verwenden ( code.google.com/p/macvim , macvim.org/OSX ). Gibt es einen Grund, warum Sie es in einem Terminal verwenden müssen?
Chris Seite

3
MacVim bietet auch kein reibungsloses Scrollen.
Romainl

Hallo @romainl. Ich frage mich, wie sich vim verhält, wenn die Puffergröße (Windows-Größe) wirklich groß ist (dh die Größe der gesamten Datei). GOtta teste das aus. Dann könnten wir einen VIM-Puffer in ein GTK- (oder QT-) Widget mit reibungslosem Bildlauf einfügen und den gesamten VIM-Puffer innerhalb des Widgets reibungslos scrollen. Dies hätte den zusätzlichen Vorteil, dass der Cursor wie bei modernen Editoren leicht ausgeblendet werden könnte. Wenn der Benutzer den Cursor bewegt, weiß das Widget dies (unter Verwendung derselben API, die gVim verwendet) und zentriert die Bildlaufposition entsprechend neu.
Trusktr

(Fortsetzung) Die Fensteraufteilung kann sogar erreicht werden, indem die Ausgabe von vim in voller Dateilänge in ein neues Widget dupliziert und das Widget reibungslos an die entsprechende Position gescrollt wird. Dies alles würde eine einfache Arithmetik und gute Kenntnisse eines netten Widget-Toolkits erfordern. Das Aufteilen von Fenstern (horizontal und vertikal) sowie das Scrollen und Ändern der Größe der Widgets wäre das. Der Rest wäre ein Kinderspiel (Menüs, Registerkarten, Dinge, die gVim und qVim bereits tun).
Trusktr

(Fortsetzung) Dies hat das Potenzial, auch die Leistung von vim erheblich zu verbessern. Denken Sie darüber nach: Jedes Mal, wenn Sie durch das Konsolenfenster vim oder g / qvim (derzeit) scrollen, muss vim fast jedes Zeichen auf dem Bildschirm neu schreiben. Wenn der vim-Puffer die volle Länge hat und das Scrollen unabhängig von einem Widget mit reibungslosem Scrollen ausgeführt wird, muss vim immer nur die Zeichen einer Zeile aktualisieren, wenn Sie den Cursor auf eine neue Zeile (oder noch besser auf eine einzelne) bewegen Zeichen, wenn Sie ein Zeichen vorwärts oder rückwärts bewegen). Dies wäre ein RIESIGER Leistungsvorteil für vim!
Trusktr

Antworten:


5

Ich verwende iterm2 und finde mit vim 7.3 im Terminal sehr schöne Funktionen mit den folgenden Optionen:

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

BEARBEITEN: setze mouse = a scheint auch cool zu sein, wie im anderen Vorschlag angegeben.

Dadurch werden Sie beim Auswählen von Text automatisch entweder vom normalen in den visuellen Modus oder vom Einfügemodus in den Modus - (Einfügen) VISUAL - versetzt. Dies hat auch den praktischen Vorteil, dass diese Modi überhaupt nicht eingestellt werden, da bei Zeilennummern oder relativen Zeilennummern die Nummern kopiert werden, die Sie wahrscheinlich nicht kopieren möchten. Wenn Sie auf diese Weise in den mausfähigen visuellen Modus versetzt werden, wird das Kopieren dieser Zeilennummern vermieden, da die Auswahl des visuellen Modus und nicht die Auswahl des nativen Terminals (die unterdrückt wird) gesteuert wird. Das Scrollen funktioniert durchweg einwandfrei, wobei zu beachten ist, dass alles von der Stelle, an der Sie mit der Auswahl begonnen haben, bis zum unteren Bildschirmrand ausgewählt wird. Vergessen Sie Strg + C / Strg + V in vim - Sie verwenden die Befehle vim yankypasta (y, yy, p,

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

Auch hier ist das eingebaute Terminal von iterm2 - osx Müll. Ich sehe Ihr Rindfleisch nicht wirklich beim zeilenweisen Scrollen, da ich damit zufrieden bin, wie dies einfach so funktioniert, wie es sein sollte, aber vielleicht aus ähnlichen Gründen, warum ich anderen Leuten nicht beim Spielen von Videospielen zuschauen kann Reisekrankheit oder warum fluoreszierendes Licht und CRT-Monitor Flimmern mit den Köpfen der Menschen bis zur Migräne durcheinander bringen. Versuchen Sie, die Bildwiederholfrequenz Ihres Gehirns anzupassen. Sie können den Knopf fühlen, wenn Sie fest genug in Ihre Schläfe drücken und sich drehen.


0

Ich stimme Ihnen nicht wirklich zu, aber hier ist ein Terminal.app-Plugin , das macht, was Sie wollen und mehr.

Möglicherweise müssen Sie hinzufügen

set mouse=a

zu Ihrem .vimrc. Siehe :help mousefür weitere Informationen.


Leider benötigt das Plugin SIMBL, das für Lion
Eddy

Ich wusste es nicht, weil ich keinen Löwen habe. MouseTerm ist die einzige Möglichkeit, Terminal.app, von dem ich je gehört habe, mit der Maus zu scrollen. Es scheint, dass einige Leute nur begrenzte Erfolge bei der Verwendung von SIMBL auf Lion gemeldet haben. Haben Sie es versucht? Ich sehe auch, dass iTerm2 "Mausberichte" und Scrollen bietet, aber wahrscheinlich zeilenweise scrollen wird. Als Randnotiz kaum Scroll I (oben / unten / j / k) mehr: Ich finde /, ?, fF, tTund <C-f>/ <C-b>viel nützlicher.
Romainl

Beachten Sie, dass das Scrollen mit dem Mausrad dadurch funktioniert, aber das Hauptproblem nicht angesprochen wird: „Ich mag es nicht, wenn Sie nur in diskreten Linien scrollen können, anstatt kontinuierlich Pixel für Pixel zu scrollen.“
Chris Seite

Diese Art des Bildlaufs (Zeile für Zeile) ist in Vim fest codiert. Zum Glück führt kein Weg daran vorbei. Wenn man es wirklich braucht, sollte man darauf mit sorgfältig formulierten Argumenten auf vim-dev bestehen oder einen Patch bereitstellen.
Romainl

Der Grund, warum ich reibungsloses Scrollen möchte, ist, dass ich meinen Platz verliere, wenn ich diskret durch Linien scrolle. Es ist schwer zu erklären. Vielleicht betrifft es nicht alle, aber es tut es für mich
Eddy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.