Powłoki (przynajmniej to, co wiem) mają naprawdę złe możliwości edycji poleceń.
Na przykład:
- Nie mogę skierować kursora do żadnego punktu polecenia.
- Nie mogę zaznaczyć i cofnąć / usunąć / zamienić tekstu w poleceniu.
Obecnie są one tak rozpraszające, że używam gedit do edytowania poleceń przed wklejeniem ich do terminala.
Czy istnieje jakieś rozwiązanie, które jest dla nich dobre?
command-line
bash
gnome-terminal
UniversallyUniqueID
źródło
źródło
Odpowiedzi:
Bash jest w tym całkiem niezły. Musisz tylko nauczyć się jego skrótów. Na przykład (w domyślnym trybie emacs):
I jest ich o wiele więcej. Przeczytaj,
man readline
aby zobaczyć, co jeszcze jest dostępne. Możesz przypisać różne skróty, umieszczając je w~/.inputrc
. Na przykład, aby dodać Ctrl+ Leftjedno słowo do tyłu i Ctrl+ Rightjedno słowo do przodu, dodaj to do~/.inputrc
:Aby dowiedzieć się, co oznaczają te dziwne kody, naciśnij Ctrl+, Va następnie naciśnij klawisz, którego chcesz użyć. Jeśli spróbujesz z Ctrl+ Right, zobaczysz
^[[1;5C
. Wymienić^[
z\e
w~/.inputrc
.Możesz także zajrzeć do innych powłok. Popularne „nowoczesne”, bogate w funkcje powłoki to:
źródło
gnome-terminal
musisz użyćESC
przycisku zamiastALT
do nawigacji o jedno słowo do przodu i do tyłu. . .. lub przejdź na terminal, który nie używa Alt w menu aplikacji. . . jakMożesz edytować puste lub częściowo wpisane polecenie w wybranym edytorze, ustawiając
EDITOR
go w wybranym edytorze i naciskając CTRLklawisze X+ + Elub CTRL+ X/ CTRL+ E, które otwierają aktualnie edytowaną linięEDITOR
;Na przykład ustawienie
EDITOR
nagedit
spowoduje, że CTRL+ X+ Ei CTRL+ X/ CTRL+ Eotworzą bieżącą linię w Gedit.Aby to trwałe rozwiązanie, można ustawić
EDITOR
w~/.bashrc
.Pozwala to na użycie nawet w pełni flegowanego graficznego edytora tekstu do edycji polecenia; aby uruchomić edytowane polecenie, po prostu zapisz i zamknij dokument.
Tę samą funkcję można włączyć w Zsh, dodając następujące elementy do
~/.zshrc
:źródło
fc
polecenia, jeśli ustawiona jest zmienna FCEDIT. Dobra odpowiedź !fc
otwiera poprzednie polecenie (które jest jeszcze fajniejsze w pewien sposób). Nie wiedziałem o tym, dzięki!Terminale same w sobie nie mają możliwości edycji tekstu. Terminale zapewniają obszar tekstu i łączą klawiaturę z czymś. Ale coś , co uruchamiasz w terminalu, określa, co może zrobić.
Powłoki takie jak
bash
zwykle są pierwszą rzeczą, którą można uruchomić w terminalu. Ponieważ powłoki działają w oparciu o polecenia, możesz edytować tylko bieżące polecenie. bash zapewnia doskonałą edycję poleceń w porównaniu do powłoki Bourne'a, acsh
nawetksh
nie jest to coś, z czym chciałbyś edytować nawet krótką historię.Edytory tekstu to jedno z poleceń, które można wywoływać w powłoce. Wiodącymi przykładami są vim i emacs .
vim
lubemacs
da ci możliwość edycji prawie wszystkiego. Oba zawierają wbudowane środowiska programistyczne do rozszerzania ich możliwości na każdy napotkany problem.Dlatego rozwiązaniem jest lepsze zrozumienie działania tych narzędzi i wybranie odpowiedniego dla danego zadania .
źródło
Zwykle terminale umożliwiają zaznaczanie tekstu za pomocą myszy, ale powłoka nie jest tego świadoma. Tak niestety nie
bash
,zsh
,fish
ani niees
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:
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ę):
źródło