Ok, então finalmente fiz a grande mudança. No meu .zshenv, mudei meu EDITOR:
export EDITOR=vim
Há algumas perguntas que são tão pequenas que não quero iniciar perguntas separadas para elas. Aqui estão eles:
Como faço para o zsh distinguir entre o modo de inserção e o modo de comando, como no vim? De preferência, isso mudaria o cursor de um sublinhado para um bloco como no vim, mas a exibição de texto na parte inferior também funcionaria.
Como faço para agir mais como o vim? Por exemplo, eu prefiro que esteja no modo de comando por padrão e não saia depois de um comando.
~
personagem ficar inserido quando eu pressionar aDelete
chave nozsh
. Eu fiz uma pergunta sobre isso aqui: superuser.com/questions/997593/...Respostas:
1. ) (consulte http://zshwiki.org/home/examples/zlewidgets e http://pthree.org/2009/03/28/add-vim-editing-mode-to-your-zsh-prompt/ ) :
Onde:
"RPS" significa 'string de prompt direita' e define o prompt que aparece no lado direito do terminal, e a sintaxe $ {variable / pattern / Replacement} é a de 'expansão de parâmetros', consulte: http: // mywiki .wooledge.org / BashSheet # Parameter_Operations .
'zle -N' faz com que os widgets definíveis pelo usuário 'zle-line-init' e 'zle-keymap-select' sejam vinculados (para shell funções de mesmo nome), para que eles sejam chamados quando o editor de linha for inicializado e o mapa de teclas é alterado respectivamente, consulte: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC125 .
2. ) suspeito que você precise escrever outro widget zsh para fazer isso, inspire-se no primeiro dos dois links para o primeiro problema.
fonte
A solução da akira apresenta o seguinte problema ao usar prompts de várias linhas: ao passar do modo ins para o cmd, o prompt redesenhado faz com que poucas linhas sejam excluídas da saída anterior (e o novo prompt é exibido poucas linhas acima). Quantas linhas depende de quantas linhas você tem em seu prompt.
A maneira de lidar com isso é usar
zle-line-finish
, sem usarzle reset-prompt
lá. Um exemplo:E então você pode adicioná-lo ao seu prompt direito, por exemplo:
Isso é direto do meu post sobre isso:
fonte
zle-line-init
widget sem sucesso. Mudou para combinar com o que Pawel forneceu e bingo!RPROMPT2
também deve ser definido para que o status seja exibido nas linhas de continuação. Além disso, ao usar isso, convém fazersetopt transient_rprompt
com que os modos das linhas aceitas anteriormente não sejam exibidos.bindkey -e
), ele ainda será exibido[INS]
.essas duas linhas garantem que ele inicie no modo de comando
fonte
O abaixo irá configurá-lo com um cursor modificado e um prompt exibindo em qual modo você está. Você pode alterar
DEFAULT_VI_MODE
paraviins
ouvicmd
. Basta colar o abaixo em um novo.zshrc
para começar:Nota: Eu testei isso apenas no Terminal.app (2.7.3) no MacOS (10.12.6) com zsh (5.3.1). Além disso, se você adicionar
edit-command-line
, o modo também será definido corretamente.fonte