Recherche…


Quitter le mode d'insertion

Commander La description
<Esc> Quitte le mode insertion, déclenche les autocommandes et les abréviations
<C-[> Exactement synonyme de <Esc>
<Cc> Laisse le mode insertion, ne déclenche pas de autocommandes

Certaines personnes aiment utiliser une paire de caractères relativement peu commune comme jk comme raccourci pour <Esc> ou <C-[> ce qui peut être difficile à atteindre sur certains claviers:

inoremap jk <Esc>l

Différentes façons d'entrer en mode insertion

Commander La description
a Ajouter du texte après la position actuelle du curseur
A Ajouter du texte à la fin de la ligne en cours
i Insérer du texte avant la position actuelle du curseur
I Insérer du texte avant le premier caractère non vide de la ligne en cours
gI Insérer du texte dans la première colonne de la ligne du curseur
gi Insérer du texte au même endroit où il a été laissé la dernière fois en mode Insertion
O Ouvrez une nouvelle ligne au-dessus de la ligne actuelle et ajoutez-y du texte (CAPITAL O )
o Ouvrez une nouvelle ligne sous la ligne actuelle et ajoutez-y du texte ( o minuscule)
s ou cl Supprimer le caractère sous le curseur et passer en mode insertion
S ou cc Supprimer toute la ligne et passer en mode Insertion
C Supprimer de la position du curseur à la fin de la ligne et lancer le mode d'insertion
c{motion} Supprimer {motion} et lancer le mode d'insertion (voir Mouvement de base )

Raccourcis du mode d'insertion

Commander La description
<Cw> Supprimer le mot avant le curseur
<Ct> Ligne de courant de shiftwidth avec une shiftwidth
<Cd> Ligne de courant non indenté avec une shiftwidth
<Cf> réindenter la ligne, (déplacer le curseur sur la position d'indentation automatique)
<Ca> Insérer du texte précédemment inséré
<Ce> Insérer le caractère ci-dessous
<Ch> Supprimer un caractère en arrière
<Cy> Insérer le caractère ci-dessus
<Cr>{register} Insérer le contenu de {register}
<Co>{normal mode command} exécuter {normal mode command} sans quitter le mode insertion
<Cn> Option autocomplete suivante pour le mot actuel
<Cp> Option de saisie semi-automatique précédente pour le mot actuel
<Cv> Insérer un caractère par sa valeur ASCII en décimal
<Cv>x Insérer un caractère par sa valeur ASCII en hexadécimal
<Cv>u Insérer un caractère par sa valeur unicode en hexadécimal
<Ck> Entrez un digraphe

Exécution de commandes normales à partir du mode insertion

En mode insertion, appuyez sur <Co> pour quitter temporairement le mode insertion et exécuter une commande normale unique.

Exemple

<Co>2w saute au deuxième mot à gauche et retourne au mode insertion.

Note: Répéter avec . ne répètera que les actions de retour en mode insertion

Cela permet des mappages utiles, par exemple

inoremap <C-f> <Right>
inoremap <C-b> <Left>
inoremap <C-a> <C-o>^
inoremap <C-e> <C-o>$

Maintenant, ctrl + a placera le curseur au début de la ligne et ctrl + e - à la fin de la ligne. Ces mappages sont utilisés par défaut dans readline . Ils peuvent donc être utiles pour les personnes qui souhaitent une cohérence.

Insérer du texte sur plusieurs lignes à la fois

Appuyez sur Ctrl + v pour entrer en mode bloc visuel.

Utilisez / / j / k pour sélectionner plusieurs lignes.

Appuyez sur Maj + i et commencez à taper ce que vous voulez.

Après avoir appuyé sur Echap , le texte sera inséré dans toutes les lignes sélectionnées.

Rappelez-vous que Ctrl + c n'est pas équivalent à 100% à Esc et ne fonctionnera pas dans cette situation!

Il y a de légères variations de Maj + i que vous pouvez appuyer en mode bloc visuel:

Clé La description
c ou s Supprimer le bloc sélectionné et entrer en mode insertion
C Supprimer les lignes sélectionnées (du curseur jusqu'à la fin) et entrer en mode insertion
R Supprimer les lignes sélectionnées et entrer en mode insertion
UNE Ajouter aux lignes sélectionnées, avec la colonne à la fin de la première ligne

Notez également que vous appuyez sur . après une opération de bloc visuel répétera cette opération où le curseur est!

Coller du texte en utilisant la commande "coller" du terminal

Si vous utilisez la commande paste de votre programme d'émulation de terminal, Vim interprétera le flux de caractères comme s'ils étaient tapés. Cela provoquera toutes sortes d’effets indésirables, en particulier une mauvaise indentation.

Pour corriger cela, à partir du mode de commande:

:set paste

Ensuite, passez au mode d'insertion, avec i , par exemple. Notez que le mode est maintenant -- INSERT (paste) -- . Collez maintenant avec votre commande d'émulateur de terminal ou avec la souris. Une fois terminé, passez en mode commande, avec Esc et exécutez:

:set nopaste

Il y a un moyen plus simple, quand on veut coller juste une fois. Mettez ceci dans votre fichier .vimrc (ou utilisez le plugin unimpaired.vim ):

function! s:setup_paste() abort
  set paste
  augroup unimpaired_paste
    autocmd!
    autocmd InsertLeave *
      \ set nopaste |
      \ autocmd! unimpaired_paste
  augroup end
endfunction

nnoremap <silent> yo :call <SID>setup_paste()<CR>o
nnoremap <silent> yO :call <SID>setup_paste()<CR>O

Maintenant, vous pouvez simplement appuyer sur yo pour coller le code sous le curseur, puis sur <Esc> pour revenir au mode normal / nopaste.

Collage depuis un registre en mode insertion

En mode insertion, vous pouvez utiliser <Cr> pour coller depuis un registre spécifié par la frappe suivante. <Cr>" par exemple les pâtes du registre sans nom ( " ).

Voir :help registers .

Commandes et raccourcis d'insertion avancés

Voici une référence rapide pour l'insertion avancée, le formatage et le filtrage des commandes / raccourcis.

Commande / raccourci Résultat
g +? + m Effectuer le codage rot13, en mouvement m
n + ctrl + a + n pour numéroter sous le curseur
n + ctrl + x - n au numéro sous le curseur
g + q + m Formater les lignes de mouvement m en largeur fixe
: r ce w Lignes centrales dans la plage r à la largeur w
: r le i Aligner les lignes dans la plage r avec l'indentation i
: r ri w Aligner à droite les lignes dans la plage r à la largeur w
! mc Filtrer les lignes de mouvement m par la commande c
n !! c Filtrer n lignes par la commande c
: r ! c Filtrer la plage r lignes par la commande c

Désactiver l'indentation automatique pour coller le code

Lors du collage de texte via un émulateur de terminal, la fonctionnalité de retrait automatique peut détruire l'indentation du texte collé.

Par exemple:

function () {
    echo 'foo'
    echo 'bar'
    echo 'baz'
}

sera collé comme:

function () {
    echo 'foo'
        echo 'bar'
            echo 'baz'
            }

Dans ces cas, utilisez l'option paste / nopaste pour désactiver / activer la fonctionnalité de retrait automatique:

:set paste
:set nopaste

À cela s'ajoute une approche plus simple du problème: ajoutez la ligne suivante dans votre fichier .vimrc:

set pastetoggle=<F3>

Et si vous voulez coller tel quel du presse-papiers. Appuyez simplement sur F3 en mode insert et collez. Appuyez à nouveau sur F3 pour quitter le mode paste .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow