изменение bash сочетания клавиш, таких как Ctrl-C?

Я использую Kubuntu 10.04. Я хотел бы изменить некоторые стандартные сочетания клавиш для bash (terminal).

вот ярлыки, которые я хотел бы настроить:

  • Ctrl-C для копирования выделенного текста в
    терминал в буфер обмена.

  • Ctrl-V для вставки из буфера обмена
    в терминал.

  • сочетания клавиш Ctrl-Z, чтобы отменить изменения в текущей строке в терминал.

  • Ctrl-Shift-C (или даже лучше, Super-C), чтобы завершить команду.

  • Ctrl-Shift-Z (или Super-Z), чтобы быть фоновой командой.

  • Ctrl-Shift-V (или Super-V), чтобы быть буквальной командой вставки (или
    все, что Ctrl-z делал раньше).

Как внести эти изменения? Благодаря.

кстати, мне нравится, как терминал работает на OS X. использование командной клавиши делает все команды копирования / вставки очень последовательными (в отличие от многих других вещей в OS X).

P. S. Я читал страницы Баш человек и это не помогло. Это дало мне идеи, но мне нужны конкретные примеры для вышеуказанных комбинаций. Благодаря.

5
задан Dave
источник

4 ответов

это не функции bash, это функции драйвера терминала. Таким образом, они определяются stty(1).

$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
10
отвечен Ignacio Vazquez-Abrams 2010-07-06 03:22:07
источник

Это почти полностью решена. Часть решения была впервые доведена до моего сведения MTK358 по адресу http://www.linuxquestions.org/questions/linux-software-2/change-bash-shortcut-keys-such-as-ctrl-c-818170/. Он указал на (довольно очевидный, к моему большому смущению) факт, что сочетания клавиш копирования и вставки можно легко изменить с помощью настроек меню konsole. Как только я увидел это, потребовалось около 1 минуты, чтобы настроить Ctrl-C и Ctrl-V для копирования и вставить с помощью терминала.

другая часть решения должна была быть ясна со страницы stty man, но это было не так (для меня). Я в конечном итоге просто экспериментировал на основе различных подсказок, таких как те, что размещены выше.

Я решил, какую нечисловую клавишу я хочу заменить Ctrl-C в качестве команды завершения. (Я использовал "к"). Я никогда не находил никакой информации о том, как передать модификатор сдвига stty, поэтому я отказался от этого. С что решил, я должен был ввести следующие на командная строка:

действовать до его закрытия интр \^к

Я убедился, что все работает как надо.

теперь я просто должен был поместить одну команду выше (stty intr \^k) в сценарий запуска. Я не уверен, какой из них "правильный". Я хотел бы, чтобы это изменение было системным и постоянным.

любые предложения относительно того, в какой сценарий я должен поместить команду?

и, наконец, что касается проповеднических ответов, то они излишни и бесполезный.

6
отвечен Dave 2010-07-07 16:20:27
источник

некоторые из них можно настроить с помощью обычного механизма сочетаний клавиш KDE. В меню "Настройки" Konsole нажмите "Настроить ярлыки", и вы получите диалоговое окно, которое вы можете использовать для изменения Привязок клавиш для функций, которые обрабатываются KDE. Это позволит вам переназначить Ctrl+C для копирования и Ctrl+V для вставки, но имейте в виду, что как только вы это сделаете, эти последовательности клавиш больше не будут передаваться на терминал, поэтому вы не сможете использовать Ctrl+C для прерывания программы, для образец.

другие функции управляются readline библиотека, которую можно настроить, отредактировав файл ~/.inputrc. Чтобы получить Ctrl + Z, чтобы отменить любые изменения, сделанные в текущей строке, вы хотите добавить

C-z: revert-line

но эта последовательность клавиш, вероятно, уже захвачена терминалом, поэтому вам, возможно, придется использовать stty чтобы отвязать его, прежде чем он будет работать. Сначала найдите ^Z производства stty -a (как показано в ответе Игнасио), а затем, например, если он появляется в susp = ^Z, run

stty susp ^-

, чтобы отменить привязку ключа.

другие изменения, о которых вы спрашиваете, должны быть сделаны с stty как говорит Игнасио, так как это терминальные функции, но я не уверен, как именно. Проблема в том, что я не знаю, распознает ли терминал Shift или, если да, как передать эту информацию stty.

3
отвечен David Z 2010-07-06 04:05:59
источник

Bash использует emacs или vi режим командной строки. Он не имеет понятия "выделение" или "буфер обмена". Он использует такие вещи, как" буфер убийства "и" точка"," знак"," слово"," линия"," убить "и" дергать " и т. д.

попытка shoehorn функциональность в стиле GUI в него будет расстраивать в лучшем случае и не будет работать полностью. Вам придется попробовать объединить функции stty,readline и ваш терминал (предположительно Terminal.app для вас). Вам нужно будет переназначить такие функции, как intr, susp,lnext, etc., так что вы все еще можете использовать их особенности.

я настоятельно не рекомендую такие радикальные модификации. Он просто не был разработан, чтобы делать то, что вы хотите.

когда в Риме...

3
отвечен Dennis Williamson 2010-07-06 12:35:45
источник

Другие вопросы bash inputrc linux