рычаги управления левый контроль правая комбинация клавиш

2035
Isaac Gomez

Я использую терминатор вместе с рыбой, и я хочу использовать Alt-Left и т. Д. Для навигации по терминатору и Ctrl-Left и Ctrl-right для перемещения курсора по слову. Проблема в том, когда я делаю

bind \cleft backward-word 

это не меняет поведение Ctrl-влево или вправо. Похоже, это следует из документации, и я извлек ключ и команду из флагов -K и -f и

bind -a 

показывает, что привязки существуют.

Я использовал ту же команду для других последовательностей, но я не могу заставить ее работать. Я что-то пропустил?

4

5 ответов на вопрос

4
eggonlegs

Я исправил это с моей стороны. Это идет в конфиге:

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

"источник", выполнив:

. .config/fish/config.fish 

("." является источником в рыбе)

Надеюсь, что это поможет вам!

Большой! Но у меня проблема с автоматическим запуском при каждом открытии терминала. Я не хочу каждый раз получать его вручную. Есть ли способ сделать это автоматически? Seb 11 лет назад 1
@Seb То же самое здесь. Я не использую рыбу достаточно часто (из-за такого рода проблем), чтобы это было проблемой, поэтому я все еще использую источники вручную. Я бы очень хотел знать, хотя. Вы могли бы открыть вопрос, я думаю? eggonlegs 11 лет назад 0
«~ / .bash_profile» для fish находится в ~ / .config / fish / config.fish (если он не существует, создайте его). Чтобы запустить его при входе в систему, сделайте следующее: если статус --is-login bind \ e \ [1 \; 5C forward-word bind \ e \ [1 \; 5D backward-word end Steve Ross 11 лет назад 0
Привет, @eggonlegs, введенная вами escape-последовательность обозначает escape + [+ 1 +; 5 C ", это довольно длинная последовательность. Зачем использовать такую ​​длинную последовательность клавиш, не сложно ли нажать их все? richard.g 8 лет назад 0
3
Antoine Gallix

введите bind \cleft backward-wordв командной строке рыбы должны сделать эту работу. Если вы хотите, чтобы он выполнялся при каждом запуске, установите:

function fish_user_key_bindings bind \cleft backward-word end 

в .config/fish/config.fish

Из рыбы вяжу документацию

Привязки клавиш не сохраняются между сессиями по умолчанию. Голые операторы связывания в config.fish не будут иметь никакого эффекта, потому что они поставляются перед настройкой привязок клавиш по умолчанию. Чтобы сохранить пользовательские привязки клавиш, поместите операторы связывания в функцию fish_user_key_bindings, которая будет автоматически загружаться.

1
Alsan

The accepted answer is almost worked, but I found I can't make it auto bind the keys through config.fish file. I endup modify the fish_vi_key_bindings.fish (which under /usr/share/fish/functions) directly.

Also, just adding ctrl-left and ctrl-right to normal mode under vi keybind is not enough, have to add insert and visual mode also.

bind \e\[1\;5C forward-word bind \e\[1\;5D backward-word bind -M insert \e\[1\;5C forward-word bind -M insert \e\[1\;5D backward-word bind -M visual \e\[1\;5C forward-word bind -M visual \e\[1\;5D backward-word 

Sorry for this should be a comment to the accepted answer, not an independent answer, but due to I don't have sufficient reputation to add comment (personally, I don't think this reputation system is reasonable), and I felt that I should share this to someone who is facing the same issue, or for someone who has experience on how to fix the issue.

Работал для меня, хотя я добавил его в `/ usr / share / fish / functions / fish_default_key_bindings.fish`. metal 7 лет назад 0
0
Steve Ross

The "~/.bash_profile" for fish is in ~/.config/fish/config.fish (if it doesn't exist create it). To have it run on login put this in the config.fish file:

if status --is-login bind \e\[1\;5C forward-word bind \e\[1\;5D backward-word end 
0
Kurtis Rader

Первое, что нужно отметить, это то, что ctrl+ left-arrowне имеет никакого смысла и не может быть сделано в любой оболочке. Это потому, что ctrlключ на самом деле не отправляет никаких символов сам по себе (если вы не сделали что-то очень необычное для конфигурации вашего терминала). Эта клавиша изменяет следующую букву, которая нажимается. Например, ctrl+ aзаставляет терминал отправлять однобайтовое шестнадцатеричное значение 0x01. Поскольку такие клавиши, как стрелка влево, обычно отправляют последовательность символов, начинающуюся с escсимвола, а escape - это уже управляющий символ, применение модификатора управления к нему ничего не дает.

Как вы нашли обычный способ сделать это, используйте alt. Если вы сконфигурировали свой терминал, чтобы он воспринимал это как «мета-ключ», который ставит префикс перед последующим символом escape, вы можете нажать alt+, page-upчтобы терминал отправлял \e\e[5~. Если вы собираете fish из исходников git, вы получите удобную программу с именем, fish_key_readerкоторая значительно облегчит изучение того, какие ключи отправляются. Это будет в выпуске Fish 2.3.1, который должен появиться через пару недель.

Наконец, пользовательские привязки клавиш должны быть в вашем личном конфигурационном файле, а не в глобальном /usr/share/fish/functions/fish_default_key_bindings.fishскрипте. Вы должны создать файл с именем $HOME/.config/fish/functions/fish_user_key_bindings.fishследующего содержания:

function fish_user_key_bindings bind \e\[1\;5C forward-word bind \e\[1\;5D backward-word end 

Похожие вопросы