Чому ctrl + стрілка вліво не пропускає слова?


20

Я на своєму Ubuntu 12.04. Кожен раз, коли я редагую текст, я використовую ctrl+ left/ rightдля переміщення / переходу між словами. Нещодавно я встановив xscreensaver і змінив комбінації клавіш, щоб активувати заставку. Але потім, Ctrl+ leftперестав відповідати нормально (перехід до наступного слова зліва). Ctrl+ rightвсе ще переходить до наступного слова праворуч. Проблема виникає, чи використовую я термінал, Gedit або навіть набираю текст на веб-сторінках.

Я повернувся назад до заставки gnome, видалив xscreensaver (також виправив комбінації клавіш). Але питання залишається.

Я спробував скопіювати вміст з /etc/inputrcдо ~/.inputrc(за замовчуванням у мене немає ~ / .inputrc). Тут я отримав деяку інформацію: дивні символи з'являються, коли я використовую клавіші Ctrl та стрілки для навігації

Будь ласка, допоможіть.

EDIT: Ось мій ~/.inputrc:

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.
# Be 8 bit clean.
set input-meta on
set output-meta on
# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line

$endif

якщо я видаляю / etc / inputrc, ось що я отримаю, якщо утримую CTRL, то натисніть стрілку праворуч п'ять разів: натискання клавіші ctrl + стрілка вправо

На відміну від першого зображення вгорі, утримуючи CTRL і натискаючи стрілку ліворуч більше, ніж раз, не буде надруковано ;5Dзнову - це як би прийняти команду один раз і більше не робити це. Див. Нижче зображення: натискання клавіші ctrl + стрілка вліво



Яку оболонку ви використовуєте?
Сергій Колодяжний

Відповіді:


25

1 - В ~/.zshrc

bindkey '^[[1;5D' backward-word
bindkey '^[[1;5C' forward-word

2 - Або в ~/.bashrc

bind '"\e[1;5D" backward-word' 
bind '"\e[1;5C" forward-word'

... А тепер ctrl+ left/ rightстрибайте слова в byobu / tmux.

3 - Не сварись inputrc.


це занадто давно ... вже перевстановлено ubuntu
itagomo

3
Аналогічно, якщо у вас є оболонка Bash, у ваш файл ~ / .bashrc додайте bind '"\ e [1; 5D" зворотне слово' bind '"\ e [1; 5C" вперед-слово "
ishmael

3

У мене була ця сама проблема. Я виправив це, скопіювавши ці рядки у свій ~/.inputrcфайл:

"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

потрібні лише перші 2 рядки
davidchoo12

1

Створіть файл inputrc, використовуючи touch ~/.inputrc.
Скопіюйте вміст прийнятої відповіді у посилання, на яке ви посилаєтесь, тобто дивні символи, які з’являються, коли я використовую клавіші Ctrl та стрілка для переходу до цього файлу, відкривши файл ~ / .inputrc за допомогою деякого текстового редактора. Збережи це.
Прочитайте файл за допомогою bind ~/.inputrcкоманди або перезавантажте новий термінал. Речі повинні працювати ..


я вже зробив свій ~ / .inputrc. той самий вміст, що і мій / etc / inputrc. проблема тут - команда "CTRL + стрілка вліво", не переходьте до наступного слова зліва. але окрім цього, всі функції працюють. будь-яке інше рішення?
itagomo

Здається, прив'язка для ctrl + стрілка вліво якось перекривається. Не могли б ви включити точний вміст файлу inputrc? 2-я можливість може бути, якщо лінія може бути неправильною. До речі, чи є прив'язка для комбінації ctrl + ліва остання рядок ~/.inputrcфайлу?
drake01

відредагований пост .. див. вище .. додаткова інформація, пропуск слів праворуч працює, утримуючи (не повинен відпускати) клавішу CTRL, потім натискати праву клавішу раз кожного разу, коли мені хочеться перестрибнути слова .. але переходячи вліво, мені потрібно щоб випустити клавішу CTRL кожного разу, коли я пропускаю слова ..
itagomo

хто може допомогти?
itagomo

1

Я зрозумів, що пропуск слів вліво, запускаючи Ctrl + Left, не працює (навіть не коли я додав якийсь код у ~ / .inputrc або ~ / .zshrc), тому що за замовчуванням цей ярлик вже використовується в Ubuntu (він змінює розмір поточне вікно по горизонталі). Ви можете змінити ярлик за замовчуванням у меню Система -> Налаштування -> Комбінація клавіш. Я просто замінив Ctrl + Left на Ctrl + Down, щоб звільнити його. Після цієї заміни пропуск слів вліво за допомогою Ctrl + Left працює нормально! Навіть без ~ / .inputrc або ~ / .zshc.


шукав рішення для цього дуже довго. Це було дуже просто та ефективно! Спасибі.
rizwanhudda
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.