トップページ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リンク
0064名無しさん@お腹いっぱい。05/02/18 13:20:04
そういう風に展開する関数を書いたほうが早くねーかい?
0065名無しさん@Vim%Chalice05/02/18 13:43:52
だしかに、そんなような気がしてきたような・・・
0066名無しさん@お腹いっぱい。05/02/18 14:34:12
>>63
メーリングリストでも似たような質問を何度か見かける。試しにやってみたが、
全展開は簡単にできるが絞り込みがうまくいかない。例えば下のような感じ。
他に影響がないように機能を C-x x に割り当てている。

_foo () {compadd bar{1..5}{a,b}}
compdef _foo foo

zle -C all-matches complete-word _generic
bindkey '^Xx' all-matches

zstyle ':completion:all-matches:*' completer _all_matches _complete _match
zstyle ':completion:all-matches:*' old-matches false
zstyle ':completion:all-matches:*' match-original only
zstyle ':completion:all-matches:*' insert true

% foo bar<C-x x> → foo bar1a bar1b bar2a bar2b bar3a bar3b bar4a bar4b bar5a bar5b
% foo bar*<C-x x> → foo bar1a bar1b bar2a bar2b bar3a bar3b bar4a bar4b bar5a bar5b bar*
% foo bar[25]b<C-x x> → foo bar2b bar5b bar[25]b

などとなって、補完対象の文字列がそのまま残ってしまう。でも
% foo bar[48]a<C-x x> → foo bar4a
となったりするからよく判らん
0067名無しさん@お腹いっぱい。05/02/19 05:52:37
これじゃダメかい?

zle -C all-matches complete-word _generic
bindkey '^Xx' all-matches
zstyle ':completion:all-matches::::' completer _all_matches _complete
zstyle ':completion:all-matches:*' insert true
setopt glob_complete
0068名無しさん@お腹いっぱい。05/02/19 08:12:07
だめだな
0069名無しさん@お腹いっぱい。05/02/19 11:59:46
あるコマンドの時だけ補完を抑制したいのですが、どうすればよいのでしょう?
ポインタだけでもプリーズ。
java コマンドの補完があんまり重いんで、コイツだけ殺したい。
0070名無しさん@お腹いっぱい。05/02/19 12:12:29
>>69
compdef -d java
0071名無しさん@お腹いっぱい。05/02/19 16:35:40
補完可能な文字列ってどうすれば取得できる? 例えば
> ls <TAB>
file-a file-b file-c
なら、"file-"がほしい。
0072名無しさん@お腹いっぱい。05/02/19 22:27:47
取得って補完するわけではなくて?
0073名無しさん@お腹いっぱい。05/02/19 23:28:47
>>70
thx!
0074名無しさん@お腹いっぱい。05/02/19 23:55:20
>>72
はい。実際に補完するのではなくて、現在のカーソル位置でcomplete-wordしたら
補完されるはずの文字列を取得したい。

cur=$CURSOR
zle complete-word
PART_COMPLETE=$BUFFER[cur, CURSOR]
みたいに取得する…ってのは無理あり過ぎか。
0075名無しさん@お腹いっぱい。05/02/20 10:45:37
FreeBSD5.3Releaseで
portsからzsh+euc_hack-4.2.4を入れました。
gdbでデバッグをしようと
break main
run
としたら、プロンプトが戻ってこなくなってしまいました。
tcshでは問題が無いのでzshのせいだと思います。
どうしたらgdbを使えるようになるでしょうか。
0076名無しさん@お腹いっぱい。05/02/20 12:45:44
>>75
?何をデバッグしたいの?
0077名無しさん@お腹いっぱい。05/02/20 12:51:41
僕と彼女の仲をデバッグしたいです
コアを吐いてしまって・・・
0078名無しさん@お腹いっぱい。05/02/20 14:41:29
>76
大学で情報科学をやっているんで、
使えないと困るんです...
00797605/02/20 14:47:05
>>78
答えになってないですよ。
0080名無しさん@お腹いっぱい。05/02/20 15:01:06
>76
すいません。あまり重要な質問とも思えなかったので
さしあたって
#include <stdio.h>
int main()
{
printf("hello\n");
return 0;
}
のようなプログラムをデバッグしたいと思います。
00817605/02/20 15:05:51
>>80zshをデバッグしたいのかな?と思ったので。

gdbとzshは全く関係ないはず。
break mainで戻ってこないってのはどうなってるんだろう? C-cで
割込みしたらどうなる?

