Ok, j'ai finalement fait le grand changement. Dans mon .zshenv, j'ai changé d'EDITEUR:
export EDITOR=vim
Il y a quelques questions que j'ai si mineures que je ne voulais pas leur poser de questions distinctes. Les voici:
Comment obtenir zsh pour faire la distinction entre le mode d'insertion et le mode de commande comme dans vim? De préférence, cela changerait le curseur d'un soulignement en un bloc comme dans vim, mais l'affichage du texte en bas fonctionnerait également.
Comment puis-je le faire agir plus comme vim? Par exemple, je préfère qu'il soit en mode commande par défaut et que je ne le quitte pas après une commande.
~
personnage inséré lorsque j'appuie sur laDelete
touchezsh
. J'ai posé une question à ce sujet ici: superuser.com/questions/997593/…Réponses:
1. ) (voir http://zshwiki.org/home/examples/zlewidgets et http://pthree.org/2009/03/28/add-vim-editing-mode-to-your-zsh-prompt/ ) :
Où:
"RPS" signifie "chaîne d'invite droite" et définit l'invite apparaissant sur le côté droit du terminal, et la syntaxe $ {variable / pattern / remplacement} est celle de "l'expansion des paramètres", voir: http: // mywiki .wooledge.org / BashSheet # Parameter_Operations .
'zle -N' est lié aux widgets définissables par l'utilisateur 'zle-line-init' et 'zle-keymap-select' (aux fonctions de shell du même nom), de sorte qu'ils seront appelés lorsque l'éditeur de ligne est initialisé et le clavier est modifié respectivement, voir: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC125 .
2. ) Je soupçonne que vous devez écrire un autre widget zsh pour ce faire, laissez-vous inspirer par le premier des deux liens pour le premier problème.
la source
La solution d'Akira présente le problème suivant lors de l'utilisation d'invites multilignes: lors du passage du mode ins au mode cmd, le redessin d'invite entraîne la suppression de quelques lignes de la sortie précédente (et la nouvelle invite s'affiche quelques lignes ci-dessus). Le nombre de lignes dépend du nombre de lignes que vous avez dans votre invite.
La façon de gérer cela est d'utiliser
zle-line-finish
, sans l'utiliserzle reset-prompt
. Un exemple:Et puis vous pouvez l'ajouter à votre invite de droite, par exemple:
C'est directement de mon blog à ce sujet:
la source
zle-line-init
widget en vain. Changé pour correspondre à ce que Pawel a fourni et au bingo!RPROMPT2
doit également être défini pour que l'état s'affiche sur les lignes de continuation. De plus, lorsque vous utilisez ceci, vous pouvez vouloir faire ensetopt transient_rprompt
sorte que les modes pour les lignes précédemment acceptées ne soient pas affichés.bindkey -e
), cela apparaît toujours[INS]
.ces deux lignes s'assurent qu'il démarre en mode commande
la source
Ce qui suit vous mettra en place avec un curseur modifié et une invite affichant le mode dans lequel vous vous trouvez. Vous pouvez changer
DEFAULT_VI_MODE
pourviins
ouvicmd
. Collez simplement ce qui suit dans un nouveau.zshrc
pour commencer:Remarque: je n'ai testé cela que dans Terminal.app (2.7.3) sur MacOS (10.12.6) avec zsh (5.3.1). De plus, si vous en ajoutez,
edit-command-line
le mode sera également correctement réglé.la source