Copier / coller Vimperator

23

J'essayer Vimperator . Je le voulais principalement pour le défilement hjkl, et j'aime son système "hint" pour suivre les liens. Ces deux fonctionnalités sont vraiment tout ce dont j'ai besoin; Je pense.

Cela ne me dérange pas les autres fonctionnalités, cela me gêne parfois.

La chose qui m'agace le plus est le copier / coller. J'ai l'habitude de Ctrl+ c/ Ctrl+ v, ça ne me dérange pas d'utiliser un autre raccourci, mais ..

:help yank indique que la copie du texte sélectionné se fait avec Y, mais la seule méthode mentionnée pour le collage est le bouton central de la souris!

C'est tellement ridicule contre l'esprit de Vim!

Comment puis-je coller dans Vimperator sans utiliser la souris?

hasen
la source
Les réponses à cette question sont toutes obsolètes (ce qui est logique car elles ont sept ans) Si vous avez atterri ici de Google, ce ne sont pas (à ce jour) les réponses que vous recherchez
Arthur Ulfeldt

Réponses:

15

La meilleure chose et la plus simple que vous puissiez faire est de remapper les clés. C'est pas difficile. Mettez ceci dans votre _vimperatorrc (ou .vimperatorrc sous Linux)

noremap <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

<C-v>est par défaut mappé sur le mode "Pass next", ce qui signifie que la prochaine touche sur laquelle vous appuyez est envoyée directement à Firefox, sans être traitée et mangée par vimperator. Ainsi, les mappages ci-dessus activent simplement le mode "Passer ensuite" et envoient le raccourci correspondant.

Il existe même un plugin vimperator qui étend encore cela et remappe tous les raccourcis Windows courants , afin qu'ils se comportent comme prévu.

user4126
la source
3
pour <Cv> (coller), il devrait être inoremap
hasen
accepté pour le lien du plugin! ce qui est génial et résout le problème
hasen
2
Il semble que la version actuelle (3.8.1) puisse avoir Cc et Cv qui font du copier-coller au niveau du système d'exploitation par défaut ... Je n'ai rien trouvé à ce sujet dans les journaux des modifications, mais je viens de passer de Pentadactyl à la dernière Vimperator et Cc et Cv ont fonctionné comme je le voulais.
driftcatcher
@hangtwenty semble être correct, la réponse ici est désormais dépassée
Arthur Ulfeldt
36

Je suis surpris qu'aucune réponse plus précise n'ait été donnée à cette question. Le lien du plugin de la réponse choisie a résolu le problème de l'OP, mais personne n'a réellement expliqué comment coller quelque chose dans un champ de texte sans utiliser le mode passthrough (Cv).

Si vous êtes dans un champ de texte en mode INSERT et que vous souhaitez coller quelque chose, la chose évidente à faire dans vi-land est d'appuyer sur ESC et p pour coller. Dans vimperator, cela ne fonctionne pas - ESC vous fait sortir du mode INSERT complètement et dans le mode dans lequel vous travaillez avec la page / l'onglet dans son ensemble.

Vimperator résout ce problème en disposant d'un mode BASIC supplémentaire - TEXTAREA. En mode TEXTAREA, vous pouvez utiliser les commandes prises en charge que vous utiliseriez dans vi.

Enter TEXTAREA mode: C-t
Paste:    p
Copy line:    yy
Delete Char:  x
Delete Line:  dd

Etc.

Cela ne semble pas être bien documenté - j'ai fini par le comprendre principalement par erreur. Il fonctionne de la même manière dans les zones de texte multilignes et sur une seule ligne.

RevAaron
la source
Merci pour ce commentaire. C'est exactement ce dont j'avais besoin pour faire tourner mon champ de tête et les champs de formulaire.
ZweiBlumen
@RevAaron lorsque vous entrez dans le mode TEXTAREA est-ce comme l'environnement de VI traditionnel et la plupart des touches de VI fonctionneraient pour éditer du texte? Et aussi j'ai remarqué (encore une fois par accident) lorsque j'appuie sur "d" puis sur "s" ou "a" en mode TEXTAREA, cela transforme le mode en celui appelé VISUAL. Je vous serais reconnaissant de bien vouloir me donner quelques informations à ce sujet. ou même si vous le souhaitez, je peux le poser comme une question, vous pouvez y répondre, puis d'autres l'utiliseront.
Mehrad
13

À l'heure actuelle, vimperator remappe à la fois Ctrl + C (de «copier» à «annuler») et Ctrl + V (de «coller» à «passer»). Sous Linux, la méthode préférée de copier / coller est avec le bouton central de la souris, donc ce n'est pas un problème. Sous Windows, il s'agit d'un désastre de l'interface utilisateur et il doit absolument être corrigé.

Vous pouvez copier à partir de trois emplacements: le texte d'une page Web, le texte d'un champ de formulaire et le texte d'une application externe. Vous pouvez copier deux emplacements: dans un champ de formulaire et dans une application externe. Les barres d'adresse et de commande fonctionnent comme des champs de formulaire.