#多分スレ違い。
0082名無しさん@お腹いっぱい。05/02/20 15:25:30
>81
>gdbとzshは全く関係ないはず。
と、思っていたんですが、
zshをログインシェルにしてログインした状態で
gdbを使うとrunでプロンプトが戻ってこなくなってしまうんです。
C-cの時のメッセージはどんなのが出てたかは忘れてしまいましたが、
tcshでプロンプトが戻ってくる時にやった時とは
違うメッセージが出てたと思います。
0083名無しさん@お腹いっぱい。05/02/20 15:29:43
>>82
zshとtcshで環境変数とかが違うとか。
デバッグするプログラムはgdbなしで普通に実行できる?
00847505/02/20 15:40:32
>83
>デバッグするプログラムはgdbなしで普通に実行できる?
問題ありません。

>zshとtcshで環境変数とかが違うとか。
それはちょっと気がつきませんでした。
gdbのメッセージと併せて、
少し調べてみます。
0085名無しさん@お腹いっぱい。05/02/20 16:01:38
zprofileだかzshenvだったか、gdbの実行時に読まれてしまう。
本家でもバグ報告上がっていたような。
特にzshenvという名前にだまされてこのファイルに環境変数書いてしまう人がはまる。
0086名無しさん@お腹いっぱい。05/02/20 16:04:51
何か実行すると読まれるってことすか。
0087名無しさん@お腹いっぱい。05/02/20 16:06:32
zshenv になんらかの環境変数をかくのは正しいのでは
0088名無しさん@お腹いっぱい。05/02/20 16:07:18
>>74
それだとどんな問題があるの?
0089名無しさん@お腹いっぱい。05/02/20 16:13:03
全部.zshrcに書けば問題ない
0090名無しさん@お腹いっぱい。05/02/20 16:14:19
問題あるなしの話ではなくて
まあいいけど. 私も使ってないし
0091名無しさん@お腹いっぱい。05/02/20 16:20:59
>>85
は? なんでgdbがzshのファイルを読むわけ?
0092名無しさん@お腹いっぱい。05/02/20 16:32:11
それがgdbクオリティ
0093名無しさん@お腹いっぱい。05/02/20 19:53:22
漏れの人生もデバッグしたい
00947505/02/20 20:51:45
>85
まさしくそれだったみたいです。
ありがとうございます。
zshが原因だとぜんぜん気がつかず、
デバッガまで作っちまったよ...
0095名無しさん@お腹いっぱい。05/02/20 21:13:34
デバッガ作ったのか。すごいな。
0096名無しさん@お腹いっぱい。05/02/20 21:19:05
"^J"を押しても何も起きないようにするにはどうすればいいですか?

bindkey -s "^J" ""
このようにすればできるのですが、もっと素直な方法はありますか?
00979105/02/20 21:42:39
gdbってシェルを起動してるのか。知らなかった。
>>85
zshenvに環境変数を書いてもいいと思うが。
0098名無しさん@お腹いっぱい。05/02/20 22:47:24
>>96
bindkey -r '^J'
bindkey '^J' undefined-key
0099名無しさん@お腹いっぱい。05/02/20 23:07:15
>>74
無理あんの?
01009605/02/20 23:42:02
>>98
両方ともベルが鳴ってしまうようです。答えてくださってありがと
うございました。
0101名無しさん@お腹いっぱい。05/02/21 01:56:38
>>96
-s は素直でないかな
0102名無しさん@お腹いっぱい。05/02/21 03:56:57
>>97
まあ書いてもいいんだけど、サンプルのzshenvに書いてある
コメント読んでもらえれば。でも普通の人はそんなこと意識
しないでzshenvという名前だけ見て環境変数全部このファイル
に書いたりしてるんじゃないの、という意味で>>85を書いた。
0103名無しさん@Vim%Chalice05/02/21 11:03:44
ログインしたときに、前回のdirstackを自動で復活させることはできますか?
0104名無しさん@お腹いっぱい。05/02/21 11:23:14
>>103
こんなのしか思いつかないよ

typeset MICHISHIGESAYUMI="$TMP/.sayumin"
[[ -f $MICHISHIGESAYUMI ]] && dirstack=($(cat $MICHISHIGESAYUMI))
function chpwd () {
emulate -L zsh
print $dirstack > $MICHISHIGESAYUMI
}
0105名無しさん@お腹いっぱい。05/02/21 11:50:46
>>104
さゆみんて、またアンタかい!

つーか、いくら2ちゃんだからとはいえ、
(変数やファイルの) 名前はきちんと責務を明確に表したものにしてほしいですよ。
0106名無しさん@お腹いっぱい。05/02/21 11:55:50
さゆみんコテやめちゃったの?結構良かったのに。
0107名無しさん@Vim%Chalice05/02/21 12:05:30
>>104
できました。ありがとうございます。
0108从*・ 。.・) ◆SayuminPM. 05/02/21 16:18:08
pathに空白があるとだめだったので訂正

