J'ai essayé de mapper en ajoutant la ligne ci-dessous à .vimrc, mais cela ne fonctionne pas. J'ai vérifié que le .vimrc est chargé par Vim.
map <Alt-D> <C-D>
y a-t-il une erreur dans ce mappage?
J'ai essayé de mapper en ajoutant la ligne ci-dessous à .vimrc, mais cela ne fonctionne pas. J'ai vérifié que le .vimrc est chargé par Vim.
map <Alt-D> <C-D>
y a-t-il une erreur dans ce mappage?
encoding
modifications après l'exécution du mappage, ce que vous obtenez de vos touches Alt peut ne pas correspondre à ce que vous avez initialement défini.
Réponses:
Pour les utilisateurs de Mac là-bas: pour mapper ALT + hjkl, utilisez à la place le caractère réel généré (découvrez quel caractère utilisant la combinaison en mode INSERT), par exemple avec mon clavier j'obtiens:
<ALT+j> ==> ª
<ALT+k> ==> º
etc. Solution trouvée ici sur StackOverflow.
J'ai utilisé ceci pour déplacer les lignes de haut en bas avec ALT + k \ j, en utilisant ceci sur mon .vimrc:
nnoremap ª :m .+1<CR>==
nnoremap º :m .-2<CR>==
inoremap ª <Esc>:m .+1<CR>==gi
inoremap º <Esc>:m .-2<CR>==gi
vnoremap ª :m '>+1<CR>gv=gv
vnoremap º :m '<-2<CR>gv=gv
comme expliqué ici .
J'espère que c'est utile, profitez de Vim :)
ADDENDUM DE Dylan_Larkin (2019): Pour que cela fonctionne sur un Mac, " Utiliser l'option comme clé méta " doit être désactivé dans Terminal-> Préférences-> Clavier
cat
. Tapez simplement cat
et dans la fenêtre du chat la combinaison de touches que vous voulez. J'ai découvert que les crochets alt + sont «et» sur mon mac.
nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down>
sed -n l
pour voir la sortie de <Ak> et <Aj> avant de configurer le mappage. Dans mon cas, <Aj> est ∆
et <Ak> est˚
Use Option as Meta Key
ou sur le profil iTerm ⌥ key to Esc+
se comportera comme d'habitude (comme sous Linux / Unix). Vous n'avez donc pas besoin de définir sur Vim la carte <^[j>
, il suffit de la mapper sur <A+j>
ou <M+j>
et cela fonctionne.
:help key-notation
décrit le format à utiliser pour mapper différentes clés. Dans le cas de alt, vous pouvez utiliser soit <A-
ou <M-
. Donc votre cartographie serait
map <M-d> <C-d>
Je recommanderais également d'utiliser la nore
variante de :map
(par exemple noremap
) à moins que vous ne souhaitiez explicitement autoriser la réévaluation du côté droit pour les mappages.
<A-d>
. Vous devez probablement modifier les paramètres de votre terminal pour qu'il envoie en <A-d>
tant que <Esc>d
.
Je ne suis plus sûr que ce soit "possible". Veuillez lire la mise à jour ci-dessous.
Oui, vous pouvez même dans le terminal vim, mais il n'y a pas de vraie réponse fourre-tout . Vous devez essentiellement suivre deux étapes:
Assurez-vous que la <M-d>
notation existe et mappez exactement ce que votre terminal entre ( ^[
est le caractère d'échappement):
$ cat
^[d
$
" in your .vimrc
execute "set <M-d>=\ed"
" you have to use double quotes!
Mappez quelque chose à votre combinaison nouvellement "créée":
noremap <M-d> :echo "m-d works!"<cr>
Comprenant comment cela fonctionne, vous pouvez étendre cette "astuce" à d'autres combinaisons "étranges", par exemple, j'utilise des termites, et vim ne reconnaît pas <S-F1>
, en utilisant le chat que j'obtiens ^[[1;2P
. Ensuite, dans mon vimrc je fais:, execute "set <S-F1>=\e[1;2P"
et puis je peux le mapper à n'importe quoi.
Remarque: je ne sais pas pourquoi, mais pour certaines personnes qui utilisent des \<Esc>
œuvres au lieu de \e
.
Mise à jour (février 2016)
Selon le terminfo que votre terminal exécute, vous pourriez peut-être ... dans la plupart des terminaux, "alt + h", par exemple, est mappé ^[h
, ce qui est: "escape + h". Il pourrait donc écraser les clés. Je viens d'essayer (à nouveau) et cela semble fonctionner, mais je pense que c'est une implémentation très boguée et sujette aux erreurs.
Néanmoins, pour les plus courageux, voici un plugin expérimental:
execute "set...
trucs, vous pouvez simplement utiliser directement set <M-d>=^[d
. Le ^[
est en fait un caractère d'échappement entré avec C-v-Esc
. Cela était nécessaire dans rxvt / urxvt, mais xterm ne devrait pas avoir besoin de traitement spécial. Plus d'informations sur ce sujet dans le wiki vim .
Map Alt Key dans Vim sur Mac OSx:
Commencez par afficher le code clé que votre terminal envoie à vim:
$ sed -n l
^[[1;9D
Dans l'exemple ci-dessus, j'ai exécuté la commande et appuyé sur Alt + Left.
La ^[[1;9D
séquence d'échappement est envoyée à vim, nous pouvons donc l'utiliser pour notre mappage.
map <Esc>[1;9D
Option
touche gauche ( ⌥
) configurée comme Esc+
dans iTerm2, je pourrais mapper alt+q
pour quitter vim: nnoremap <silent> <Esc>q :qa!<cr>
Votre terminal peut ne pas transmettre "correctement" l'Alt-D. Vous pouvez utiliser CV pour obtenir la séquence d'échappement réelle envoyée à Vim et l'utiliser pour créer votre mappage. Ie, éditez votre .vimrc et remplacez le réel en tapant la séquence suivante "CV Alt-D" afin que vous ayez la séquence d'échappement correcte dans votre vimrc. Cela ne fonctionnera pas si votre terminal n'envoie rien à vim.
Mon terminal produirait des ^[x
commandes (par exemple pour alt-x). Ce qui l'a fait fonctionner dans Vim était ce petit script de vim.wikia.com :
for i in range(97,122)
let c = nr2char(i)
exec "map \e".c." <M-".c.">"
exec "map! \e".c." <M-".c.">"
endfor
Ajoutez à .vimrc pour corriger tous les mappages de touches alt.
Pour faire suite à la réponse de Bruno pour les utilisateurs de Mac, essayez de vous assurer que votre touche d'option est mappée à Esc+
.
Cela vous donnera le comportement "normal" de la A
touche option ( ) dans Vim.
Par exemple, dans iterm2
, cette option se trouve sous Preferences > Profiles > Keys
:
nnoremap <Esc>j :m .+1<CR>==
et similaire ...
Bonjour après aucune bonne solution après des années de test de tout ce qui précède sur mac, j'ai continué à chercher.
Voici ma solution:
Pour créer une combinaison de touches incluant Alt, vous devez déclarer la combinaison dans la préférence> clavier et utiliser cette combinaison dans le fichier de configuration de vim (cochez l'option utiliser comme touche méta).
La sortie doit être un caractère inhabituel (non a
par exemple) afin de ne pas remplacer un caractère normal.
Dans l'exemple ci-dessous, vous devriez pouvoir tout à fait vim avec ALT-Up.
paramètre vim:
paramètre mac: