Desplazamiento suave para vim en Mac Terminal / iTerm?

13

¿Es posible obtener un desplazamiento suave (usando la rueda de desplazamiento del mouse o el panel táctil del macbook) dentro de un terminal en Mac OSX (Lion)? Además, ¿podría hacer esto dentro de vim?

Creo que el desplazamiento suave ayuda a la lectura del código, no me gusta cuando solo puedes desplazarte en líneas discretas en lugar del desplazamiento continuo de píxel a píxel.

Gracias

Remolino
fuente
Puede tener una mejor experiencia si usa una aplicación Vim en lugar de usarla dentro de una sesión de terminal ( code.google.com/p/macvim , macvim.org/OSX ). ¿Hay alguna razón por la que necesite usarlo dentro de una terminal?
Chris Página
3
MacVim tampoco proporciona un desplazamiento suave.
romainl
Hola @romainl. Me pregunto cómo se comporta vim si el tamaño del búfer (tamaño de Windows) es realmente grande (es decir, el tamaño de todo el archivo). GOtta prueba esto. Entonces podríamos poner un búfer vim dentro de un widget GTK (o QT) de desplazamiento suave y desplazar todo el búfer vim dentro del widget sin problemas. Esto tendría el beneficio adicional de que el cursor podría ocultarse fácilmente como con los editores modernos. Cuando el usuario mueve el cursor, el widget lo sabrá (usando la misma API que usa gVim) y volverá a centrar la posición de desplazamiento en consecuencia.
trusktr
(continuación). La división de ventanas incluso podría lograrse duplicando la salida de longitud de archivo completa de vim en un nuevo widget y desplazando el widget suavemente a la posición adecuada. Todo esto requeriría algo de aritmética simple y un buen conocimiento de un buen kit de herramientas de widgets. La división de ventanas (horizontal y vertical) y el desplazamiento y cambio de tamaño de los widgets serían los. El resto sería pan comido (menús, pestañas, cosas que gVim y qVim ya hacen).
trusktr
(continuación) Esto también tiene el potencial de mejorar enormemente el rendimiento de vim. Piense en esto: cada vez que desplaza la consola vim o g / qvim windows (actualmente), vim tiene que reescribir casi todos los caracteres en la pantalla. Si el búfer vim era de longitud completa, y el desplazamiento se manejaba de forma independiente mediante un widget de desplazamiento suave, vim solo necesitaría actualizar el valor de una línea de caracteres a la vez cada vez que mueva el cursor a una nueva línea (o mejor aún, un solo carácter cuando avanza o retrocede un carácter). ¡Esta sería una GRAN ventaja de rendimiento para vim!
trusktr

Respuestas:

5

Estoy usando iterm2, y encuentro una funcionalidad muy agradable usando vim 7.3 en el terminal con las siguientes opciones:

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

EDITAR: set mouse = a también parece genial de usar como lo indica la otra sugerencia.

Lo que esto hace es cambiar automáticamente al modo visual desde el modo normal al seleccionar texto, o al modo que dice - (insertar) VISUAL - desde el modo insertar. Esto también tiene la ventaja práctica sobre no configurar estos modos en absoluto, ya que cuando tiene números de línea o números de línea relativos, continuará y copiará los números que probablemente no desee copiar. Cuando lo deja en modo visual habilitado para mouse de esta manera, evita copiar esos números de línea, ya que funciona para controlar la selección del modo visual en lugar de la selección del terminal nativo (que se suprime). El desplazamiento funciona bien en todo momento, teniendo en cuenta que selecciona todo desde donde había comenzado la selección hasta la parte inferior de la pantalla. Olvídate de ctrl + c / ctrl + v en vim: utilizas los comandos vim yankypasta (y, yy, p,

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

Una vez más, iterm2: la terminal integrada de osx es basura. Realmente no veo su problema con el desplazamiento línea por línea, ya que estoy contento con cómo esto simplemente funciona como debería, pero tal vez sea por razones similares a por qué no puedo ver a otras personas jugar videojuegos cinetosis o por qué la luz fluorescente y el monitor CRT parpadean con las cabezas de las personas hasta el punto de la migraña. Intente ajustar la frecuencia de actualización en su cerebro, puede sentir la perilla si presiona la sien lo suficientemente fuerte y gira.

Dmitri DB
fuente
0

Realmente no estoy de acuerdo contigo, pero aquí hay un complemento Terminal.app que hace lo que quieres y más.

Es posible que deba agregar

set mouse=a

a tu .vimrc. Ver :help mousepara más información.

romainl
fuente
Desafortunadamente, el complemento requiere SIMBL, que no está disponible para Lion
Eddy
No lo sabía porque no tengo León. MouseTerm es la única forma de agregar desplazamiento del mouse a Terminal.app del que he oído hablar. Parece que algunas personas han reportado un éxito limitado en el uso de SIMBL en Lion, ¿lo intentaste? También veo que iTerm2 proporciona "informes del mouse" y desplazamiento, pero probablemente se desplazará línea por línea. Como nota al margen que apenas desplazamiento (arriba / abajo / j / k) más: Encuentro /, ?, fF, tTy <C-f>/ <C-b>mucho más útil.
romainl
Tenga en cuenta que estos hacen que el desplazamiento de la rueda del mouse funcione, pero no abordan el problema principal: "No me gusta cuando solo puede desplazarse en líneas discretas en lugar del desplazamiento continuo de píxel a píxel".
Chris Page
Este tipo de desplazamiento (línea por línea) está codificado en Vim. Afortunadamente no hay forma de evitarlo. Si realmente lo necesita, debe insistir con argumentos cuidadosamente redactados en vim-dev o proporcionar un parche.
romainl
La razón por la que quiero un desplazamiento suave es que tiendo a perder mi lugar al desplazarme por las líneas discretamente. Es dificil de explicar. Tal vez no afecta a todos, pero a mí sí
Eddy