2015-03-04 1 views
6

J'ai récemment activé le mode de la souris dans vim:permet le défilement de la souris mais pas la sélection visuelle de la souris dans vim?

set mouse=a 

Ce que j'aime pour le défilement, mais est terrible pour surligner le texte. J'utilise vim dans iTerm2 sur un Mac. Maintenant, quand je sélectionne le texte, il est très lent à surligner (seulement en surbrillance après le glissement de la surbrillance est terminée) et le texte en surbrillance n'est pas automatiquement copié dans mon presse-papiers, comme c'était le cas lors de l'utilisation iTerm2.

Existe-t-il un moyen d'autoriser le défilement basé sur la souris/le trackpad dans vim sans utiliser la souris pour la sélection de texte en mode visuel?

J'ai essayé:

set mouse=n 

qui empêche le texte de se surligné quand je tente de sélectionner, mais il empêche également iTerm2 de mettre en évidence le texte.

Mise à jour:

Merci à this post je réalisais que je peux obtenir presque le comportement que je veux en maintenant la touche option, mais cela est assez fastidieux. Je voudrais vraiment ne pas avoir besoin de maintenir la touche d'option chaque fois que je sélectionne. Pensées?

Update2:

Merci aux suggestions dans les commentaires que j'ai pu obtenir un peu plus près. Je avais besoin de recompiler vim pour que +clipboard est activé:

brew install vim 

Maintenant, si je suis prêt à mettre en place avec ne pas voir mon point fort en cours comme un texte de sélection je peux alors au moins encore l'obtenir dans le presse-papiers par le tirer après la sélection du mode visuel. Et si je veux vraiment une meilleure ergonomie de sélection, je peux maintenir alt/option et obtenir le comportement de sélection iTerm2 d'origine.

J'aimerais pouvoir inverser ces modes. Par exemple, par défaut pour le comportement qui est accompli en maintenant alt/option et activer le comportement en mode visuel quand je le veux avec une clé ... mais bon, c'est assez bon.

+0

Pourquoi utilisez-vous pas '" + y' – romainl

+0

@romainl, Comment puis-je –

+0

Le registre '+' est le presse-papiers du système Si vous sélectionnez le texte que vous voulez en mode visuel, vous pouvez le copier en appuyant sur '" + y'. – EvergreenTree

Répondre

1

Réponse courte: Je crois que ce n'est pas possible!

Mais il est généralement difficile de prouver l'absence de réponse. Alors j'essaierai d'y réfléchir et j'espère que je me trompe. Donc voici la réponse longue:

Votre terminal dans des conditions "normales", gère la souris et l'application de ligne de commande ne sait rien à ce sujet. Mais parfois, une application demande le contrôle des capacités du terminal pour être capable de lier des événements de souris pour faire des "trucs".

C'est ce qui arrive quand vous définissez mouse = a: vous changez les capacités de votre terminal pour indiquer que tous les événements de la souris sont dirigés vers l'application en cours d'exécution, alors vim peut lier ou non les actions , coller etc ..). Donc, lorsque vous utilisez la touche d'option pour pouvoir sélectionner même si l'application en cours a le contrôle du curseur, il s'agit d'un hack sur l'émulateur de terminal (iTerm2 dans votre cas) pour obtenir le comportement que vous voulez. J'attends vraiment.

Mon conseil serait de passer à macvim (brew install macvim) qui installe un interface graphique pour vim. Et puis vous aurez une sélection qui fonctionne très bien, même si c'est juste hors du terminal.

1

Avec votre mise à jour vous dites que vous pouvez presque obtenir ce que vous voulez, mais que la sélection n'est pas copiée automatiquement.

Pour cela, il vous suffit set clipboard+=autoselect guioptions+=a

Voir :help clipboard-autoselect pour plus de détails.

1

Le meilleur que j'ai trouvé est d'ajouter une bascule pour le mode souris.

Ajouter ce qui suit à .vimrc basculera mouse=a-mouse= et à nouveau lorsque la touche est pressée ,:

noremap , :if &mouse == "" \| set mouse=a \| else \| set mouse= \| endif<CR><CR>