トップページunix
981コメント260KB

zsh その4

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。05/02/02 20:03:26
zshのスレその4です。

過去スレ
zsh入門
http://pc.2ch.net/test/read.cgi/unix/990283346/
zsh入門 パート2
http://pc3.2ch.net/test/read.cgi/unix/1036324177/
zsh その3
http://pc5.2ch.net/test/read.cgi/unix/1080002786/

>>2-3リンク
0352名無しさん@お腹いっぱい。2006/01/09(月) 20:20:51
PROMPT='%{^[[34%(?..;07)m%}%m:%{^[[m%}%(1j.%{^[[31%(?..;07)m%}%j:%{^[[m%}.)%{^[[35%(?..;07)m%}%.%# %{^[[m%}'
RPROMPT="%{^[[35%(?..;07)m%}%~%{^[[m%} %{^[[36%(?..;07)m%}%T%{^[[m%}"
こうなるというわけね。
プロンプトなんて久々にいじったから手間取った。
0353名無しさん@お腹いっぱい。2006/01/09(月) 20:37:47
>>348
setopt printexitvalueは知ってる? 知ってるならいいけど。
0354名無しさん@お腹いっぱい。2006/01/09(月) 23:25:17
>>353
今初めて知ったけど視認性高めたいので両方使う事にするよ。
0355名無しさん@お腹いっぱい。2006/01/11(水) 00:05:23
4.3.0-dev-2にしてから
% echo -n hoge
hoge%
%
のように出力のあとに青い%が出るようになった。バグ?
0356名無しさん@お腹いっぱい。2006/01/11(水) 00:21:59
>>355
(゚Д゚)ハァ?
0357名無しさん@お腹いっぱい。2006/01/11(水) 21:09:13
4.3.0-dev-2だけど、aliasの-sが効かなくなってる。
0358名無しさん@お腹いっぱい。2006/01/11(水) 22:35:47
そうですか。
0359名無しさん@お腹いっぱい。2006/01/12(木) 16:45:12
>>355
呪い
0360名無しさん@お腹いっぱい。2006/01/13(金) 16:35:14
そうですか。
0361名無しさん@お腹いっぱい。2006/01/14(土) 01:18:06
ttp://d.hatena.ne.jp/secondlife/20060108/1136650653
ここにある
zsh + screen で端末に表示されてる文字列を補完する

compadd - "${reply[@]%[*/=@|]}"
って何やっているのですか?
0362名無しさん@お腹いっぱい。2006/01/14(土) 02:47:28
つ gdb
0363名無しさん@お腹いっぱい。2006/01/14(土) 08:59:49
>>361
それは自分がパート2で書いたのが下敷きになっているようだね。
ttp://makimo.to:8000/2ch/pc3_unix/1036/1036324177.html#816

> って何やっているのですか?
ls や zsh の補完リストで、ファイル名にファイルの種別を表すサフィックスが
ついてることが多いので、それを削除したのを補完候補としている。

そのレスを書いてから、2、3回手を入れて今はこんな感じ。
# dabbrev complete for zsh
HARDCOPYFILE=$HOME/tmp/screen-hardcopy
touch $HARDCOPYFILE

