[fixed] zsh: vi-keybindings und letztes argument heranholen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mbant
Beiträge: 30
Registriert: 19.02.2005 18:07:21

[fixed] zsh: vi-keybindings und letztes argument heranholen

Beitrag von mbant » 27.01.2010 16:34:16

Ich verwende die zsh mit vi keybindings (bindkey -v). Ein Feature, das ich seitdem vermisse ist das zurueckholen des letzten arguments, welches im emacs-mode mit ESC-. passiert. Beispiel:

Code: Alles auswählen

$ ls bla.txt
$ cp <ESC-.> bla2.txt
hier wird bla.txt zurueckgeholt. Allerdings ist ja ESC im vi-modus dazu da, in den command-mode zu wechseln -- ich haette das zurueckhol-feature trotzdem gerne. Jemand eine Idee?
Zuletzt geändert von mbant am 17.03.2010 10:54:14, insgesamt 1-mal geändert.
Hm-Dedelede-Bap-Du-Bap

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: zsh: vi-keybindings und letztes argument heranholen

Beitrag von Meillo » 27.01.2010 18:20:14

btw: Im Emacs-Mode ist <Alt-.> das gleiche wie <Esc-.>. Das ändert aber nichts daran, dass es im vi-Mode nicht funktioniert.

Ich selbst bin vor ein paar Monaten komplett auf den vi-Mode umgestiegen und hatte zuvor <Alt-.> sehr oft verwendet, verstehe dein Problem also *sehr* gut. Eigentlich war es das größte Problem beim Umstieg.

Jetzt verwende ich die ksh. Dort holt _ im Commandmode das letzte Wort (d.h. bis zum letzten Whitespace).

Die bash kennt _ auch; dort wird jedoch das letzte Wort aus Shell-Sicht geholt (d.h. Quotes werden berücksichtigt).

Das entspricht jeweils dem Verhalten bei <Alt-.>.

Die zsh kennt aber kein _ im vi-Mode.


Aber durchsuche die Manpage zu zshzle(1) mal nach ``insert-last-word'', dann wirst du fündig. Das kann man sicher irgendwie binden. (Nur kenne ich mich mit der zsh nicht aus.)
Use ed once in a while!

teerer

Re: zsh: vi-keybindings und letztes argument heranholen

Beitrag von teerer » 27.01.2010 22:24:18

woll
Zuletzt geändert von teerer am 11.03.2013 22:58:05, insgesamt 1-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: zsh: vi-keybindings und letztes argument heranholen

Beitrag von Meillo » 27.01.2010 23:33:35

teerer hat geschrieben:$_ loest dein Problem.
Nein, da $_ erst bei der Ausführung durch den Wert ersetzt wird. D.h. man dann das Argument nicht bearbeiten. Jedenfalls wollte ich das oft.

Beispiel:

Code: Alles auswählen

touch eine-datie
mv [Alt-.]
mv eine-datie [Alt-.]
mv eine-datie eine-datie [edit]
mv eine-datie eine-datei [enter]
(Beim mv habe ich die verschiedenen Bearbeitungsschitte in einzelne Zeilen geschrieben.)
Use ed once in a while!

chrisbra
Beiträge: 122
Registriert: 19.10.2005 09:36:09
Wohnort: Sachsen-Anhalt
Kontaktdaten:

Re: zsh: vi-keybindings und letztes argument heranholen

Beitrag von chrisbra » 02.02.2010 08:27:21

mbant hat geschrieben:Ich verwende die zsh mit vi keybindings (bindkey -v). Ein Feature, das ich seitdem vermisse ist das zurueckholen des letzten arguments, welches im emacs-mode mit ESC-. passiert. Beispiel:

Code: Alles auswählen

$ ls bla.txt
$ cp <ESC-.> bla2.txt
Da ist man ein paar Tage nicht da und schon verpasst man die interessantesten Threads.

bindkey -M vicmd '\M.' insert-last-word
oder
bindkey -M vicmd "\e." insert-last-word
Meine Whishlist
:wq!

mbant
Beiträge: 30
Registriert: 19.02.2005 18:07:21

Re: zsh: vi-keybindings und letztes argument heranholen

Beitrag von mbant » 17.03.2010 10:53:41

Hi chrisbra,

und danke!

Ich habe das noch hinzugefuegt:

Code: Alles auswählen

bindkey -M viins "\e." insert-last-word
Die zsh ist--mal wieder--schlau genug, um in diesem Fall im Insert-Mode zu bleiben.
Hm-Dedelede-Bap-Du-Bap

AopicieR
Beiträge: 81
Registriert: 05.02.2009 09:52:53

Re: zsh: vi-keybindings und letztes argument heranholen

Beitrag von AopicieR » 22.03.2010 11:47:55

Meillo hat geschrieben:
teerer hat geschrieben:$_ loest dein Problem.
Nein, da $_ erst bei der Ausführung durch den Wert ersetzt wird. D.h. man dann das Argument nicht bearbeiten. Jedenfalls wollte ich das oft.
$_ kenne ich nicht, aber !$<tab> funktioniert so, wie Du es willst. Die zsh-completion ist da recht cool, auch z.B. wilcards kann man ja durch <tab> expanden lassen und dann bearbeiten. Aber jetzt hast Du ja eine für Dich wahrscheinlich bessere Lösung gefunden.

Antworten