Scorrimento fluido per vim in Mac Terminal / iTerm?


13

È possibile ottenere uno scorrimento uniforme (utilizzando la rotellina del mouse o il touchpad del macbook) all'interno di un terminale su Mac OSX (Lion)? Inoltre, potrei farlo all'interno di VIM?

Trovo che lo scorrimento regolare aiuti la lettura del codice, non mi piace quando puoi scorrere solo in linee discrete rispetto allo scorrimento continuo pixel per pixel.

Grazie


Potresti avere un'esperienza migliore se usi un'applicazione Vim invece di utilizzarla in una sessione terminale ( code.google.com/p/macvim , macvim.org/OSX ). C'è un motivo per cui è necessario utilizzarlo all'interno di un terminale?
Chris Page

3
MacVim non offre neanche uno scorrimento fluido.
Romainl,

Ciao @romainl. Mi chiedo come si comporti vim se la dimensione del buffer (dimensione di Windows) è davvero grande (cioè la dimensione dell'intero file). GOtta prova questo. Quindi potremmo inserire un buffer vim all'interno di un widget GTK (o QT) a scorrimento uniforme e scorrere l'intero buffer vim all'interno del widget senza problemi. Ciò avrebbe l'ulteriore vantaggio che il cursore potrebbe essere facilmente nascosto come con i moderni editor. Quando l'utente sposta il cursore, il widget riconosce (utilizzando la stessa API utilizzata da gVim) e più recente la posizione di scorrimento di conseguenza.
trusktr,

(seguito.) La suddivisione della finestra potrebbe persino essere ottenuta duplicando l'output della lunghezza completa del file di VIM in un nuovo widget e scorrendo il widget senza problemi nella posizione appropriata. Tutto ciò richiederebbe una semplice aritmetica e una buona conoscenza di un bel toolkit di widget. La suddivisione della finestra (orizzontale e verticale) e lo scorrimento e il ridimensionamento dei widget sarebbe il. Il resto sarebbe un gioco da ragazzi (menu, schede, cose che già fanno gVim e qVim).
trusktr,

(proseguendo.) Questo ha il potenziale per migliorare notevolmente anche le prestazioni di Vim. Pensaci: ogni volta che scorri la console vim o g / qvim windows (attualmente), vim deve riscrivere quasi tutti i personaggi sullo schermo. Se il buffer vim era a lunghezza intera e lo scorrimento era gestito in modo indipendente da un widget a scorrimento uniforme, vim avrebbe solo bisogno di aggiornare il valore di una riga di caratteri alla volta ogni volta che si sposta il cursore su una nuova riga (o meglio ancora, una singola personaggio quando si sposta in avanti o indietro di un carattere). Questo sarebbe un enorme vantaggio in termini di prestazioni per vim!
trusktr,

Risposte:


5

Sto usando iterm2 e sto trovando una funzionalità molto bella usando vim 7.3 nel terminale con le seguenti opzioni:

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

EDIT: set mouse = a sembra anche bello da usare come indicato dall'altro suggerimento.

Quello che fa è passare automaticamente dalla modalità di inserimento alla modalità visiva normale o alla modalità che dice - (inserisci) VISUAL - dalla modalità di inserimento. Questo ha anche il vantaggio pratico di non impostare affatto queste modalità in quanto quando hai numeri di riga o numeri di riga relativi, andrà avanti e copierà quei numeri che probabilmente non vuoi copiare. Quando ti porta in modalità visiva abilitata per il mouse in questo modo, evita di copiare quei numeri di riga, poiché funziona per controllare la selezione della modalità visiva piuttosto che la selezione del terminale nativo (che viene soppresso). Lo scorrimento funziona perfettamente, tenendo presente che seleziona tutto da dove è stata avviata la selezione nella parte inferiore dello schermo. Dimentica ctrl + c / ctrl + v in vim: usi i comandi vim yankypasta (y, yy, p,

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

Ancora una volta, iterm2 - il terminale integrato di osx è spazzatura. Non vedo davvero la tua carne con lo scorrimento riga per riga, poiché sono contento di come funzioni semplicemente come dovrebbe vim, ma forse è per ragioni simili al perché non riesco a vedere altre persone giocare ai videogiochi cinetosi o perché la luce fluorescente e il monitor CRT sfarfallano la testa delle persone fino all'emicrania. Prova a regolare la frequenza di aggiornamento del tuo cervello, puoi sentire la manopola se premi abbastanza forte nel tuo tempio e giri.


0

Non sono davvero d'accordo con te, ma ecco un plugin Terminal.app che fa quello che vuoi e altro ancora.

Potrebbe essere necessario aggiungere

set mouse=a

al tuo .vimrc. Vedi :help mouseper maggiori informazioni.


Sfortunatamente il plugin richiede SIMBL, che non è disponibile per Lion
Eddy il

Non lo sapevo perché non ho Lion. MouseTerm è l'unico modo per aggiungere lo scorrimento del mouse a Terminal.app di cui abbia mai sentito parlare. Sembra che alcune persone abbiano riscontrato un successo limitato nell'uso di SIMBL su Lion, ci hai provato? Inoltre vedo che iTerm2 fornisce "report del mouse" e scorrimento ma probabilmente scorrerà riga per riga. Come nota a margine faccio fatica di scorrimento (su / giù / j / k) più: Trovo /, ?, fF, tTe <C-f>/ <C-b>molto più utile.
rom

Si noti che questi fanno funzionare lo scorrimento della rotellina del mouse, ma non risolvono il problema principale: "Non mi piace quando è possibile scorrere solo in linee discrete invece dello scorrimento continuo pixel per pixel".
Chris Page

Questo tipo di scorrimento (riga per riga) è codificato in Vim. Per fortuna non c'è modo di evitarlo. Se uno ne ha davvero bisogno, si dovrebbe insistere con argomenti accuratamente formulati su vim-dev o fornire una patch.
Romainl,

Il motivo per cui voglio uno scorrimento regolare è che tendo a perdere il mio posto quando scorro le linee in modo discreto. È difficile da spiegare. Forse non ha effetto su tutti ma lo fa per me
Eddy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.