screen-dabbrev-complete () {
    setopt localoptions extendedglob
    local reply lines=1000
    local hp="([\'\"])##" tp="([*/=@|:\'\",)])##"

    screen -X eval "hardcopy $HARDCOPYFILE"
#   screen -X eval "hardcopy -h $HARDCOPYFILE" # scrollback buffer の内容も含む場合
    reply=($(sed '/^$/d' $HARDCOPYFILE | tr ${WORDCHARS//[._-]/} ' ' | sed  '$ d' | tail -$lines))
    compadd -M 'm:{a-z-}={A-Z_}' - ${${${${reply[@]##${~hp}}%%${~tp}}://(?|??)}}
}

zle -C screen-dabbrev-complete menu-complete screen-dabbrev-complete
#bindkey '^[/'  screen-dabbrev-complete
bindkey '^[^_'  screen-dabbrev-complete
0364名無しさん@お腹いっぱい。2006/01/14(土) 09:31:33
つづき。 _history-complete-{newer,older}のデフォルトの割当てと衝突するので
変えたのだが、使っていて混乱することがある。元に戻した方がいいか。

正直なところ、解読不能になってしまって最初の頃で止めておけばよかったと思う。
1週間に1回使えばいい方だが、使いたいときにちゃんと動いてくれると嬉しい。
が、意図する補完になってくれないことが増えたような。最後に手を入れた変更と
キー割当ての混乱が原因かな。
0365名無しさん@お腹いっぱい。2006/01/15(日) 14:23:37
FreeBSD で acroread7 + zsh のときに
% acroread [TAB]
_acroread:7: no such file or directory: /usr/local/bin/acroread[ブッ]
と怒られます。

めんどうなんで↓こんな力業をかましてしまいましたが、
ヨイコの皆様はどう対処されているのでしょうか?

03663652006/01/15(日) 14:24:29
--- /usr/local/share/zsh/4.2.6/functions/Completion/X/_acroread.dist Sun Jan 15 13:52:52 2006
+++ /usr/local/share/zsh/4.2.6/functions/Completion/X/_acroread Sun Jan 15 14:19:03 2006
@@ -4,15 +4,16 @@

# Try extracting the version number directly from the executable.
# (This will fail if the executable is a wrapper script for acroread.)
-local ver=${${${(f)"$(<$commands[$words[1]])"}:#^ver=*}##ver=}
-[[ -n $ver ]] && _acroread_version=$ver
+#local ver=${${${(f)"$(<$commands[$words[1]])"}:#^ver=*}##ver=}
+#[[ -n $ver ]] && _acroread_version=$ver

-if (( ! $+_acroread_version )); then
- local acropath=${${(s. .)${${(f)"$($words[1] -help 2>&1)"}[1]}}[2]}
- _acroread_version=${${${(f)"$(<$acropath)"}:#^ver=*}##ver=}
-fi
+#if (( ! $+_acroread_version )); then
+# local acropath=${${(s. .)${${(f)"$($words[1] -help 2>&1)"}[1]}}[2]}
+# _acroread_version=${${${(f)"$(<$acropath)"}:#^ver=*}##ver=}
+#fi

-if [[ $_acroread_version == 7.* ]]; then
+#if [[ $_acroread_version == 7.* ]]; then
+if true; then
_arguments -C \
'--display=:X display:_x_display' \
'--screen=:X screen (overrides the screen part of DISPLAY)' \
0367名無しさん@お腹いっぱい。2006/01/15(日) 15:51:15
俺はこれを挿入。以前のバージョンにこのオプションがあったかどうか
知らないが、どうせそんなの使うことはないだろうからいいやと。
if (( ! $+_acroread_version )); then
_acroread_version=$($words[1] -version 2>/dev/null)
fi

ところで、globを変数展開等とあわせて同時にやる方法ってないですかね。
すぐにはあまりいい例が浮かばないですが、たとえば
files=(*.c(.N))
files=(${files%.c})
を一旦変数へ代入することなく一行で書きたい。
0368名無しさん@お腹いっぱい。2006/01/15(日) 19:52:14
>>365
compdef -d acroread
0369名無しさん@お腹いっぱい。2006/01/17(火) 04:20:54
>ttp://d.hatena.ne.jp/secondlife/20060108/1136650653
なんというか、出典を示さず自分で考えたみたいに書く奴って最低だよね。
0370名無しさん@お腹いっぱい。2006/01/17(火) 04:59:13
キモ
0371名無しさん@お腹いっぱい。2006/01/17(火) 10:17:04
>>369
くわしく
0372名無しさん@お腹いっぱい。2006/01/17(火) 21:07:13
age
0373名無しさん@お腹いっぱい。2006/01/18(水) 05:13:12
> とvimrc diaryに書かれてたので

て書いてあるじゃん
0374名無しさん@お腹いっぱい。2006/01/18(水) 06:04:26
それは要望がじゃなくて?
0375名無しさん@お腹いっぱい。2006/01/18(水) 06:12:10
>>373
国語力乏しすぎ
0376名無しさん@お腹いっぱい。2006/01/18(水) 15:43:45
cdするとき、ほかのユーザーの
ホームディレクトリが補完候補にあがってしまうんだが、
どうやったら補完しないようになるかわかります?

たとえば、自分以外にhogeさんがいるとすると、
cd hoge
ってやると、今どこにいても~hogeにcdできちゃうんだけど。。。
0377名無しさん@お腹いっぱい。2006/01/18(水) 17:26:06
>>376
補完されなかったが。
0378名無しさん@お腹いっぱい。2006/01/18(水) 17:39:21
unsetopt CDABLE_VARS
03793762006/01/19(木) 17:40:49
thx

どっかのサイトからコピペってるうちに怪しい設定が大量に入り込んでたみたいデス
これで快適なzshライフが遅れそう
ありがとうございますた
0380名無しさん@お腹いっぱい。2006/01/21(土) 01:41:48
skkの動的補完が便利なので、zshも動的補完してくれないかなーと
思う。
0381名無しさん@お腹いっぱい。2006/01/21(土) 01:47:27
skkは使ってるけどzshでやられたらウザそう
0382名無しさん@お腹いっぱい。2006/01/22(日) 00:23:15
まあ、切れれば無問題
0383名無しさん@お腹いっぱい。2006/01/22(日) 22:57:40
>>380
predict-on じゃなくて?
0384名無しさん@お腹いっぱい。2006/01/22(日) 23:05:48
>>365
それってこういう状況?

% where acroread
/usr/X11R6/bin/acroread
% echo $commands[acroread]
/usr/local/bin/acroread

/usr/local/bin/acroread は参照先のない
シンボリックリンクのようだけど、
これを消せばまあ動くかな。(試してない)
where の結果と commands の内容が違ったりするんだね。
0385名無しさん@お腹いっぱい。2006/01/22(日) 23:58:39
>>367
うーん。
files=(*.c(.N:s/.c/))
だと末尾の一致がないから、
files=(${$(echo *.c(.N))%.c})
とかかな。echo を消したい。
0386名無しさん@お腹いっぱい。2006/01/23(月) 01:48:09
>>385
echoとか使っちゃうと途端に空白だとか何だとかの問題が入ってきちゃうんで、
zsh内の各種展開のみで済ませたいんですよねえ。
で、globも変数展開もあわせて一発で書きたいなと。
いまんとこ次善の策として>>367のように2行書いてるわけですが、
一発で書ければ変数を導入しなくてよくなる場合もあるので。
0387名無しさん@お腹いっぱい。2006/01/23(月) 08:38:32
一般的な方法はないんじゃないかな。やりたい内容によっては修飾子や
何やらで済ませられるけど。>>367のような単純な例だと、files=(*.c(.N:r)) でも
いいだろうし。globbing の展開は最後だから、変数展開を後にしたいとすると
結局多段にするのが簡単ということになりそう。
03883652006/01/23(月) 10:00:36
>384
いや 両方とも /usr/X11R6/bin/acroread な状況です。
深く考えずに zsh を portupgrade で 4.2.6 にしたら
こんななりましたです。

ただ/usr/local/bin/acroread@ は参照先消えた状態で存在したので
消した上で /usr/local/share/zsh/4.2.6/functions/Completion/X/_acroread を
元に戻してみたらやっぱりこんななりました。
% acroread [TAB]
_acroread:12: no such file or directory:

まあおいらには >368 みたいな対処がいいのかもしんないけど
0389名無しさん@お腹いっぱい。2006/01/23(月) 18:26:32
>>387
やっぱそうですか。ありがとう。
0390名無しさん@お腹いっぱい。2006/01/23(月) 22:47:42
>>388
/usr/X11R6/bin/acroread って acroread5 じゃないので?
0391名無しさん@お腹いっぱい。2006/01/27(金) 23:20:48
cat hoge.txt | sed > tmp.txt
mv tmp.txt hoge.txt

というのを、zsh なら、
cat hoge.txt | sed > hoge.txt
的に、tmp.txt を必要なしにできたような気がするんだけど、勘違い?
あったような気がするんだけど、みつからねえぇ。
0392名無しさん@お腹いっぱい。2006/01/27(金) 23:41:15
>>391
( rm hoge.txt; sed > hoge.txt ) < hoge.txt
0393名無しさん@お腹いっぱい。2006/01/27(金) 23:52:24
cp =(cat hoge.txt | sed) hoge.txt
0394名無しさん@お腹いっぱい。2006/01/28(土) 10:33:11
なんか怖くない?
0395名無しさん@お腹いっぱい。2006/01/28(土) 13:16:27
zshじゃなくても

cat << __EOF___ | ed hogehoge.txt
edなこまんど
 :
__EOF__
0396名無しさん@お腹いっぱい。2006/01/28(土) 16:06:41
それ、catの意味あるのかよ。

0397名無しさん@お腹いっぱい。2006/01/28(土) 17:03:40
ナイスつっこみ
0398名無しさん@お腹いっぱい。2006/01/29(日) 15:24:34
screenを使っているんですが
^sで分割したいんですが
zshのインクリメンタルサーチが始まってしまいます。
このキーバインドを無効にするにはどうしたらいいですか?
0399名無しさん@お腹いっぱい。2006/01/29(日) 15:45:58
bindkey '^s' undefined-key
0400名無しさん@お腹いっぱい。2006/01/29(日) 17:46:40
>>398
zshがscreenのキー入力を食うはずがないのだが。
0401名無しさん@お腹いっぱい。2006/01/30(月) 19:12:35
んだ
0402名無しさん@お腹いっぱい。2006/02/02(木) 03:51:18
今日CVSから最新のzshとってきてmakeしたんだけど

: yodl -o zsh.texi -I. -w ztexi.yo version.yo zsh.yo; \
test -f zsh.texi
make[1]: *** [zsh.texi] Error 1
make: *** [all] Error 1

とか言われちゃいます。zsh.texiなんてソースの中に無いみたいだけど…

OSX10.4.4
texinfo 4.7
0403名無しさん@お腹いっぱい。2006/02/02(木) 05:38:50
そりゃあyodlで生成しているから
0404名無しさん@お腹いっぱい。2006/02/04(土) 11:06:28
zsh -c "hoge|moge" とかするとき、aliasは使えないんですかね
04052722006/02/04(土) 11:25:17
>>404
$ZDOTDIR/.zshenvにaliasを書いちゃう
0406名無しさん@お腹いっぱい。2006/02/04(土) 13:33:34
どうもです
0407名無しさん@お腹いっぱい。2006/02/07(火) 20:53:47
(I meant to send this yesterday, but got sidetracked, so this is already
out of date.)

I uploaded 4.3.0-dev-3 to the pub/development directory of
ftp.zsh.org. This fixes a few odd things in multibyte mode and there
are the usual completion function tweaks. It's now possible to define a
ZLE hook function zle-keymap-select to run when $KEYMAP changes. One
minor incompatibility is that the shell no longer sets HOME itself if it
wasn't in the environment (which it usually is). [In the next version
we'll continue to set HOME unconditionally in native zsh emulation.]

It's probably in a pretty fit state to be released as 4.3.1 now.

--
Peter Stephenson <pws@csr.com> Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK Tel: +44 (0)1223 692070


To access the latest news from CSR copy this link into a web browser: http://www.csr.com/email_sig.php

0408名無しさん@お腹いっぱい。2006/02/17(金) 05:59:48
4.3.1 がでそう
0409名無しさん@お腹いっぱい。2006/02/20(月) 23:23:23
白い液もでそう
0410名無しさん@お腹いっぱい。2006/02/21(火) 00:02:27
母乳ですか。
そうですか。
0411名無しさん@お腹いっぱい。2006/02/25(土) 01:30:36
変色します
0412名無しさん@お腹いっぱい。2006/02/28(火) 22:11:10
I've uploaded

ftp://ftp.zsh.org/pub/zsh-4.3.1.tar.gz
ftp://ftp.zsh.org/pub/zsh-4.3.1.tar.bz2
ftp://ftp.zsh.org/pub/zsh-4.3.1-doc.tar.gz
ftp://ftp.zsh.org/pub/zsh-4.3.1-doc.tar.bz2

Please try this out on as many systems as possible as soon as you get a
chance; if there are any significant problems I'll produce a 4.3.2.
This is very little changed from 4.3.0-dev-5, so there shouldn't be any.
If it looks OK I'll make the appropriate arrangements at Sourceforge and
Freshmeat (please feel free to pass the message on elsewhere; I don't
use comp.unix.shell or Slashdot myself).

Thank you to everyone who helped.

The release announcement currently looks like:

This version contains initial support for multibyte characters in the
shell's line editor (in particular UTF-8, although any character set
supported by the system library is usable). Please read the appropriate
sections of the file INSTALL as this support is not turned on by default
on all systems where it can be used. The release also contains a few
enhancements to shell syntax and supplied functions as well as numerous
bug fixes. See the file NEWS for more detail. There are only a few
unavoidable incompatibilities with previous versions, mostly to enhance
compatibility with other shells and standards; see the README file.
0413名無しさん@お腹いっぱい。2006/03/01(水) 01:40:08
zsh 4.3.1でeuc patchがあたらないのだが、
patch当てないでmultibyte supportってまともに動く?
0414名無しさん@お腹いっぱい。2006/03/01(水) 03:03:15
普通に動く
プロンプトが削れていくバグも無い
0415名無しさん@お腹いっぱい。2006/03/01(水) 15:49:32
>>414
OSは?
0416名無しさん@お腹いっぱい。2006/03/01(水) 16:00:39
multibyteってコンパイル時以外に何か設定いる?
0417名無しさん@お腹いっぱい。2006/03/01(水) 17:31:32
>>416
LC_CTYPE
0418名無しさん@お腹いっぱい。2006/03/03(金) 03:09:51
.2
0419名無しさん@お腹いっぱい。2006/03/06(月) 20:20:39
4.3.2に上げたらUTF-8な端末上で日本語入力しても化けなくなった。
0420名無しさん@お腹いっぱい。2006/03/06(月) 20:57:33
>>419
Linuxユーザでしょ
0421名無しさん@お腹いっぱい。2006/03/06(月) 21:11:34
やっぱそうか・・・
0422名無しさん@お腹いっぱい。2006/03/06(月) 21:22:44
Mac OS X だけど化けない。嬉しい。
0423名無しさん@お腹いっぱい。2006/03/06(月) 21:41:22
utf8ですか?
0424名無しさん@お腹いっぱい。2006/03/07(火) 03:31:22
4.3 になったらマルチバイトのあつかいがうまくなった
0425名無しさん@お腹いっぱい。2006/03/07(火) 03:56:59
zsh-4.3.2 -f
bindkey -e
で delete おすと ~ が入力される
quoted-insert だと ^[[3~
bindkey '^[[3~' delete-char で望んだ動作になるんだけど
なにが悪いのかな?
0426名無しさん@お腹いっぱい。2006/03/07(火) 14:41:04
どちらか
o デフォルトのemacsキーバインドはDELキーに何も割りあてられていない
o TERMが正しくない
0427名無しさん@お腹いっぱい。2006/03/07(火) 15:24:55
ああ、pantherダメなんだ
0428名無しさん@お腹いっぱい。2006/03/10(金) 05:57:10
おお、いつのまに。freebsd ports にこねーなあ。
0429名無しさん@お腹いっぱい。2006/03/11(土) 11:34:00
おれも ports 待ち
0430名無しさん@お腹いっぱい。2006/03/11(土) 13:28:49
freeze
0431名無しさん@お腹いっぱい。2006/03/11(土) 18:10:37
cygwin版マダー
0432名無しさん@お腹いっぱい。2006/03/11(土) 19:08:10
いつの間にか日本語文字のカーソル移動が
きちんと二バイト単位でできるようになってるよ。
0433名無しさん@お腹いっぱい。2006/03/12(日) 00:12:04
4.3.1、4.3.2と試してみたけど表示とかカーソル移動は問題無し。
が、"第1話.avi"とかなファイルを"?1?.avi"とかで指定できなかった。
環境はLinux(Gentoo)、LANG系は全部ja_JP.UTF-8。
0434名無しさん@お腹いっぱい。2006/03/12(日) 01:12:02
「第1話」は
「??1??」でマッチするね。
0435名無しさん@お腹いっぱい。2006/03/16(木) 18:31:05
誰かfish(friendly interactive shell)って使ったことある人いる?
なんかちょっとすごそう。かも?
0436名無しさん@お腹いっぱい。2006/03/16(木) 20:45:13
少し前に試用してみたことはある。
良かった点は動的に色をつけてけっこう綺麗なことかな。

一方、
・コンソールの取り回しが重かった
・構文規則が bourne shell 系でも csh 系でもない独自なもので覚えるのが面倒だった
・細かいチューンの方法がよくわからなかった

という理由で利用を断念した。

まあ zsh がわかりやすいわけではないけれど、今はもう設定しちゃってるしね。
「設定が諸悪の根源」という思想もまあわかるんだけど、そのわりに標準がと
ても使いやすいというわけじゃないし、補完系の設定を見てみたらとても複雑
だったし、理念に実装が追い付いていないなーという感じ。

0437名無しさん@お腹いっぱい。2006/03/16(木) 21:26:35
>>437
確かに。
>・構文規則が bourne shell 系でも csh 系でもない独自なもので覚えるのが面倒だった
>・細かいチューンの方法がよくわからなかった
使ってて似たようなことさっき思った。w
うーんやっぱzsh越える用なのってそうそう出てこいわな。

0438名無しさん@お腹いっぱい。2006/03/18(土) 22:22:56
取り敢えず名前から困るからな。繰り上がって aash とか。
0439名無しさん@お腹いっぱい。2006/03/19(日) 07:22:01
っzzsh
0440名無しさん@お腹いっぱい。2006/03/19(日) 08:17:11
shzzじゃないの
0441名無しさん@お腹いっぱい。2006/03/19(日) 16:05:54
bush
0442名無しさん@お腹いっぱい。2006/03/22(水) 21:57:35
for i in a b c d e ; do ; command $i ; done
をよくやるんだが、zshならもっと簡単にやる方法あったりしない?
0443名無しさん@お腹いっぱい。2006/03/22(水) 22:32:46
ないんじゃないかな。数字だったら{x..y}でいいんだけど。
せいぜいdo, doneを省くくらい。
0444名無しさん@お腹いっぱい。2006/03/23(木) 00:08:23
そういうスクリプト作ったら?
0445名無しさん@お腹いっぱい。2006/03/23(木) 02:35:37
perlなスクリプト
perl hoge.pl a zで、aからzまででる
perl hoge.pl g oならgからoまで

#!/usr/bin/perl
for($i=ord($ARGV[0]);$i<=ord($ARGV[1]);$i++){print chr($i),"¥n";}
0446名無しさん@お腹いっぱい。2006/03/23(木) 13:36:59
jot -c 5 a
0447名無しさん@お腹いっぱい。2006/03/24(金) 07:19:52
setopt BRACE_CCL の下だと {a-e} で a b c d e を生成できる。

あと、自分はこんな関数を定義していて偶に使う。
function each () {
    for i in "$@[1,-2]"; do
        eval $@[-1] ${(qq)i}
    done
}

command は内部コマンドにあるから名前を変えるが、>>442の例だと
each {a-e} command1
みたいなかんじに。
0448名無しさん@お腹いっぱい。2006/03/25(土) 09:37:04
スレ違いだけど
each func arg1 arg2 ...
の方が直感的と思ったオレは lisper ?
0449名無しさん@お腹いっぱい。2006/03/25(土) 10:48:26
>>448
lisperならeachじゃなくてmapの方が直観的と思うハズだ。
0450名無しさん@お腹いっぱい。2006/03/25(土) 10:49:28
と思ったがschemeならfor-eachか。
0451名無しさん@お腹いっぱい。2006/03/26(日) 00:35:54
カリー化マンセー
■ このスレッドは過去ログ倉庫に格納されています