En mode Insertion dans Vim, existe-t-il un moyen de parcourir le texte en déplaçant certains caractères vers l'avant et vers l'arrière autrement qu'en utilisant les touches fléchées?
Si je presse h, j, ket len mode insertion, les caractères réels sont imprimés sur l' écran au lieu de se déplacer dans le texte.
La façon dont je le fais en ce moment est d'avoir recours à Ctrl+ [( Esc) et de parcourir le texte ensuite; mais évidemment ce n'est pas productif.
imap jk <Esc>
) Afin de ne pas avoir à interrompre votre élan et à atteindre votre clavier pour appuyer sur la touche.<ESC>
) mappé à lakj
place dejk
; mon collègue Dijkstra est à blâmer!jk
etkj
, donc j'appuie juste comme un gros bouton avec deux doigts et peu importe l'ordre dans lequel je suis revenu à la normale.Réponses:
Vous semblez abuser de vim, mais cela est probablement dû au fait que vous ne le connaissez pas très bien.
La bonne façon est d'appuyer Esc, d'aller où vous voulez faire une petite correction, de la corriger, de revenir en arrière et de continuer à éditer. Il est efficace parce que Vim a beaucoup plus de mouvements que le personnage habituel en avant / en arrière / en haut / en bas. Une fois que vous en aurez appris davantage, cela sera plus productif.
Voici quelques cas d'utilisation:
Mais, si vous voulez toujours faire de petites traversées de texte sans quitter le mode insertion, suivez les conseils de rson et utilisez + . En prenant le premier exemple que j'ai mentionné ci-dessus, + vous amènera au caractère "f" précédent et vous laissera en mode insertion.CtrlOCtrlOFf
la source
Ctrl+o
pour émettre une seule commande en mode normal. Cela peut parfois vous amener où vous voulez être, surtout lorsqu'il est combiné avec les commandes de mouvement t / T et f / F.:h ins-special-keys
.ctrl-h
: retour arrière,:ctrl-w
supprimer le mot,:ctrl-u
supprimer jusqu'au début de la lignealt-b
,: revenir en arrière d'un mot.En mode insertion , utilisez CtrlOpour passer en mode normal pour une seule commande:
qui est probablement le moyen le plus simple de faire ce que vous voulez et qui est facile à retenir.
Autres touches de contrôle très utiles en mode insertion:
ceux-ci élimineront de nombreux commutateurs inutiles en mode normal.
la source
Mode d'insertion
Mouvement
hjkl
Malgré ce que Pavel Shved a dit - qu'il est probablement plus conseillé de s'habituer au Escmode Insertion - voici un exemple d'ensemble de mappages pour une navigation rapide en mode Insertion:
Cela fera Alt+ hen mode Insertion aller d'un caractère à gauche, Alt+ jbas et ainsi de suite, de manière analogue à hjklen mode Normal.
Vous devez copier ce code dans votre fichier vimrc pour le charger à chaque démarrage de vim (vous pouvez l'ouvrir en tapant start
:new $myvimrc
en mode Normal).Tout mouvement en mode normal
Étant donné que la Alttouche de modification n'est pas mappée (à quelque chose d'important) par défaut, vous pouvez de la même manière extraire d'autres (ou toutes) les fonctionnalités du mode Normal au mode Insertion. Par exemple:
Passer au début du mot actuel avec Alt+ b:
(Autres utilisations de Alten mode Insertion)
Il convient de mentionner qu'il peut y avoir de meilleures utilisations de la Altclé que de répliquer le comportement du mode normal: par exemple, voici des mappages pour copier à partir d'une ligne adjacente la partie de la colonne actuelle jusqu'à la fin de la ligne:
(J'ai utilisé la
\
continuation de ligne et l'indentation pour augmenter la clarté - les commandes sont interprétées comme si elles étaient écrites sur une seule ligne.)Raccourcis clavier intégrés pour l'édition
(Il n'y a pas de raccourcis clavier notables intégrés pour le mouvement en mode Insertion.)
Référence:
:help insert-index
Mode ligne de commande
Cet ensemble de mappages rend les mouvements supérieurs Alt+ disponibles dans la ligne de commande:hjkl
Alternativement, ces mappages ajoutent les mouvements à la fois au mode Insertion et au mode Ligne de commande en une seule fois:
Les commandes de mappage pour tirer les commandes du mode Normal vers le mode Ligne de commande sont un peu différentes des commandes de mappage du mode Insertion (car le mode Ligne de commande manque le Ctrl+ du mode Insertion O):
Raccourcis clavier intégrés pour le mouvement et l'édition
Référence:
:help ex-edit-index
la source
Alt
clé?Si vous êtes un puriste Vim, ne lisez pas cette réponse. OTOH, si vous êtes nouveau sur vim et que vous cherchez quelques conseils utiles que vous ne trouverez pas dans les centaines de tutoriels et blogs vim, lisez la suite ... :-)
Quelques moyens non orthodoxes (vim)
Nous
vim
sommes en 2014, et en tant que personne qui est récemment retournée, je peux offrir quelques points de vue et conseils potentiellement contrariants.Utilisez Maj + gauche ou Maj + droite pour parcourir les mots
Bien que la répétition soit un concept puissant dans vim, je trouve (personnellement) étrange que son utilisation m'oblige à compter (lignes, caractères, mots, etc.) ou à faire des suppositions. Mon cerveau fonctionne généralement comme "Je veux le curseur là-bas " et pas comme "Je veux le curseur _5_words_to_the_left_". Pouvoir rapidement déplacer le curseur et observer visuellement où le point d'insertion de cette façon me permet de garder mon esprit sur ce que je modifie au lieu d'avoir à compter le nombre de sauts que je dois faire pour arriver là où je dois le modifier.
Activez le mode souris, utilisez la molette de la souris et cliquez
... pour parcourir de grands corps de texte.
La plupart (tous) les ordinateurs modernes ont un pavé tactile qui est étroitement intégré au clavier (par exemple, les MacBook). Les concepteurs industriels ont passé de nombreuses années-homme à optimiser ces conceptions afin que le vieux problème d'avoir à éloigner la main du clavier ne soit plus un vrai problème. D'accord, c'est si vous êtes habitué à une souris et que vous n'aimez pas changer, mais pour toute personne nouvelle à vim (comme celles qui pourraient trouver ce message via une recherche), cela ne devrait pas être un gros problème.
En bonus, cliquer + glisser vous met en mode visuel
Lorsque la souris est activée, cliquer et faire glisser a pour effet de basculer en mode visuel et de marquer une région à tirer.
Et utilisez la molette de défilement
Utiliser la souris (molette) pour faire défiler et cliquer pour positionner le curseur (duh) fonctionne. Voir http://usevim.com/2012/05/16/mouse/ pour plus d'informations à ce sujet.
Et donc...
Ce sont ce que j'appellerais des façons plus modernes (à l'aide de la souris, de la molette de défilement, etc.) de naviguer dans vim, tout aussi efficaces selon votre préférence d'entrée.
HTH
la source
Beaucoup de gens dans la communauté Vim soutiennent que vous ne devez pas naviguer en mode Insertion, que ce n'est pas la manière Vim. Je pense que c'est un sentiment incorrect appris lors de la transition des éditeurs standard à Vim.
Vim est plus puissant lorsque vous utilisez ses outils pour créer des actions ou des trouvailles atomiques et répétables.
Vous pouvez naviguer en mode Insertion si vous corrigez une erreur que vous avez commise lors de la même session d'insertion. Vous ne devez pas naviguer en dehors de la plage de texte que vous avez modifiée.
Si vous faites une erreur lors de la saisie de texte et sortez du mode Insertion pour le corriger, vous ne pourrez pas répéter l'action prévue,
.
répéterez la correction.Vim prend en charge de nombreuses touches de navigation en mode Insertion. Évidemment, il y a les touches fléchées, Accueil et Fin, mais il existe également de nombreux autres raccourcis. Tu vois
:h ins-special-keys
.la source
Dans GVim, vous pouvez utiliser la souris. Mais honnêtement, qu'est-ce qui ne va pas avec les touches fléchées? Il y a une raison pour laquelle ils sont sur un clavier.
la source
Pour avoir une navigation un peu meilleure en mode insertion, pourquoi ne pas mapper certaines touches?
Si vous pouvez contourner le problème pour que la clé Meta fonctionne dans votre terminal, vous pouvez encore mieux vous moquer du mode emacs. La navigation en mode normal est bien meilleure, mais pour les mouvements plus courts, elle permet de rester en mode insertion.
Pour les sauts plus longs, je préfère la traduction par défaut suivante:
Cela passe en mode normal et remonte un mot
la source
Je crois que Homeet End(et PageUp/ PageDn) fonctionnent également normalement en mode insertion, mais à part cela, je ne crois pas qu'il existe d'autres clés standard définies pour la traversée de texte.
la source
Désolé mais vim ne fonctionne pas de cette façon.
Vous devez passer en mode "normal", naviguer et revenir en arrière pour réinsérer.
la source
Vous pouvez créer des mappages qui fonctionnent en mode insertion. La façon de le faire est via inoremap. Notez le «i» au début de la commande (noremap est utile pour éviter les collisions de cartes clés). Le corollaire est «n» pour le mode «normal». Vous pouvez deviner ce que Vim pense être «normal»;)
CEPENDANT, vous voulez vraiment naviguer dans le texte en utilisant le mode «normal». Vim est super dans ce genre de chose et toute cette puissance est disponible en mode normal. Vim fournit déjà des moyens faciles de passer du mode normal au mode d'insertion (par exemple, i, I, a, A, o, O). L'astuce consiste à faciliter le passage en mode normal. La façon de le faire est de remapper escape à une touche plus pratique. Mais vous en avez besoin d'un qui n'entrera pas en conflit avec votre frappe habituelle. J'utilise:
Depuis jj (c'est 2 j tapé l'un après l'autre rapidement) ne semble pas apparaître dans mon vocabulaire. Les autres réorganiseront l'endroit où ils sont à l'aise.
L'autre changement essentiel que je fais est de changer les touches CAPSLOCK et CONTROL de mon clavier (en utilisant la configuration du clavier de l'ordinateur hôte) car je n'utilise presque jamais CAPSLOCK et il a ce gros et beau bouton là où je le veux. (Ceci est courant pour les utilisateurs d'Emacs. L'inconvénient est que vous vous retrouvez sur un clavier «non fixé»! Aaarggh!)
Une fois que vous avez remappé CAPSLOCK, vous pouvez facilement utiliser les remappages du mode d'insertion suivants:
En gardant à l'esprit que certaines touches sont déjà mappées en mode insertion (back-kill-word est Cw (Control-w) par défaut, vous pourriez déjà avoir les liaisons que vous voulez. Cela dit, je préfère Ch donc dans mon .vimrc j'ai :
MAIS, vous voulez probablement le même spasme de mémoire musculaire en mode normal, donc je mappe aussi Ch comme:
(d) elete (b) ackwards accomplit la même chose avec le même accord de touche. Ce type d'édition rapide est celui que je trouve utile dans la pratique pour les fautes de frappe. Mais restez en mode normal pour vous déplacer dans le texte et rien de plus que de tuer le mot précédent. Une fois que vous aurez l'habitude de changer de mode (en utilisant un remappage bien sûr), ce sera beaucoup plus efficace que le remappage du mode d'insertion.
la source
Vous pouvez utiliser
imap
pour mapper n'importe quelle touche en mode insertion sur l'une des touches de curseur. Ainsi:Maintenant, h fonctionne comme en mode normal, en déplaçant le curseur. (Mapper h de cette manière est évidemment un mauvais choix)
Cela dit, je ne pense pas que la manière standard de se déplacer dans le texte à l'aide de VIM ne soit "pas productive". Il existe de nombreuses façons très puissantes de parcourir le texte en mode normal (comme utiliser w et b, ou / et?, Ou f et F, etc.)
la source
Pour certains mouvements et actions fréquemment utilisés, j'ai défini les mappages suivants. Cela permet d'économiser une touche par rapport à la combinaison CTRL + O et comme j'en ai besoin fréquemment, ils sont payants à long terme.
la source