LINUX.ORG.RU

zsh, bash word-style

 


0

1

Собственно, как заставить zsh (5.0.6) использовать слова в стиле баша? У меня годами выверенный «воркфлоу» тыканья в кнопочки, и когда M-f, M-d или C-w прыгает или удаляет не туда, я получаю маленький инфаркт. Что я пробовал:

% select-word-style    
Usage: select-word-style word-style
where word-style is one of the characters in parentheses:
(b)ash:       Word characters are alphanumerics only
(n)ormal:     Word characters are alphanumerics plus $WORDCHARS
(s)hell:      Words are command arguments using shell syntax
(w)hitespace: Words are whitespace-delimited
(d)efault:    Use default, no special handling (usually same as `n')
(q)uit:       Quit without setting a new style
Вот это все, в паре со всякими WORDCHARS='*?_-[]~=&;!#$%^(){}<>'

Как?

☆☆☆
Ответ на: комментарий от anonymous

И это, внезапно, не то. M-f не дойдет до конца строки, а C-w остановится перед - и .
В баше поведение совсем другое.

entefeed ☆☆☆
() автор топика
Ответ на: комментарий от entefeed

Вруша!

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ echo $SHELL
/bin/bash
"-" является word-breaker'ом. Те. M-f прыгает до "-", а C-W стриает до "-". У меня так же в
% zsh --version
zsh 5.0.6 (i686-pc-cygwin)

anonymous
()
Ответ на: комментарий от anonymous

bash: test-test-test^W = empty
zsh: test-test-test^W = test-test-

bash: test --option^W = test
zsh: test --option^W = test --

bash: test --^W = test
zsh: test --^W = empty
С точкой такая же фигня.

GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu)

entefeed ☆☆☆
() автор топика
Ответ на: комментарий от entefeed

Чёрт. Я напутал и правда. Видимо прочекал только M-f

anonymous
()

bump. Куда все любители инноваций делись? Не далее как вчера я видел стада с zsh в качестве дефолтного шелла, а теперь перекати поле.

entefeed ☆☆☆
() автор топика
Ответ на: комментарий от entefeed

Я не очень знаком с этим select-что-то-там, когда-то он мне не помог с примерно этой же проблемой. Вот здесь: [zsh] Аналог unix-filename-rubout В принципе это довольно просто сделать, заучивать наизусть ман по zle не требуется.

Gotf ★★★
()
Ответ на: комментарий от Gotf

Да, похоже придется оборачиваться в подобные костыли. И для C-w и для M-d. Жаль конечно, но что поделать. Ок, спасибо, тему можно считать решенной.

entefeed ☆☆☆
() автор топика
Ответ на: комментарий от entefeed

Это не костыль, это нормальная функция. Огромная часть функциональности zsh написана на нём же самом. Как Vim или Emacs.

Gotf ★★★
()
Ответ на: комментарий от Gotf

При том что в zsh есть

emulate - set up zsh options to emulate the specified shell as much as possible
select-word-style - implement moving over and editing words in the manner of bash, where only alphanumeric characters are considered word characters

аж два способа добиться поведения баша, и ни один из них правильно не работает, я считаю это именно костылем.

entefeed ☆☆☆
() автор топика

Нашел способ лучше, чем городить обертки к функциям:

autoload -U select-word-style
select-word-style bash
bindkey '^W' backward-kill-word
autoload -U backward-kill-word-match
zle -N backward-kill-word backward-kill-word-match
zstyle ':zle:backward-kill-word' word-style whitespace
http://www.zsh.org/mla/users/2003/msg00465.html

entefeed ☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.