Di solito i terminali consentono la selezione del testo con il mouse, ma la shell non ne è consapevole. Così, purtroppo né bash
, zsh
, fish
nè es
in grado di supportare l'editing basato sul mouse. Penso che per farlo, avrebbero bisogno di avere un maggiore controllo sul terminale.
Tuttavia (e questo è un po 'allungato) se apri Vim o GVim, e quindi inserisci i comandi della shell usando:
:!...
quindi puoi fare clic con il mouse per passare a qualsiasi punto della linea . (Dovrai :set mouse=a
prima se questo non è già abilitato.) I tasti di modifica in questa modalità possono essere visualizzati con:help cmdline-editing
Vim ha anche una modalità cronologia dei comandi abbastanza potente, che può essere raggiunta colpendo q:. Da lì puoi strappare, cancellare e incollare usando i comandi in modalità normale di Vim. In questa modalità, è possibile ottenere la selezione con il mouse e quindi eliminare la funzione desiderata (premendo d).
Un avvertimento significativo qui è che Vim in realtà non mantiene in esecuzione una sessione di shell live. Ogni comando eseguito verrà eseguito in un processo figlio. Pertanto, eventuali modifiche apportate alle variabili di ambiente o alle opzioni della shell dal processo figlio andranno perse.
Detto questo, è possibile modificare le variabili di ambiente all'interno del processo di Vim e utilizzarle dalla riga di comando di Vim e verranno persino esportate in processi figlio:
:let $FOO="bar" " the $ and the quotes are mandatory here
:echo $FOO " Vim's own echo command
bar
:!echo "$FOO" " Passing the variable to a shell command
bar
:!bash " Opening a child shell
$ echo "$FOO"
bar
Quindi, se sei disposto a far finta che Vim sia in realtà una sorta di strana shell, allora puoi goderti le sue funzionalità di editing avanzate! Probabilmente il più grande svantaggio è che dovrai avviare ogni comando digitando :!
oq:
Oh, a proposito, se vuoi ottenere l'output del comando shell nel tuo attuale buffer Vim, puoi farlo in questo modo (ma attenzione che ostruirà la tua linea corrente):
:,!ls