Vim
est mon éditeur de texte préféré lorsque je programme, et donc je rencontre toujours un problème particulièrement ennuyeux.
Souvent, lorsque je dois rapidement enregistrer le tampon et passer à une autre tâche diverse, je fais le typique
:w
Cependant, je - ce qui semble être plus de 50% du temps - parviens toujours à capitaliser cela :w
. Naturellement, vim me crie dessus parce que W
c'est une commande invalide
E492: Not an editor command: W
Ma question est de savoir comment un alias deux-points-commandes dans vim . En particulier, pourriez-vous illustrer comment créer un alias W
vers w
.
Je connais le processus de mappage des clés vers certaines commandes . Malheureusement, ce n'est pas ce que je recherche.
:W
vous pourriez une carte une clé pour effectuer la sauvegarde. Si vous êtes habitué à un programme qui enregistre avec Ctrl-s, il y a ces mappages de $ VIM / mswin.vim:" Use CTRL-S for saving, also in Insert mode
noremap <C-S> :update<CR>
vnoremap <C-S> <C-C>:update<CR>
inoremap <C-S> <C-O>:update<CR>
Réponses:
Pour ne pas modifier l’achèvement, essayez d’utiliser
, il remplacera
W
en ligne de commande parw
, mais seulement s'il n'est ni suivi ni précédé d'un caractère mot, il:W<CR>
sera donc remplacé par:w<CR>
, mais:Write
ne le fera pas. (Notez que cela affecte toutes les commandes qui correspondent, y compris celles auxquelles vous ne vous attendez peut-être pas, par exemple, la commande:saveas W Z
sera remplacée par:saveas w Z
, alors soyez prudent avec cela.)Mettre à jour
Voici comment je l'écrirais maintenant :
En tant que fonction:
Cela vérifie que le type de commande est
:
et la commande estW
, donc c'est plus sûr que justecnoreabbrev W w
.la source
:%s/W/foo/g<CR>
:%s/w/foo/g<CR>
:cnoreabbrev <expr> W getcmdtype()==':'&&getcmdline()=~#'^W'?'w':'W'
Avec une recherche supplémentaire, j'ai constaté que quelqu'un avait posé à peu près la même question que moi.
fera l'affaire.
Veuillez noter que, comme noter souligne Richo , la commande utilisateur doit commencer par une majuscule.
la source
:command AliasName string of command to be aliased
command
argument, comme-nargs
,-complete
etc.:Q!
ou:W!
?:command W w
dans le.vimrc
fichier.Je trouve que mapper la
;
clé:
serait une meilleure solution et vous rendrait plus productif pour taper d'autres commandes.la source
t
ouf
, vous pouvez généralement utiliser;
pour passer à l'occurrence suivante. On peut mapper en toute sécurité dans l'autre sens, même si vous avez mappé un point-virgule sur deux points. Il n'y aura pas de boucle d'alias.nnoremap : ;
La meilleure solution consiste à écrire une fonction personnalisée pour gérer les abréviations qui n'ont lieu qu'au début de la barre de commandes.
Pour cela, ajoutez ce qui suit à votre fichier vimrc ou ailleurs.
Quelques abréviations utiles du matériel source où j'ai trouvé ce truc:
la source
string()
qui fait la même chose que la vôtreSingle_quote()
.Vous souhaitez peut-être mapper l'une de vos touches de fonction (F1..F12) sur: w? Ensuite, mettez ceci dans votre .vimrc:
(ctrl-o en mode insertion passe temporairement en mode normal).
la source
Supposons que vous souhaitiez ajouter un alias pour la commande tabnew dans gvim. vous pouvez simplement taper la commande suivante dans votre fichier .vimrc (si ce n'est pas dans le dossier personnel, créez-en un)
la source
:saveas t example
le remplacement d' une commande par:saveas tabnew example
Le plus sûr et le plus simple est un plugin tel que cmdalias.vim ou ma récente mise à jour vim-alias de celui-ci qui prend en compte
:sil(ent)(!)
ou:redi(r)
,'<,'>
pour la sélection visuelle actuelle,la source