Come modificare la riga di comando nell'editor a schermo intero in ZSH?


52

In bash, usando la modalità vi, se premo Esc, la vmia riga di comando corrente viene aperta nell'editor specificato da $EDITORe sono in grado di modificarlo a schermo intero prima di 'salvare' il comando per essere restituito alla shell ed eseguito.

Come posso ottenere un comportamento simile in zsh? Colpire vin modalità comando provoca una campana e non ha alcun effetto apparente, nonostante EDITORsia impostata la variabile d'ambiente.

Risposte:


36

Vedi edit-command-linein zshcontrib.

bindkey -M vicmd v edit-command-line

13
(Solo per chiarire): per abilitare il edit-command-line"widget" avrai bisogno di qualcosa di simile autoload edit-command-line; zle -N edit-command-linea uno dei tuoi file zsh init (vedi la sezione Funzioni ZLE della zshcontribdocumentazione ).
Chris Johnsen,

Come si attiva questo una volta che è a posto? Il bindkey nella risposta in stile emacs ha senso per me. Ma non riesco a trovare riferimenti su ciò che bindkey -M vicmd vimposta.
Mat Schaffer,

1
@MatSchaffer Come Bash: se sei in modalità vi, premi <ESC>per accedere alla modalità comando dalla modalità inserimento e quindi valla modalità visiva ( Meta-vè la stessa), o solo vse sei già in modalità comando. Se stai usando la modalità Emacs, la rilegatura tipica è C-x C-e.
effimero

1
Rimappare il tasto v significa che non puoi più usare la modalità visiva, quindi preferisco rimappare sulla barra spaziatrice (che non fa nulla di utile in modalità normale) conbindkey -M vicmd ' ' edit-command-line
gib

37

Nel caso in cui preferisci le combinazioni di tasti Emacs:

autoload -z edit-command-line
zle -N edit-command-line
bindkey "^X^E" edit-command-line

9
L' ^x^eassociazione sembra essere un valore predefinito con l' attuale .oh-my-zsh , che è estremamente bello.
quodlibetor,

^ x ^ e è esattamente quello che stavo cercando.
jmreicha,

1
Configurazione simile per Prezto fino a quando il editormodulo è caricato.
AL il X

23

È possibile utilizzare fcper modificare l'ultimo comando nella cronologia. Non è lo stesso che modificare lo stesso comando, ma un rapido tocco sul tasto Invio rende l'ultimo comando nella cronologia.


15

Questa è la configurazione completa che ho aggiunto al mio ~/.zshrcper ottenere lo stesso comportamento da bash:

export VISUAL=vim
autoload edit-command-line; zle -N edit-command-line
bindkey -M vicmd v edit-command-line

Secondo i commenti precedenti, questo è configurato per impostazione predefinita se si utilizza Oh my ZSH o Prezto . Quest'ultimo richiede che il editormodulo sia caricato e vio vimselezionato per la modalità di comando.
AL il X

Voterei per rendere questa la risposta accettata, ha risolto la mia domanda con tutta la configurazione descritta. Grazie.
Laurent,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.