typeset -r MICHISHIGESAYUMI="$TMP/.sayumin"
[[ -f $MICHISHIGESAYUMI ]] && while read sayu; do dirstack+=$sayu done <$MICHISHIGESAYUMI
function chpwd () {
emulate -L zsh
print -l ${dirstack} > $MICHISHIGESAYUMI
}

うはwwwwwpathにwwwwwwwww改行があるとwwwwwwwwwwwwwwwwだめじゃんwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0109名無しさん@お腹いっぱい。05/02/21 17:27:39
パスに使えない文字って、/と\0だけだったかな。

print -Nでヌル文字区切りに出来るようだ。
読む方はちと調べが付かぬ。
0110从*・ 。.・) ◆SayuminPM. 05/02/21 17:48:11
>>109
おおすごい
読む方は
read -d '^@'
又は
read -d ''
かな
ただし^@は直打ち

'\0' みたいな書き方はどうやるんだろう
'' を認識できるって凄い
0111从*・ 。.・) ◆SayuminPM. 05/02/21 19:12:06
自己レスだけど
read -d $'\0'
で大丈夫だね
0112名無しさん@Vim%Chalice05/02/22 10:55:35
zstyle ':completion:*:default' menu select true
でTBB入力時に補完候補を←↓↑→で選択できますが、
初回のTAB入力で最初のエントリを補填せず、途中一致する箇所までを補填し
次のTABで←↓↑→で選択させることはできるでしょうか。
0113名無しさん@お腹いっぱい。05/02/22 10:59:19
できます
0114名無しさん@お腹いっぱい。05/02/22 11:10:43
つーかもうそろそろマニュアル読もうぜ>>名無しさん@Vim%Chalice
0115名無しさん@お腹いっぱい。05/02/22 12:50:07
なにか意味があって補填という言葉を使ってるの
0116名無しさん@Vim%Chalice05/02/22 15:32:07
>>112
すみません。マニュアル見ます。
0117名無しさん@お腹いっぱい。05/02/28 17:36:55
http://news.gmane.org/group/thread=5964.1109263147%40trentino.logica.co.uk/force_load=t
これなんだけど、Solaris で GNU libiconv 入れていると上手く動かなくね?
0118名無しさん@お腹いっぱい。05/03/07 12:28:53
test
0119名無しさん@お腹いっぱい。05/03/07 13:24:05
何のテスト?
0120名無しさん@お腹いっぱい。05/03/07 18:18:16
>>119 testは組み込み関数だと思われ。w
0121[05/03/07 18:48:43
うんこ
0122名無しさん@お腹いっぱい。05/03/11 06:46:14
気が付くと ~/.zcompdumpというファイルが出来ているのですがこれは何ですか?
0123名無しさん@お腹いっぱい。05/03/11 12:28:04
中見ると、コマンド→補完関数の早見表みたいな感じに見える。
0124名無しさん@お腹いっぱい。05/03/11 23:24:10
complete 関連の初期処理を高速化するためにつくられんだと思うけ。
0125名無しさん@お腹いっぱい。05/03/12 01:25:14
つ ttp://hiki.ex-machina.jp/zsh/?CompletionCache
012612505/03/12 01:30:42
んっ?zcompcacheじゃなくてzcompdumpでしたか。失礼いたしました。

compinit の実行を高速化するためのダンプされたファイル
ってzshのマニュアルに書いてあります。
0127名無しさん@お腹いっぱい。05/03/14 16:25:28
http://hiki.ex-machina.jp/zsh/
Plugin error in 'rss.rb'.
になっててみえないみたい。
0128名無しさん@お腹いっぱい。05/03/14 19:15:07
>>127
http://hiki.ex-machina.jp/ を見るとほとんど死んでいる…
0129名無しさん@お腹いっぱい。05/03/15 01:00:53
直った?
0130名無しさん@お腹いっぱい。05/03/15 16:58:20
cdとかlsみたいなのは履歴に入れないようにしたいんですが,
パターンにマッチしたら追加しない、みたいなことはできますか?
0131名無しさん@お腹いっぱい。05/03/15 19:17:51
accept-line で BUFFER の先頭に空白を入れるとかじゃだめだよね
history に入れない .accept-line ぽいのはないの?
0132名無しさん@お腹いっぱい。05/03/15 19:47:32
ignore_dups するようにしたら 30000 くらいで収束してきた。
0133名無しさん@お腹いっぱい。05/03/15 19:59:11
alias cd='nocorrect cd'
alias ls='nocorrect ls'
では、だめ?
0134名無しさん@お腹いっぱい。05/03/15 20:02:18
>>133
( ゚д゚)ポカーン
0135名無しさん@お腹いっぱい。05/03/15 20:12:20
そりゃだめだろう
0136名無しさん@お腹いっぱい。05/03/16 06:50:09
alias ls=' ls'
とかは?
013713605/03/16 06:51:21
setopt hist_ignore_space でね
013813605/03/16 06:53:42
引数なしの ls だけをってんならちょっと違うか。
その場合 >>131 みたいな widget を作ればいいかな。
0139名無しさん@お腹いっぱい。05/03/19 21:28:50
catぐらい組み込みで提供してほしい
0140名無しさん@お腹いっぱい。05/03/19 21:33:28
>>139
なぜ?
0141名無しさん@お腹いっぱい。05/03/19 21:41:59
>>139

つ < >

NULL_CMD/READ_NULL_CMDね。
014214105/03/19 21:42:37
あー、デフォルトがcatやmoreなだけか。

0143名無しさん@お腹いっぱい。2005/03/24(木) 01:22:31
while read line; do printf '%s\n' $line; done
とか
while read -E; do :; done
とか考えてみたけど、EOF直前の改行の有無が再現できなかった。
0144名無しさん@お腹いっぱい。2005/03/24(木) 01:24:43
で、なぜ外部コマンドのcatでは駄目なのか
0145名無しさん@お腹いっぱい。2005/03/24(木) 17:24:18
まとまったメッセージを表示するときに
cat <<EOF
Usage: xxx [-a] [-b] files...
-a: set a option
-b: set b option
EOF

みたいなのを外部コマンド使わずに書きたいなぁと思ったことはある。
zshでは内部コマンドだけど、echo並べるのも芸がないしな。
0146ニート2005/03/24(木) 17:31:19
>>145
echo 'hoge
...
...
'
0147名無しさん@お腹いっぱい。皇紀2665/04/01(金) 05:06:01
fj.unix.shell が熱い
0148名無しさん@お腹いっぱい。皇紀2665/04/01(金) 06:56:26
fj.unix.shells
0149名無しさん@お腹いっぱい。皇紀2665/04/01(金) 12:27:53
test
0150名無しさん@お腹いっぱい。2005/04/04(月) 11:29:15
test
0151名無しさん@お腹いっぱい。2005/04/04(月) 11:57:06
zshにbashとkshにあるデバッガってないの?
bash → bashdb
ksh → kshdb
0152名無しさん@お腹いっぱい。2005/04/05(火) 09:19:28
zshdb
0153名無しさん@お腹いっぱい。2005/04/07(木) 01:26:59
zsh-4.2.5
0154名無しさん@お腹いっぱい。2005/04/07(木) 11:22:16
echo並べるのはちっとも恥ずかしくないよ。趣味の問題。
0155名無しさん@お腹いっぱい。2005/04/07(木) 11:27:53
>>154
ホシュシニクイ。
0156名無しさん@お腹いっぱい。2005/04/07(木) 12:26:17
どせなら

cat head tail cut sort uniq rev mv touch mkdir rm

ぐらいは内部コマンドで〜

grep find sed

も内部コマンドでいいかも〜
0157名無しさん@お腹いっぱい。2005/04/07(木) 13:04:24
>156
emacs がお望みで?

ちなみに find/sed はかなり内部コマンド的に使える機構がある
** とか :s/// とか
0158名無しさん@お腹いっぱい。2005/04/07(木) 13:49:40
>>153
4.2.4の補完ファイルだと_iconvだけがrejectされるな。
0159名無しさん@お腹いっぱい。2005/04/07(木) 21:15:27
最近zshを使い始めました。
で、憧れだったRPROMPTを使おうと思って、

local GREEN=$'%{\e[1;32m%}'
local BLUE=$'%{\e[1;34m%}'
local DEFAULT=$'%{\e[1;m%}'

PROMPT=$BLUE'${USER}%% '$DEFAULT
RPROMPT=$GREEN'[%~]'$DEFAULT
setopt PROMPT_SUBST

としたら、X上ではうまく表示されるのですが、
コンソール画面だと、文字までRPROMPTと同じ緑色に表示されてしまいます。
どうしたら改善出来ますか?
0160名無しさん@お腹いっぱい。2005/04/07(木) 21:33:05
そもそもあんたのつかっている "こんそぉる" とやらは
カラーをサポートしているのかね?

どのターミナルを使っているとか OS とか $TERM とか
termcap とかを晒せ。というか晒すために調べる時点で分かるだろうけど。
01611592005/04/07(木) 22:01:33
>>160
OSとか書いてなかった・・・。
FreeBSD5.3Rを使っていて、うまくいかないのはXを上げてないときです。
Xを上げて、ktermやmltermなどではうまく表示されています。

設定見直そうと思ったけど、今はPC使えないんだった・・・('A`)
0162名無しさん@お腹いっぱい。2005/04/09(土) 16:18:50
DEFAULT のとこを \e[00m にしたら? DEFAULT ってより RESET だけん。
0163名無しさん@お腹いっぱい。2005/04/15(金) 15:52:33
16進法の展開ってできる?
■ このスレッドは過去ログ倉庫に格納されています