Як змінити попереднє / наступне скорочення слів у bash?


20

Як налаштувати Ctrl-Left та Ctrl-Right як попередні / наступні ярлики для bash (в даний час alt-b та alt-f)?



@Gilles - я подумав, що раніше запитав щось подібне, так, вибач. Закрив оригінал як копію (тому що він тут більше належить, ніж Super User).
ripper234

Відповіді:


26

Правильна відповідь залежить від того, який термінал ви використовуєте.

Для Gnome Terminal або останніх версій xterm введіть це в ~ / .inputrc:

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

Для PuTTY введіть це у свій ~ / .inputrc:

"\eOC": forward-word
"\eOD": backward-word

Для rxvt помістіть це у свій ~ / .inputrc:

"\eOc": forward-word
"\eOd": backward-word

Ви, ймовірно, можете піти від того, щоб помістити всіх разом у ~ / .inputrc.

У всіх випадках вам також потрібно помістити це у ваш ~ / .bashrc (або ~ / .zshrc):

export INPUTRC=~/.inputrc

Якщо це не працює, або у вас інший термінал, перейдіть до свого терміналу і введіть Ctrl+ V Ctrl+ ->. Потім використовуйте це замість "\e[1;5C"або "\eOC"вище. Повторіть для Ctrl+ <-.

Зауважте, що вам потрібно записати послідовності втечі клавіатури, використовуючи синтаксис inputrc , наприклад

  • \C означає контроль
  • \eозначає втечу (що з’являється як ^[при наборі його за допомогою Ctrl + V вище)

Ctrl + V, Ctrl -> друкує "^ [[1; 5C", і я використовую gnome-terminal.
ripper234

2
Тож спробуйте "\e[1;5C": forward-word. І зробити Ctrl+ Vріч для Ctrl+ Left Arrowтеж.
Мікель

Спасибі, працює як шарм. Повільно, але впевнено я навчусь плавати в Linux. Чому вони повинні були зробити це не інтуїтивно в першу чергу? (Ви повинні визнати, ctrl-left, ctrl-right - кращий вибір)
ripper234,

1
Якщо ви вважаєте, що для початку Linux не інтуїтивно зрозумілий, спробуйте встановити програму FreeBSD або навіть Solaris за замовчуванням. Мати баш як свою стартову оболонку - мрія. Крім того, оскільки на клавіатурах не завжди були клавіші зі стрілками, Emacs, а отже, і ярлики підтримки bash для цього. Спробуйте деякий час використовувати Ctrl-b і Ctrl-f.
penguin359

2
Краса систем UNIX / Linux - це легко переміщати налаштування. Щойно ви налаштовуєте улюблені програми так, як їм подобається, просто скопіюйте їх. Я фактично використовую контроль версій для файлів домашнього каталогу, таких як .inputrc, .bashrc, .vimrc тощо. Я використовую mercurial для клонування та постійно підтримую всі налаштування домашнього каталогу між комп'ютерами. Я також планую в якийсь момент опублікувати своє репо, щоб інші могли поділитися цією моєю важкою працею.
penguin359

3

Якщо ви використовуєте ZSH, вам потрібно скористатися іншим методом, оскільки, цитуючи відповідні частини з посібника з ZSH ArchLinux :

Zsh не використовує readline #like bash #, натомість використовує власний і потужніший zle.

Він не читає / etc / inputrc або ~ / .inputrc.

Прочитавши цей посібник, я зрозумів, що мені потрібне джерело модерну ZSH, щоб отримати загальне уявлення про те, як це зробити, і тому я знайшов цей ой-мій-zsh файл, який описує поведінку, яку я хотів, скопіював відповідні частини I захотів у мій ~ / .zshrc:

bindkey -e #Use emacs mode, it's more sane for beginners
bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word
bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word
# Also, If you want to copy paste this into your zshrc,
# I'm pretty sure you would have to add this at the top : 
# setopt interactive_comments

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