Puis-je utiliser la clé `<cmd>` dans le terminal Vim?

22

Dans le prolongement de mon autre question récente: comment mapper <cmd> - <shift> -f pour exécuter le plug-in Ack dans Vim?

Est-il possible d'utiliser la <cmd>clé dans Vim du tout?

Si Vim ne reconnaît pas la clé, est-il possible de remapper la clé en dehors de Vim (d'une manière ou d'une autre?) À quelque chose d'autre et de mapper cette clé dans Vim?

J'utilise iTerm 2 sur Lion avec Vim 7.3.

Merci!

jordelver
la source

Réponses:

12

<D-> ne fonctionne que dans MacVim.

Un rapide google renverra un tas de hacks et de solutions tierces. Toutes les solutions que je connais fonctionnent à l'échelle du système ou sont spécifiques à l'application: si vous Cmdremappez uniquement dans iTerm2, comment allez-vous ouvrir une nouvelle fenêtre ou un nouvel onglet? Avec… avec… la… SOURIS?

Je ne peux pas imaginer une bonne raison de remapper la Cmdclé à quoi que ce soit sur un Mac. Ce serait fou.

Vim n'est pas TextMate ou tout autre éditeur que vous avez utilisé auparavant. Il n'y a aucun moyen de transférer toutes vos anciennes habitudes de façon transparente, à bout portant.

Au lieu de perdre votre temps à essayer de transformer Vim et votre terminal en quelque chose qui n'est pas et ne peut pas être, vous devriez apprendre à utiliser et à personnaliser Vim avec sagesse. Tous vos Cmd+ Shift+ Ctrl+ Altcombos ne vous mènera nulle part. Surtout dans un terminal où Altest souvent problématique et Cmdinutilisable.

Pensez à utiliser <leader>( :help leader):

  • il est portable sur toutes les plateformes
  • il est moins sujet aux conflits avec votre système d'exploitation ou votre émulateur de terminal
  • il ouvre de nombreuses possibilités faciles à retenir
romainl
la source
Haha, merci grawity, c'est beaucoup plus propre maintenant.
romainl
Merci pour la réponse. J'avais entendu parler du <leader>mais je ne savais pas trop comment l'utiliser. Je suis d'accord avec votre point sur la portabilité, cela fait partie de la raison pour laquelle je déménage à Vim. Merci.
jordelver
Vous pouvez remapper Cmdà Controlen iTerm2, puis dans la même fenêtre, ajouter des raccourcis pour ouvrir un nouvel onglet avec ^t, etc. fonctionne tout alors!
Sean Clark Hess
5

J'ai trouvé qu'iterm2 avait une option dans les paramètres du clavier pour faire ce genre de chose. Par exemple, ci-dessous, j'ai mappé la commande-entrée pour être: wq

entrez la description de l'image icientrez la description de l'image ici

Neil McGill
la source
Merci pour cette solution. C'est exactement ce que je cherchais. Je connais <Leader>, mais je pense que certaines choses comme l'enregistrement d'un fichier devraient être universelles.
Dmitry Biletskyy
4

Pour les commandes simples, il existe une solution en envoyant le code hexadécimal approprié au terminal. Par exemple, je voulais enregistrer dans vim en appuyant sur cmd-s. J'ai mappé cmd-sdans iterm2 pour envoyer le code hexadécimal 0x13qui est le code pour ctrl-s, puis j'ai mappé ctrl-sdans :wqin vim.

jhickner
la source
Comment faites-vous exactement une telle chose? Merci.
nunos
N'a pas fonctionné pour moi le code hexadécimal 0x13: / imgur.com/RjxOoLY
michalzuber
Pour savoir comment faire, voir les photos ci-dessous - merci @jhickner pour l'idée de regarder iTerm2
Neil McGill
3

La solution 2016 est d'utiliser le programme open-source Karabiner qui vous permet de remapper le modificateur et d'autres touches avec une granularité très fine , par exemple

  • Remappez uniquement la touche gauche ⌘ Cmd ou Option.
  • Remappez une clé uniquement pour des applications spécifiques, par exemple uniquement à l'intérieur du terminal, d'Emacs ou d'une machine virtuelle.

Par exemple, voici comment remapper la ⌘ Cmdtouche gauche pour n'agir Ctrl qu'à l'intérieur du terminal (et laisser la droite inchangée afin que vous puissiez toujours l'utiliser, par exemple, ⌘ Cmd + Tabpour basculer entre les applications):

mousqueton-capture d'écran

dorserg
la source
Impressionnant. Maintenant, je peux l'utiliser correctement dans Vim, bien que la commande (gauche) + tab ne soit pas "alt tab". Je peux utiliser la bonne commande, mais y a-t-il un moyen de garder cela d'une manière ou d'une autre?
meder omuraliev