2009-11-24 4 views
6

En vim, quand je tape :wq c'est presque toujours un accident qui s'est produit quand j'essaie d'entrer :w. Je voudrais désactiver :wq.Comment désactiver une commande intégrée dans vim

Le plus proche que j'ai trouvé est cmap, mais il a un comportement étrange. Si je fais quelque chose comme

:cmap wq w 

Je ne peux plus même entrée :wq; il suffit de remapper la séquence de touches wq à w en mode commande. Maintenant, je ne peux pas, par exemple, entrer une commande search/replace sur une chaîne contenant wq.

Je voudrais simplement alias la commande exacte :wq à :w ou un no-op. Y a-t-il un moyen de faire cela?

EDIT: clarifié pourquoi :cmap est pas une option pour moi

Répondre

0

Il semble que la meilleure option est de simplement vous habituer à un comportement :cmap. Dans l'événement rare, je veux entrer le clavier seqeunce wq Je peux simplement frapper wq, attendez une seconde, puis appuyez à nouveau sur q. J'ai trouvé this possible solution mais c'est trop complexe à mon goût.

2

Une meilleure solution peut être:

:cabbrev wq w 

Mais je ne sais pas pourquoi cmap ne fonctionne pas comme exceptés. En fait, je l'avais tracé une de mes touches de fonction pour enregistrer des fichiers:

:map <F2> :w<CR> 
:nmap <F2> <ESC>:w<CR>i 

MISE À JOUR: faute de frappe corrigée dans la première commande.

MAJ2: solution possible:

:cabbrev wq<CR> w 

HTH

+0

Pouvez-vous s'il vous plaît expliquer: cabbrew? –

+2

Je pense que ce devrait être ': cabbrev'. ': cabbrev wq w' changera wq en w après avoir appuyé sur space ou enter, donc cela fera': wq' do ': w'. Voir ': help: cabbrev' et': help: ab' pour plus d'informations. – DrAl

+0

Désolé, je pense que je n'étais pas assez clair dans ma question. Si vous faites: cmap et il semble aussi: cabbrew, cela signifie que la séquence de touches "wq" en mode commande est mappée à autre chose que "wq". Donc, vous ne pouvez pas, par exemple, faire une recherche/remplacer sur une chaîne contenant "wq". Tout ce que je voudrais faire est de le faire si je saisis la commande exacte: wq, il est aliasé à "w" ou non-op. – user85509

Questions connexes