Défilement fluide pour vim dans Mac Terminal / iTerm?

13

Est-il possible d'obtenir un défilement fluide (à l'aide de la molette de défilement de la souris ou du pavé tactile de MacBook) dans un terminal sur Mac OSX (Lion)? De plus, pourrais-je le faire dans vim?

Je trouve que le défilement fluide facilite la lecture du code, je n'aime pas quand vous ne pouvez faire défiler que sur des lignes discrètes, par opposition au défilement continu pixel par pixel.

Merci

Tourbillon
la source
Vous pouvez avoir une meilleure expérience si vous utilisez une application Vim au lieu de l’utiliser dans une session de terminal ( code.google.com/p/macvim , macvim.org/OSX ). Y a-t-il une raison pour laquelle vous devez l'utiliser dans un terminal?
Chris Page
3
MacVim ne propose pas non plus de défilement fluide.
romainl
Salut @romainl. Je me demande comment vim se comporte si la taille du tampon (taille des fenêtres) est vraiment grande (c'est-à-dire la taille de tout le fichier). GOtta teste ça. Ensuite, nous pourrions mettre un tampon vim dans un widget GTK (ou QT) à défilement fluide et faire défiler le tampon vim entier à l'intérieur du widget en douceur. Cela aurait l'avantage supplémentaire que le curseur pourrait être facilement caché comme avec les éditeurs modernes. Lorsque l'utilisateur déplace le curseur, le widget connaît (en utilisant les mêmes utilisations de l'API gVim) et recentre la position de défilement en conséquence.
trusktr
(suite) Le fractionnement des fenêtres pourrait même être accompli en dupliquant la sortie de la longueur de fichier complète de vim dans un nouveau widget et en faisant défiler le widget en douceur jusqu'à la position appropriée. Tout cela nécessiterait une arithmétique simple et une bonne connaissance d'une belle boîte à outils de widget. Le fractionnement des fenêtres (horizontal et vertical) et le défilement et le redimensionnement des widgets seraient les. Le reste serait un jeu d'enfant (menus, onglets, choses que gVim et qVim font déjà).
trusktr
(suite). Cela a également le potentiel d'améliorer considérablement les performances de vim. Pensez-y: chaque fois que vous faites défiler les fenêtres de la console vim ou g / qvim (actuellement), vim doit réécrire presque tous les caractères à l'écran. Si le tampon vim était de pleine longueur et que le défilement était géré indépendamment par un widget de défilement fluide, vim n'aurait besoin que de mettre à jour la valeur d'une ligne de caractères à la fois chaque fois que vous déplacez le curseur sur une nouvelle ligne (ou mieux encore, un seul lorsque vous avancez ou reculez d’un caractère). Ce serait un énorme avantage de performance pour vim!
trusktr

Réponses:

5

J'utilise iterm2, et je trouve de très belles fonctionnalités en utilisant vim 7.3 dans le terminal avec les options suivantes:

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

EDIT: set mouse = a semble également cool à utiliser comme indiqué par l'autre suggestion.

Cela vous fait automatiquement basculer dans le mode visuel de la normale lors de la sélection du texte, ou dans le mode qui dit - (insérer) VISUEL - du mode d'insertion. Cela a également l'avantage pratique de ne pas définir ces modes du tout dans la mesure où lorsque vous avez des numéros de ligne ou des numéros de ligne relatifs, il ira de l'avant et copiera les numéros que vous ne voulez probablement pas copier. Quand il vous fait tomber en mode visuel activé par la souris de cette façon, il évite de copier ces numéros de ligne, car cela fonctionne pour contrôler la sélection du mode visuel plutôt que la sélection du terminal natif (qui est supprimée). Le défilement fonctionne très bien tout au long, en gardant à l'esprit qu'il sélectionne tout depuis l'endroit où vous avez commencé la sélection jusqu'au bas de l'écran. Oubliez ctrl + c / ctrl + v dans vim - Vous utilisez les commandes vim yankypasta (y, yy, p,

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

Encore une fois, iterm2 - le terminal intégré d'osx est une corbeille. Je ne vois pas vraiment votre bœuf avec le défilement ligne par ligne, car je suis content de la façon dont cela fonctionne simplement comme le devrait Vim, mais c'est peut-être pour des raisons similaires à la raison pour laquelle je ne peux pas regarder d'autres personnes jouer à des jeux vidéo sur le mal des transports ou pourquoi la lumière fluorescente et le moniteur CRT scintillent avec la tête des gens au point de migraine. Essayez d'ajuster le taux de rafraîchissement sur votre cerveau, vous pouvez sentir le bouton si vous appuyez assez fort sur votre tempe et tournez.

Dmitri DB
la source
0

Je ne suis pas vraiment d'accord avec vous mais voici un plugin Terminal.app qui fait ce que vous voulez et plus encore.

Vous devrez peut-être ajouter

set mouse=a

à votre .vimrc. Voir :help mousepour plus d'informations.

romainl
la source
Malheureusement, le plugin nécessite SIMBL, qui n'est pas disponible pour Lion
Eddy
Je ne savais pas parce que je n'ai pas Lion. MouseTerm est le seul moyen d'ajouter le défilement de la souris à Terminal.app dont j'ai jamais entendu parler. Il semble que certaines personnes aient signalé un succès limité dans l'utilisation de SIMBL sur Lion, avez-vous essayé? Je vois également que iTerm2 fournit des «rapports de souris» et un défilement, mais il défilera probablement ligne par ligne. Comme une note de côté , je peine défilement (haut / bas / j / k) plus: je trouve /, ?, fF, tTet <C-f>/ <C-b>beaucoup plus utile.
romainl
Notez que ceux-ci font fonctionner le défilement de la molette de la souris, mais ils ne résolvent pas le problème principal: "Je n'aime pas quand vous ne pouvez faire défiler que sur des lignes discrètes par opposition au défilement continu pixel par pixel."
Chris Page
Ce type de défilement (ligne par ligne) est codé en dur dans Vim. Heureusement, il n'y a aucun moyen de contourner cela. Si on en a vraiment besoin, il faut insister dessus avec des arguments soigneusement formulés sur vim-dev ou fournir un patch.
romainl
La raison pour laquelle je veux un défilement fluide est que j'ai tendance à perdre ma place lors du défilement discret des lignes. C'est difficile à expliquer. Peut-être que cela n'affecte pas tout le monde mais ça le fait pour moi
Eddy