Copying from...
     A web page: 'Y' works, '^C' doesn't
     Form field: 'Y' doesn't work, '^C' does
     Extern application: 'Y' doesn't work, '^C' does
  Copying to...
     Form field: '^V' doesn't work, '^V,^V' does
     External application: '^V' works, '^V,^V' pastes twice
 Or, seen another way
       Copy  Paste
 Page  Y     N/A
 Form  ^C    ^V,^V
 App   ^C    ^V

Les utilisateurs ordinaires ne mémoriseront pas ce tableau. Ils ne le comprendront jamais, car ce n'est pas documenté explicitement, et ils ne le liraient même pas. Au lieu de cela, ils utiliseront le menu contextuel, la seule chose qui fonctionne partout. En fait, quelques semaines après avoir commencé à utiliser Vimperator, je me suis surpris à faire exactement cela, dans une application complètement indépendante, quelque chose que je n'avais jamais fait auparavant.

Nous devons restaurer ^ C et ^ V à leurs fonctions d'origine, comme copier-coller, ce qui signifie déplacer les touches de raccourci ^ C = annuler et ^ V = passer-through. En fait, ces deux raccourcis sont uniques à vimperator et n'apparaissent pas dans vim. ^ V signifie 'bloquer le visuel' dans vim, qui ne s'applique pas dans vimperator, donc le pass-through peut être facilement assigné à une autre clé. Je suggère une barre oblique inverse en mode commande et ctrl + barre oblique inverse en mode commande et insertion. Cela laisse ^ C. Je pense que cela devrait être déplacé vers ^ S. Cela a deux bonnes mnémoniques: c'est 'stop', et c'est aussi le raccourci clavier Unix pour XOFF, qui est inutile mais sémantiquement similaire. ^ S est actuellement "enregistrer la page sous" dans vimperator, qui est rarement utilisé et est toujours accessible avec: save ou: saveas.

L'annulation est également interrompue; c'était ^ Z, mais ^ Z n'est pas un mode d'intercommunication et il n'y a aucun moyen d'annuler les modifications dans un champ de formulaire sans utiliser la souris. Je ne vois aucune raison de ne pas déplacer cela vers un autre raccourci clavier, d'autant plus que ^ Z dans vim signifie suspendre, ce qui est complètement indépendant, et se retrouver de manière inattendue en mode d'intercommunication est extrêmement désorientant. Je ne peux pas penser à un raccourci clavier non arbitraire pour le changer, mais ^ Z était assez arbitraire en premier lieu, donc tout raccourci clavier inutilisé fera l'affaire.

Soruce: http://www.mozdev.org/pipermail/vimperator/2008-October/002359.html

Joe
la source
2

Je cherche un moyen de le faire depuis un moment. Joli. Mais la solution noremap de user4126 n'était pas tout à fait parfaite si je voulais coller dans la ligne de commande ou dans une zone de texte comme le souligne Joe. Je l'ai donc modifié avec inoremap, et cnoremap aussi sur http://charlieharvey.org.uk/page/vimperator_cut_and_paste . Il ne semble pas que vnoremap soit pris en charge.

Vous pouvez donc coller dans la ligne de commande et dans les zones de texte en utilisant le raccourci ctrl-v une seule fois. Collez ce qui suit dans votre .vimperatorrc et redémarrez Firefox.

noremap <C-v> <C-v><C-v>
inoremap <C-v> <C-v><C-v>
cnoremap <C-v> <C-v><C-v>

noremap <C-c> <C-v><C-c>
inoremap <C-c> <C-v><C-c>
cnoremap <C-c> <C-v><C-c>
Charlie
la source
2

Je n'ai pas trouvé les réponses données utiles car je ne peux voir Ctrl+ cnulle part. Ce que je fais, c'est d'utiliser le raccourci SecureCRT. Autrement dit, pour copier à partir de la page:

Ctrl+Ins

Pour coller: Ctrl+ Vdeux fois (comme quelqu'un dit dans les réponses ailleurs).

Peter Mortensen
la source
Merci Monsieur. Le mappage de <cc> à <c-ins> a résolu ma saveur particulière de ce problème.
Steve Vermeulen
1

Pour une réponse courte - ^ V ^ V (c'est-à-dire Ctrl-V Ctrl-V)

Le premier Ctrl-V "passe la touche suivante". Le second Ctrl-V colle le texte. C'est ce que je fais pour la plupart des champs de texte.

Si vous utilisez le mode vi pour les champs de texte multilignes (set noinsertmode), vous pouvez également coller à l'aide de p - donc si je voulais coller l'URL d'un autre onglet dans cette balise, je peux aller à cet onglet, utiliser y puis revenir à cet onglet. La barre inférieure du navigateur indiquera - TEXTAREA - et je peux appuyer sur p pour coller l'URL.

Hamish Downer
la source
0

Je suggère d'utiliser le

map <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

Parce que si vous avez ouvert un éditeur de texte externe, une simple fenêtre Cc at FF mettra fin à l'éditeur externe et vous perdrez tout.

BR

MaikoID
la source