Клавіша CTRL для переміщення курсора між словами / рядками


85

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

Чи можу я це якось зробити в bash?

Можливо, я міг би його кодувати, але мені було цікаво, чи є щось простіше / вже зроблене.

Відповіді:


94

За замовчуванням прив’язки клавіш читання лінії ALT+ Bповертається на одне слово назад, ALT+ Fпереходить на одне слово вперед.

За замовчуванням установка Ubuntu додатково надає CTRL+ стрілки, як ви звикли. Вони вказані /etc/inputrcта вказані наступним чином:

# 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

Не знаю, навіщо нам три з них ...


20
@bryan_ruiz: Різні клавіатури (емулятори терміналів тощо) виводять різні послідовності. Щоб побачити послідовність, натисніть Ctrl-v, а потім клавішу. Для мене в PuTTY Ctrl-v Ctrl-RightArrow дає мені ^[OCте саме, що і ваше. У xtermЯ отримую, ^[[1;5що те саме, що Томас.
Призупинено до подальшого повідомлення.

7
краще було б це зробити, ~/.inputrcзамість цього відредагувавши
svassr 20.03.13

1
Я не можу повірити, як довго я прожив без цього.
Райан Шиллінгтон,

3
Редагування ~ / .inputrc може зупинити завантаження "системного" (/ etc / inputrc). Також зверніть увагу, що параметри 'set -o' - "set -o emacs" повинні надавати вам прив'язки стилів emacs у командному рядку, на відміну від, наприклад, "set -o vi" (після цього вам потрібно буде натиснути ESC перед спробою використовувати w або b).
Девід Гудвін,

4
@DavidGoodwin Після невеликого пошуку додавання $include /etc/inputrcтакож завантажить системний файл inputrc.
SirGuy

42

Як пояснив Томас, ви можете додати прив'язки до /etc/inputrc.

Ще однією альтернативою, яку він завантажує кожного разу, коли ви входите в систему, є розміщення їх ~/.bashrc таким чином:

#use ctl keys to move forward and back in words
bind '"\eOC":forward-word'
bind '"\eOD":backward-word'

Я дізнався, що ви можете використовувати cat > /dev/null для перегляду символів, які надсилає ваша клавіатура, наприклад, CTRL + стрілка вправо показує:

^[OC

де ^[те саме, що і \e так, звідки походить код у bindкоманді.

Ви також можете шукати прив'язки таким чином:

bind -p | grep forward-word

Все це досить дивовижно чудово, і я радий, що дізнався ще трохи сили башу.


6
Я думаю , що це буде впливати тільки на баш, в той час як inputrcрішення буде також застосовуватися до інших програм, використання Readline, наприклад , інтерпретатор Python, більшість інших оболонок. Зверніть увагу, що ви також можете вставити команди, ~/.inputrcякщо у вас немає root, або ви не хочете, щоб вони застосовувались до всіх користувачів.
Томас

З будь-якої причини це спрацювало у мене лише тоді, коли я поміняв місцями ваші рядки вище. Подальша примітка. Я використовую Ubuntu 14.04LTS за шпаклівкою з Windows 8.1.
Ребекка Дессонвіль

2
+1 спеціально для I learned that you can use cat > /dev/null to look at the characters that your keyboard is sending. #TIL
Sungam

3
Ви також можете просто ввести readі натиснути клавішу Enter, щоб досягти того самого ефекту, що і cat > /dev/null. Я лінивий, тому мені подобаються рішення з меншим набором тексту. :)
theglossy1

ctrl + 4 розбиває мою кішку (вона надсилає ^ /)
user1040495

4

.Inputrc у вашому домашньому каталозі призведе до того, що ctrl + left припинить працювати в Ubuntu (наприклад).

Щоб все працювало, додайте в ~ / .inputrc наступне:

# Include system-wide inputrc, which is ignored by default when
# a user has their own .inputrc file.
$include /etc/inputrc

кредит f.kowal

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