J'utilise VI et VIM depuis des années (30 ou plus) (dans xterms, pas sa propre fenêtre, gvim) et j'ai une énorme bibliothèque de commandes vim que je donne à vim en utilisant le bouton central de la souris comme sélection.
Par exemple, je faisais souvent des choses comme ...
vi {many_hundreds_of_files}
paste vim commands using mouse - one paste per file.
La sélection comprendrait de nombreuses commandes VIM pour faire des choses comme remplacer le test, le formatage, déplacer les lignes, etc., etc., etc., et se termine généralement par: w et: les commandes VIM suivantes, à la fin de la sélection, donc vim est prêt pour moi à coller à nouveau dans le fichier suivant. Cela me permet de mettre à jour un grand nombre de fichiers de manière TRÈS complexe, sans avoir besoin de scripts spéciaux (tels que l'édition perl sur place) pour le faire.
Certaines de ces pâtes de commande vim font plus de 200 lignes (stockées dans des fichiers texte que je fais apparaître à l'écran, et «copier tout»! Celles-ci apportent BEAUCOUP de modifications à l'ensemble des milliers de fichiers que je reformate. Mais uniquement pour l'ensemble spécifique de fichiers, pas pour mon travail quotidien sur le vim. EG: reformatage en bloc pour les fichiers texte / données.
Le problème...
Lors de mon dernier correctif système (Fedora 25), vim colle désormais la sélection de souris COMME TEXTE et non pas comme commandes vim, et je n'arrive pas à l'arrêter!
Cela fonctionne toujours bien sur un autre système (Fedora 24).
Si je veux coller comme texte, j'entre en mode insertion avant de coller! Je ne veux pas que VIM colle automatiquement les sélections en tant que texte lorsqu'il n'est pas en mode insertion. Je comprends que cela était censé être une fonction de sécurité, mais pour moi, c'est un problème majeur d'utilisation.
J'ai essayé de dater les entrées terminfo (xterm-256color) à partir d'une machine qui ne fait pas cela (en particulier l'entrée terminfo "kmous"). J'ai également regardé le paramètre vim ": set mouse =" (qui est nul!). Je ne sais pas si c'est le xterm (douteux), ou quelque chose qui a changé dans VIM (probablement), et les journaux de changement et google n'ont pas été utiles.
Cependant, rien ne semble me donner l'ancien comportement.
vim
changement: comment à l'vim
intérieur d'unxterm
savoir quelque chose est entré par le clavier ou collé par le bouton de la souris? Je ne connais pas un tel mécanisme. D'un autre côté,xterm
sait qu'il est en cours d'exécutionvim
afin qu'il puisse décider d'entourer le collage aveci
et <esc>. Essayez (a) avec un autre type de fenêtre de terminal et (b) une copie devim
avec un nom différent. Cela devrait aider à réduire la cause du problème.vim
détourne votre méthode de collage. Essayez peut-être d'utiliser ssh'ing ou telnet sur votre machine et de les coller de cette façon. Si vous avez une boîte Windows, utilisez du mastic pour mettre ssh dans votre machine Fedora25 et collez-le de cette façon.gvim.exe
(graphical-vim) et la ligne de commandevim.exe
. Collez "itext" dans gvim.exe et vous obtenezitext
. Collez-le dans le vim.exe et vous obteneztext
pastetoggle
option?Réponses:
Eh bien, après avoir parcouru BEAUCOUP de pages Web, beaucoup donnant des indices qui ne semblaient pas fonctionner, j'ai trouvé un indice (texte supplémentaire autour d'une pâte) qui m'a conduit à la cause et à la solution du problème.
Il semble que vim y ait intégré un certain nombre de «fausses» entrées termcap qu'il utilise lorsqu'il reconnaît des terminaux spécifiques (et se trompe parfois, même si ce n'était pas le cas dans ce cas).
Les paramètres termcap dans vim sont nombreux à ajouter en tant que tels NE S'AFFICHE PAS dans une liste de paramètres normale ": définir tout". Pour les voir, vous devez utiliser ": set termcap". Le paramètre termcap spécifique "non standard" est "t_BE" (voir vim ": help t_BE"). L'aide intégrée "xterm-bracketed-paste" explique ce paramètre termcap interne à vim.
Fondamentalement, si ce paramètre est défini (dans ce cas par Vim et non par termcap / terminfo), vim l'enverra à xterm au démarrage, ce qui indique à xterm d'ajouter des codes spéciaux autour de tout texte que l'utilisateur colle à partir d'une source externe. Lorsque vim les voit, il passe automatiquement non seulement en mode insertion, mais définit également le «mode collage» afin de ne pas formater le texte.
Le dernier (coller-mode) est je pense TRÈS utile! Le premier est ce qui me donne tous les ennuis.
La solution de force brute est de désactiver le collage entre crochets en l'ajoutant au ".vimrc"
Une solution alternative ....
Au lieu de désactiver complètement le collage entre crochets, arrêtez vim de prendre des mesures lorsqu'il voit la séquence de démarrage d'un collage terminal (à partir de la souris), en mode commande ou en mode normal.
Cela signifie que si vous collez du texte en mode insertion, vim n'essaiera pas de formater (mettre en retrait) du texte qui est probablement déjà en retrait.
Cela ne signifie pas que je n'ai plus besoin de basculer en mode collage, car j'utilise également le basculement en mode collage (mappé sur F2) pour désactiver "showbreak" et "listchars" (affichant les lignes, les tabulations, les espaces insécables et les espaces espaces supplémentaires à la fin des lignes). J'aurais encore besoin de mettre vim dans ce mode quand je veux faire des sélections de souris pour coller ailleurs.
Les commentaires et suggestions sur les solutions sont les bienvenus.
la source