Вопрос прямой, никаких претензий к этому нет. Я просто хочу прокомментировать, что зачастую стоит упростить «стандартные» привязки клавиш, которые уже существуют во многих приложениях, вместо того, чтобы настраивать их без реальной выгоды и с уверенностью никогда не видеть поведение в сторонних системах. Ctrl+wэто то, к чему ты должен привыкнуть, имхо.
Даниэль Андерссон
@ Даниэль Андерссон: или в качестве альтернативы - Вы можете разработать способ переноса Ваших настроек на чужой компьютер.
Adobe
Совместное использование точечных файлов - это решенная проблема, но она мало помогает на других, более или менее локальных компьютерах, где у вас достаточно открытые привилегии. Если вы работаете в чужой системе, у вас, скорее всего, нет свободы перенастраивать подобные вещи (по крайней мере, без того, чтобы вас не избили коллеги, которые также используют ту же машину :-)). Также каждое новое приложение будет нуждаться в особой обработке.
Даниэль Андерссон
6
У меня есть обратная проблема, я привык Ctrl-wкак «удалить предыдущее слово» в консоли, и сделать это инстинктивно даже в Eclipse или Chrome, где это означает закрыть вкладку / закрыть текущий файл. Довольно раздражает.
Ezequiel Muns
1
У меня такая же проблема с Chrome SShInATab. Как мне сделать Ctrl-W без Ctrl-W? :)
Риккардо SCE
Ответы:
11
Почему бы просто не использовать Alt+ Backspaceили Ctrl+ W, которые уже сопоставлены в большинстве терминалов. Не уверен насчет консоли. Xmodmap (man xmodmap) может также использоваться для переназначения других пользовательских ключей. (Как это ни парадоксально, xmodmap не может переназначить Backspace очень хорошо, потому что терминал переопределяет сопоставления, но он хорошо работает с большинством ключей ...).
Потому что я использовал Ctrl-Backspace в Emacs. Я знал о Ctrl-W. Alt-Backspace является новым для меня (+1).
Adobe
1
Хороший вопрос, @hellork. Вы можете перехватить control + backspace на X-сервере (через xmodmap) и сопоставить его с каким-то неиспользуемым символом (например, alt-backspace).
4
Раздражает то, что ctrl + backspace является действительно распространенным отображением для «удаления слова назад» в большинстве приложений с графическим интерфейсом в большинстве основных операционных систем. Аналогично, Ctrl + W широко распространен для «закрытия окна». Alt + w редко используется для чего-либо в GUI, о чем я могу думать. Стандартизация была бы отличной. Интересно, что будет большим нарушением, сменой терминалов или сменой графического интерфейса?
naught101
1
@naught, Control-W уже является клавишей стирания слова по умолчанию на терминалах Unix. Да, это противоречит соглашению Windows / GUI, но на самом деле оно появилось первым - через много лет. Виноват Microsoft!
Алексис
11
Я нашел эту тему через Google, но ответ был не то, что я хотел услышать. Итак, я поиграл:
На моем терминале нормальная отправка backspace ^H, в то время как ctrl + backspace отправляет ^?. Так что это должен быть случай повторного связывания, ^?чтобы удалить слово, которое по умолчанию доступно через Ctrl + W.
Первый (неудачная попытка):
$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".
Итак, поэтому это должно работать:
$ bind '"\C-?":unix-word-rubout'
Однако это не ... кто-нибудь может объяснить?
Вторая (успешная) попытка:
$ bind '"\C-?":"^W"'
Где ^W- литерал / raw ^W(нажмите ctrl + V, затем ctrl + W, чтобы он появился).
Здесь есть несколько хороших ответов, но я решил это в Konsole с помощью Настройки-> Редактировать текущий профиль-> Клавиатура-> Редактировать, затем добавил отображение из Backspace+Controlв \x17. (Я нашел код ASCII для Ctrl-w, используя showkey --ascii.)
Спасибо за указание на вещь с showkey. Таким образом я понял, что ALT+Dдля удаления слово перед курсором будет соответствовать \x1b\x64.
Локи
Спасибо, это решило мою проблему. В моем случае мне нужно переназначить Alt + Backspace и его последовательность \x1b\x7f.
DDMC
3
Это зависит от того, что видит Баш. При обычном взаимодействии с терминалом bash не видит, какие клавишные модификаторы вы нажали, только получившийся символ. Backspace уже такой же, как control-H, например. Удерживать нажатой клавишу Shift или контроль не имеет значения.
ОДНАКО ваше терминальное приложение (xterm? Cmd? Terminal? Putty? Зависит от вашей ОС) может видеть ваши нажатия клавиш и может иметь способ сопоставить комбинацию клавиш control-backspace с чем-то, что bash может отличить от backspace.
Я обнаружил, что мой удар не видит забой. Но может быть, это возможно, чтобы это увидеть.
Adobe
@adobe, что ты имеешь в виду? Напечатайте 'stty' в своем терминале и затем прочитайте руководство об этом. Если ^ H установлен как ваш символ стирания, вы можете установить его на что-то другое ... если у вас есть веская причина.
1
Хороший пример того, как это сделать, можно найти на github.com/calj/gtconf/blob/master/zsh/zshrc . Konsole позволяет вам сделать это. Скопируйте один из файлов * .keytab из / usr / share / kde4 / apps / konsole / в ~ / .kde / share / apps / konsole и измените его, предложив приведенную выше ссылку, удалив строку «key Backspace» и добавление: key Backspace-Shift-Control : "\x7f"и key Backspace-Shift+Control : "\E[9;3~"также изменить строку заголовка, когда вы на это:, keyboard "Xfree4 Modlist"например. Затем вы можете добавить "\e[9;3~": backward-kill-word"в ~ / .inputrc
Адам
2
Попробуй это:
bind '"\C-_":backward-kill-word'
При желании добавьте следующее в ~ / .inputrc, чтобы сделать его постоянным:
Благодарю. У меня работает, как минимум в xfce4-терминал.
Limon
0
На большинстве терминалов CTRL + W уже должен удалить слово назад. Это работает с xterm, и я думаю, что это работает с konsole. CTRL + W - это стандартная привязка клавиш в текстовой программе, которая будет работать с vim в режиме вставки, emacs и каждой оболочке.
Ctrl+w
это то, к чему ты должен привыкнуть, имхо.Ctrl-w
как «удалить предыдущее слово» в консоли, и сделать это инстинктивно даже в Eclipse или Chrome, где это означает закрыть вкладку / закрыть текущий файл. Довольно раздражает.Ответы:
Почему бы просто не использовать Alt+ Backspaceили Ctrl+ W, которые уже сопоставлены в большинстве терминалов. Не уверен насчет консоли. Xmodmap (man xmodmap) может также использоваться для переназначения других пользовательских ключей. (Как это ни парадоксально, xmodmap не может переназначить Backspace очень хорошо, потому что терминал переопределяет сопоставления, но он хорошо работает с большинством ключей ...).
источник
Я нашел эту тему через Google, но ответ был не то, что я хотел услышать. Итак, я поиграл:
На моем терминале нормальная отправка backspace
^H
, в то время как ctrl + backspace отправляет^?
. Так что это должен быть случай повторного связывания,^?
чтобы удалить слово, которое по умолчанию доступно через Ctrl + W.Первый (неудачная попытка):
Итак, поэтому это должно работать:
Однако это не ... кто-нибудь может объяснить?
Вторая (успешная) попытка:
Где
^W
- литерал / raw^W
(нажмите ctrl + V, затем ctrl + W, чтобы он появился).источник
Просто отредактируйте ваш
~/.inputrc
(вам может понадобиться создать его или скопировать/etc/inputrc
туда), чтобы он содержал:Это также отобразит Ctrl+, Deleteчтобы удалить слово рядом с курсором.
источник
Здесь есть несколько хороших ответов, но я решил это в Konsole с помощью Настройки-> Редактировать текущий профиль-> Клавиатура-> Редактировать, затем добавил отображение из
Backspace+Control
в\x17
. (Я нашел код ASCII для Ctrl-w, используяshowkey --ascii
.)источник
showkey
. Таким образом я понял, чтоALT+D
для удаления слово перед курсором будет соответствовать\x1b\x64
.\x1b\x7f
.Это зависит от того, что видит Баш. При обычном взаимодействии с терминалом bash не видит, какие клавишные модификаторы вы нажали, только получившийся символ. Backspace уже такой же, как control-H, например. Удерживать нажатой клавишу Shift или контроль не имеет значения.
ОДНАКО ваше терминальное приложение (xterm? Cmd? Terminal? Putty? Зависит от вашей ОС) может видеть ваши нажатия клавиш и может иметь способ сопоставить комбинацию клавиш control-backspace с чем-то, что bash может отличить от backspace.
источник
key Backspace-Shift-Control : "\x7f"
иkey Backspace-Shift+Control : "\E[9;3~"
также изменить строку заголовка, когда вы на это:,keyboard "Xfree4 Modlist"
например. Затем вы можете добавить"\e[9;3~": backward-kill-word"
в ~ / .inputrcПопробуй это:
При желании добавьте следующее в ~ / .inputrc, чтобы сделать его постоянным:
Работает на bash 4.3.11 в Kubuntu 14.04
источник
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
.В Консоле:
Settings -> Edit current profile
[Edit...]
[Add]
кнопку и подKey Combination
тип столбцаBackspace+Ctrl
. ВOutput
типе столбца0x08
(который обычно является символом возврата)Теперь вы должны иметь возможность сопоставить этот ключ с
backward-kill-word
помощьюисточник
На большинстве терминалов CTRL + W уже должен удалить слово назад. Это работает с xterm, и я думаю, что это работает с konsole. CTRL + W - это стандартная привязка клавиш в текстовой программе, которая будет работать с vim в режиме вставки, emacs и каждой оболочке.
источник