Привязать ключ к новой строке в Bash, не отправляя команду

808
cdosborn

I want to press M-j and have readline place my cursor on the next line without entering a command. Thus I should be able to go back a character onto the prev. line. This answer states that it cannot be done. I think it's wrong.

You can kill the newline character, and yank it. This achieves what I want to do. However I just can't create the binding.

To test this out type: echo <<EOFRETURNENTERC-cC-pM-1C-dC-c

Now you should be on a newline, type C-y. It does what I want! But what character is this? What binding works in an inputrc file?

EDIT: It turns out the character is a line-feed. Still not sure how to bind it.

6
Вы можете ввести новую строку как Cv Cj, что в основном полезно для разбивки строк при редактировании строк. Связанный вопрос касается движений курсора вверх и вниз при многострочном редактировании. Я не уверен, что вы хотите этим заниматься. rici 9 лет назад 1
Я добавил некоторые, чтобы уточнить, я хочу быть на следующей строке и иметь возможность вернуться. cdosborn 9 лет назад 0
В моей системе ярлыки @ rici, кажется, достигают того, что вы просите. Что происходит у тебя? Dennis 9 лет назад 1
Это правильное поведение. Следующая привязка работает `" \ ej ":" \ Cv \ Cj "` в зависимости от того, как мой терминал интерпретирует мета. Пожалуйста, отправьте ответ для меня, чтобы принять @rici cdosborn 9 лет назад 0

1 ответ на вопрос

9
rici

You can type a newline character without having the line accepted by using readline's "quoted-insert", usually bound to C-v, followed by the newline character C-j.

"quoted-insert" is also useful for typing a tab character without invoking tab completion (C-vC-i).

Это действительно полезно, во всяком случае, чтобы сделать это автоматическим, когда я использую `\\` для выхода из новой строки при создании многострочной команды? CMCDragonkai 8 лет назад 0
@cmcdragonkai: я не знаю, но вы можете связать некоторую последовательность клавиш с `\\\ Cj`. rici 8 лет назад 0