2012-07-26 25 views
89

przeszedłem dość niedawno z Basha do zsh na Ubuntu i jestem całkiem zadowolony. Jednak jest coś, za czym tęsknię, a ja nie mogłem znaleźć tego samego.Komentarze w linii poleceń zsh

W Bash, gdy byłem wpisując długie komendy i zauważył musiałem uruchomić coś jeszcze wcześniej, po prostu musiałem wypowiedzieć ją jak w poniższym przykładzie:

[email protected]> #mysuperlongcommand with some arguments 
[email protected]> thecommandIhavetorunfirst #and then: then up up 
[email protected]> #mysuperlongcommand with some arguments #I just need to uncomment it! 

to jednak zupełnie o charakterze powtarzającym się sytuacja nie tak łatwe do rozwiązania, jak z zsh, zważywszy #mysuperlongcommand zostanie uruchomiony jako takie (i skutkuje. zsh: command not found: #mysuperlongcommand

Odpowiedz

132

Właśnie rozpoczął wypróbowanie zsh, wpadłem na ten problem zbyt. Możesz zrobić setopt interactivecomments, aby aktywować komentarze w stylu bash.

+0

To jest właściwa odpowiedź! Dzięki! –

+1

Możesz także zrobić 'set -k', jeśli jest to tylko jeden off. Ale użyłbym linii 'setopt' z tej odpowiedzi w moim zshrc –

+9

Czy istnieje powód, dla którego nie jest to zachowanie domyślne? – naught101

18

znalazłem się robi to często, jak dobrze, co robię, jest lot długiej komendy, należy wykonać polecenie, które potrzebuje. aby przejść najpierw, a następnie wkleić ponownie długie polecenie. Jest to łatwe: CTRL + U odcina polecenie do bufora Ctrl + Y wklejenie jej. Działa w zsh i bash.

+0

dobre obejście, thx :) – Rolf

+0

cóż, tak na prawdę moja droga to obejście, podczas gdy twoje rozwiązanie najlepiej pasuje;) – Rolf

+4

To nie powinna być akceptowana odpowiedź. Rozwiązanie, poniżej, które mówi, że należy użyć "interoptacji setopt" powinno być. Powodem tego jest to, że jeśli po prostu wycinasz bieżące polecenie, to nie jest ono w twojej historii zsh, a także wtedy nie możesz łatwo użyć wycinania i wklejania podczas wpisywania nowego polecenia bez nadpisywania polecenia, które próbujesz zapisać. – Douglas

34

użyć

bindkey "^Q" push-input 

od instrukcji zsh:

push całego prądu wielowierszowego skonstruować na stos buforowego i powrócić do najwyższego poziomu (PS1) szybkie. Jeśli aktualny konstruktor parsera jest tylko pojedynczą linią, jest to dokładnie tak, jak w przypadku linii papilarnych. Następnym razem, gdy edytor zostanie uruchomiony lub pojawi się get-line, konstrukcja zostanie zerwana z góry stosu buforów i załadowana do bufora edycji.

Więc wygląda to tak:

> long command 
Ctrl+Q => long command disappears to the stack 
> forgotten command 
long command reappears from stack 
> long command 

Ponadto, jeśli ustawisz opcję INTERACTIVE_COMMENTS (setopt INTERACTIVE_COMMENTS), będzie można używać komentarzy w powłokach interakcyjnych jak jesteś przyzwyczajony.

+0

Lubię swoją opcję, ale nie może to działać :(Czy istnieje sposób powinienem napisać wiązanie w pliku, czy jest to tylko dwie postacie,^i Q? Moje polecenie jest usuwane, ale nie wiem wiedzieć, jak zrobić to ponownie pojawi się na wejściu. –

+1

@Mihnea jeśli komenda znika wydaje się, że push-wejściowy działa. powinien pojawić się z powrotem po uruchomieniu następnego polecenia lub po prostu naciśnij klawisz enter. nie to zrobić? –

+0

Silly ja spodziewałem się trzeba nacisnąć strzałkę w górę. Dzięki, wielkie ładunkowe! –

Powiązane problemy