Не могу связать Ctrl-J в bash - PullRequest
       35

Не могу связать Ctrl-J в bash

0 голосов
/ 13 февраля 2012

Я бы хотел связать Ctrl + J с командой в BASH, в частности, я хотел бы сделать это:

bind '"\C-j":"clear; ls *\n"'

Но этоКажется, что поскольку Ctrl + J является ключом перевода строки, escape-последовательность \ n вызывает все, с чем Ctrl + J связанрезультат нажатия Ctrl + J :

clear; ls *clear; ls *clear; ls *clear; ls *clear; ls * ...

Есть ли способ привязки Ctrl + J и сохранить значение \ n?Или есть альтернатива \n?

Ответы [ 4 ]

0 голосов
/ 16 сентября 2017

Если вы хотите, чтобы команда оболочки выполнялась, вы должны использовать опцию -x:

bind -x '"\C-j":"clear; ls *"'

С help bind:

bind: bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq]
 [-x keyseq:shell-command] [keyseq:readline-function or readline-command]
Set Readline key bindings and variables.

Сравнить детали:

[-x keyseq:shell-command]

и

[keyseq:readline-function or readline-command]

Без -x, bind контролирует функции readline или макросы, а с помощью -x bind будет привязываться к исполняемой команде оболочки.

0 голосов
/ 24 июля 2012

bind -p | grep "not bound" | grep -v "self-insert" | cat >> keycodes-notbound.txt bind -p | grep -v "not bound" | grep -v "self-insert" | cat >> keycodes-used.txt предоставит вам список всех комбинаций клавиш.

Таким образом, вы сможете увидеть в файле .txt, какие коды клавиш не связаны / не используются.

Возможнобыть, что вам нужно отменить привязку связанной функции (accept-line, IIRC), которая связана с Cj.

Что-то в этом Как я могу отсоединить и переназначить Cw в Bash? можетможет быть, вам поможет.

0 голосов
/ 06 мая 2015

Я предполагаю, что вы хотите, чтобы \n заставил команду выполнить немедленно. В таком случае, да, есть альтернатива:

bind '"\C-j":"clear; ls *\r"'

... должен делать то, что ты хочешь. (\r - возврат каретки, обычно связанный с Ctrl + M , который обычно имеет тот же эффект.)

0 голосов
/ 13 февраля 2012

Может быть, вы можете использовать привязки клавиш вашего оконного менеджера?

...