Binden Sie einen Schlüssel an die Zeilenumbrüche in Bash, ohne einen Befehl zu senden

895
cdosborn

Ich möchte drücken, M-jund readline muss den Cursor in die nächste Zeile setzen, ohne einen Befehl einzugeben. Ich sollte also in der Lage sein, einen Charakter auf den vorherigen zurückzubringen. Linie. Diese Antwort besagt, dass dies nicht möglich ist. Ich denke es ist falsch.

Sie können den Newline-Charakter töten und ihn ziehen. Damit wird erreicht, was ich tun möchte. Ich kann die Bindung jedoch nicht erstellen.

So testen Sie diesen Typ: echo <<EOFRETURNENTERC-cC-pM-1C-dC-c

Jetzt sollten Sie in einer Newline sein, geben Sie ein C-y. Es macht was ich will! Aber welcher Charakter ist das? Welche Bindung funktioniert in einer inputrc-Datei?

BEARBEITEN: Es stellt sich heraus, dass das Zeichen ein Zeilenvorschub ist. Immer noch nicht sicher, wie man es bindet.

6
Sie können einen Zeilenvorschub als Cv Cj eingeben. Dies ist vor allem für das Aufteilen von Zeilen während der Zeilenbearbeitung nützlich. Die verknüpfte Frage bezieht sich auf Auf- und Abwärtsbewegungen des Cursors in einer mehrzeiligen Zeilenbearbeitung. Ich bin mir nicht sicher, ob Sie das tun wollen. rici vor 9 Jahren 1
Ich fügte einige hinzu, um zu klären, ich möchte in der nächsten Zeile sein und zurückkehren können. cdosborn vor 9 Jahren 0
In meinem System scheinen die Verknüpfungen von @ rici das zu erreichen, wonach Sie fragen. Was passiert bei dir? Dennis vor 9 Jahren 1
Das ist das richtige Verhalten. Die folgende Bindung funktioniert "\ ej": "\ Cv \ Cj" `basierend darauf, wie mein Terminal Meta interpretiert. Bitte senden Sie mir eine Antwort, um @rici zu akzeptieren cdosborn vor 9 Jahren 0

1 Antwort auf die Frage

9
rici

Sie können ein Zeilenvorschubzeichen eingeben, ohne dass die Zeile akzeptiert wird, indem Sie " C-vquoted -insert" von readline verwenden, normalerweise gebunden an, gefolgt von dem Zeilenumbruchzeichen C-j.

"quoted-insert" ist auch nützlich, um ein Tabulatorzeichen einzugeben, ohne Tabulatorvervollständigung ( C-vC-i) aufzurufen .

Wow, das ist wirklich nützlich, um dies automatisch zu machen, wenn ich `\\` verwende, um die Zeilenumbrüche beim Erstellen eines mehrzeiligen Befehls zu umgehen? CMCDragonkai vor 8 Jahren 0
@cmcdragonkai: Nicht das ich wüsste, aber Sie könnten eine Tastenkombination an `\\\ Cj` binden. rici vor 8 Jahren 0