Existe-t-il un moyen d'insérer un seul caractère, puis de quitter le mode d'insertion?

10

Lorsque je passe du texte et, par exemple, en ajoutant des retours à la ligne autour de certains mots ou citations ou autre, il est irritant de devoir appuyer sur Echap ou Ctrl- [après chaque insertion. Les inserts (et les annexes) sont différents, donc cela .n'aide pas beaucoup.

Existe-t-il quelque chose de similaire rqui retourne en mode normal après un seul caractère, mais utilise le mode insertion au lieu du mode remplacement?

Caractère générique
la source
3
Vous devriez peut-être envisager d'utiliser (ou d'étendre) le plugin vim-surround , afin de travailler sur le texte de manière plus significative .
VanLaser

Réponses:

11

S'il n'y en a pas (je n'ai pas regardé), vous pouvez utiliser ce mappage dans votre .vimrc:

nnoremap <C-I> i <ESC>r

Il iinsère, place un espace, ESCsinge et démarre une seule lettre replace. Cela est mappé CtrlI.

C'est un hack, et laissera un espace suspendu si vous appuyez sur Échap avant de taper une lettre - mais c'est mieux que rien!

Qix - MONICA A ÉTÉ MAUVAISE
la source
1
Pas mal ... Je vais probablement l'utiliser si personne ne trouve quelque chose de mieux. :)
Wildcard
2
@Wildcard Je ne savais pas à quel point je courais réellement dans ce cas d'utilisation sans m'en rendre compte. Bonne question :) Je l'ai également ajouté à mon propre vimrc.
Qix - MONICA A ÉTÉ BRUÉE
2
J'ai passé la majeure partie de la journée à réparer un tas de démarques. Italique, code en ligne, indentations d'en-tête, hyperliens ... tous insérés dans un caractère. :) En fait, votre solution est parfaite; Je vais commencer à l'utiliser maintenant.
Wildcard
2
Inconvénient: il n'est pas reproductible avec la .commande. :(
Wildcard
1
@Wildcard malheureusement, après avoir fait un peu de recherche, il n'y a aucun moyen de créer une branche de répétition manuelle à .moins que vous n'utilisiez repeat.vim.
Qix - MONICA A ÉTÉ MANQUÉ
0

Pour insérer un caractère à la fin d'un mot (au lieu de la position du curseur), utilisez

nnoremap <C-a> a <ESC>r

Cela correspond à Ctrl + a, vous pouvez le faire correspondre à autre chose bien sûr.

J'ai les deux dans mon .vimrcjuste pour ne pas trop me bousculer :)

" Insert char at cursor position
nnoremap <C-i> i <ESC>r
" Append char after cursor position
nnoremap <C-a> a <ESC>r
Ruto Collins
la source