Zwykle terminale umożliwiają zaznaczanie tekstu za pomocą myszy, ale powłoka nie jest tego świadoma. Tak niestety nie bash
, zsh
, fish
ani nie es
może obsługiwać edycję myszy oparte. Myślę, że aby to zrobić, musieliby przejąć większą kontrolę nad terminalem.
Jednak (i to jest trochę rozciągnięte), jeśli otworzysz Vima lub GVima, a następnie wprowadzisz polecenia powłoki za pomocą:
:!...
następnie możesz kliknąć myszką, aby przejść do dowolnego miejsca w linii . (Musisz :set mouse=a
najpierw, jeśli nie jest to jeszcze włączone). Klawisze edycji w tym trybie można zobaczyć za pomocą:help cmdline-editing
Vim ma również dość potężny tryb historii poleceń, do którego można dotrzeć, naciskając q:. Stamtąd możesz szarpać, usuwać i wklejać za pomocą poleceń trybu normalnego Vima. W tym trybie możesz wybrać mysz za pomocą myszy, a następnie usunąć wybraną funkcję (naciskając d).
Istotnym zastrzeżeniem jest to, że Vim tak naprawdę nie utrzymuje uruchomionej sesji powłoki na żywo. Każde wykonane polecenie zostanie uruchomione w procesie potomnym. Tak więc wszelkie zmiany wprowadzone do zmiennych środowiskowych lub opcji powłoki przez proces potomny zostaną utracone.
To powiedziawszy, możesz modyfikować zmienne środowiskowe z poziomu procesu Vima i używać ich z wiersza poleceń Vima, a nawet będą eksportowane do procesów potomnych:
: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
Jeśli więc chcesz udawać, że Vim jest dziwną powłoką, możesz cieszyć się jego zaawansowanymi funkcjami edycji! Prawdopodobnie największą wadą jest to, że trzeba będzie rozpocząć każdą komendę pisania albo :!
czyq:
A tak przy okazji, jeśli chcesz uzyskać wynik polecenia powłoki w bieżącym buforze Vima, możesz to zrobić w ten sposób (ale uważaj, to zablokuje twoją bieżącą linię):
:,!ls