2

Часто при использовании bash я привык использовать клавиши ^ A и ^ E для перехода к началу и концу строки и клавиши со стрелками для перехода от символа к символу без стирания. Время от времени я вхожу в определенные инструменты, где они полностью портят мои горячие клавиши, и ничего не работает. Моя клавиатура переназначается, и клавиша удаления становится клавишей возврата, теперь ^ W стирает слова, и я не могу ничего исправить в командной строке, потому что почти каждая клавиша для редактирования введенных команд помещает символы мусора в терминал. Это часто случается со мной при вводе паролей или SQLPlus в терминале UNIX.

Я даже не знаю, является ли это bash или что-то еще, но кто-то сказал мне тоже посмотреть на эту команду:

  $ stty -a
  speed 38400 baud; rows 37; columns 100; line = 0;
  intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = ^Z;
  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

  opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
  isig icanon iexten echo -echoe -echok -echonl -noflsh -tostop -echoctl -echoke

Во всяком случае, я не знаю, на что я здесь смотрю, но я узнаю некоторые ярлыки ^ W и ^ U. Как я могу переопределить вещи, чтобы заставить эти странные настройки терминала действовать как обычный bash

3 ответа3

1

Я думаю, что вы хотите команду reset , в пакете ncurses .

Если вы имеете в виду внутри sqlplus , то другой ответ верен: вы ничего не можете сделать, потому что sqlplus древний и не поддерживает readline .

0

Большая часть того, что вы описываете, предоставляется readline, поэтому, если используемая вами утилита не поддерживает readline или что-то подобное, вам не повезло. Терминал интерпретирует только очень ограниченный набор escape-кодов, в основном те, которые используются для удаления предыдущего слова (^ W) и для удаления всей строки (^ U), для остальных (^ A, ^ E, ...) Приложение должно делать работу.

0

Вы можете использовать rlwrap

К сожалению, если вы находитесь на сайте клиента, вы не можете скомпилировать его. Но вы можете скачать бинарную версию здесь

Повеселись!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .