Почему ctrl + стрелка влево не пропускает слова?

20

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

Я вернулся к gnome-screensaver, удалил xscreensaver (также исправил свои сочетания клавиш). Но проблема остается.

Я попытался скопировать содержимое из /etc/inputrcв ~/.inputrc(по умолчанию у меня нет ~ / .inputrc). Я получил некоторую информацию здесь: странные символы появляются, когда я использую клавиши Ctrl и Arrow для навигации

Пожалуйста помоги.

РЕДАКТИРОВАТЬ: вот мой ~/.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 + стрелка влево

itagomo
источник
Какую оболочку вы используете?
Сергей Колодяжный

Ответы:

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прыгать слова в бёбу / тмукс.

3 - Не связывайтесь inputrc.

yPhil
источник
это слишком давно ... уже переустанавливал убунту
итагомо
3
Аналогично, если у вас есть оболочка Bash, в вашем файле ~ / .bashrc добавьте bind '"\ e [1; 5D" обратное слово "bind" "\ e [1; 5C" forward-word "
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
Hemanthkumar
источник
требуются только первые 2 строки
davidchoo12
1

Создайте файл inputrc, используя touch ~/.inputrc.
Скопируйте содержимое принятого ответа по ссылке, на которую вы ссылались, т.е. странные символы, появляющиеся, когда я использую клавиши Ctrl и Arrow для навигации , в этот файл, открыв файл ~ / .inputrc с помощью некоторого текстового редактора. Сохрани это.
Прочитайте файл с помощью bind ~/.inputrcкоманды или перезапустите новый терминал. Вещи должны работать ..

drake01
источник
я уже сделал мой ~ / .inputrc. тот же контент, что и мой / etc / inputrc. проблема здесь в том, что команда «CTRL + стрелка влево» не переходит к следующему слову слева. но кроме этого все функции работают. любое другое решение?
итагомо
Кажется, привязка для ctrl + стрелка влево как-то переопределяется. Не могли бы вы включить точное содержимое файла inputrc? 2-ой возможностью может быть неправильная линия. Кстати, является ли привязка для комбинации ctrl + left последней строкой ~/.inputrcфайла?
drake01
отредактированный пост .. см. выше .. дополнительная информация, пропуская слова вправо, работает, удерживая (не должна отпускать) клавишу CTRL, а затем нажимая правую клавишу один раз каждый раз, когда я хочу пролистать слова ... но переходя влево, мне нужно отпускать клавишу CTRL каждый раз, когда я пропускаю слова ..
итагомо
кто-нибудь может помочь?
итагомо
1

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

Банджо
источник
искал решения для этого очень давно. Это было очень просто и эффективно! Спасибо.
Ризванхудда