トップページ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リンク
02802742005/11/20(日) 17:34:59
>>277
複雑なワイルドカードのグロビングを入力した後,実行する前に
本当にこれでいいのか確認したいというのが質問の趣旨です。
0281名無しさん@お腹いっぱい。2005/11/20(日) 18:22:25
C-/ で undo すればいいとか
0282名無しさん@お腹いっぱい。2005/11/20(日) 21:31:27
俺も前から思ってたが,グロビングが展開されるのってメリット何かある?
>>281みたいにundoすればいいんだけど,むしろundoしないことはめったに
ない。
0283名無しさん@お腹いっぱい。2005/11/20(日) 21:44:42
複雑な glob の時はさておき、どっちかっつーと
* から一部除きたいとか glob 結果にちょいと手作業修正を
加えたいときに使うね。

ちなみに、おいらの設定では *[tab] は リスト一覧みたいになって
そこから選ぶ(C-g で元通り)になってる(リストの最後の方にglob 全展開がある)。

この設定にするのがどの変数なのかは既に良く分かってない…
0284名無しさん@お腹いっぱい。2005/11/20(日) 21:57:49
* のまま履歴に残ると、間違って履歴を実行したときに
危ないコマンドが暴発しそうな感じがして展開することがあるなぁ
0285名無しさん@お腹いっぱい。2005/11/21(月) 09:05:46
けどエロ画像に展開されたヒストリを残したくないな
0286名無しさん@お腹いっぱい。2005/11/21(月) 09:13:49
一応 .zsh-history は 600 だし…

まあ人前で履歴を辿るのが危険といえば危険?
0287名無しさん@お腹いっぱい。2005/11/21(月) 22:19:27
俺はヒストリー100000だよ.
0288名無しさん@お腹いっぱい。2005/11/22(火) 01:12:09
いや chmod の引数のことっす
02892872005/11/22(火) 04:30:35
>>288
おっと勘違い失礼。長くて複雑なコマンドラインを考えて仕事をいっきに
片付ける人かと思ったよん。考えるより先に手が動くおいらと正反対の。
0290名無しさん@お腹いっぱい。2005/11/23(水) 11:02:04
predictをhogeしてこんなん作ってみた。ただし少し鬱陶しい動作かも
あとなんか色の表示がおかしい。

begin-base64 664 interactive-complete.tar.bz2
QlpoOTFBWSZTWQ6B/OcABqX/lNQwAEB9//+b/+/er///3/4gAAABAAhgCN9Z
5jAWnbH27t64Bt3FNAkOgYSmlMhlQxpG0p5NNCMDRA0aGmgGIaGgZA0BoTIU
8TQmTUJ5Iaepo0NNAAAAAaANDQOaYjIyaZNAMhoyGTIAAAZGmRoGEMgSFEIQ
mxqmNTRoDQaNNMgGhpo00AGmgACNVHqZNGg0AAAAAAAAAAeoAAEiIECaJMAK
eRJ6j0nppGhoAGgZDJkNGQ9T9x0+36WAYqhI8dBFvAlwUo2CGkDFDSCLMwXL
OhTS+drfX49GUXW/JOXwn1lzY+PTnV507sn7F+4qqw4h4TfBpAw+/RwuibSC
wzqjorqOrPjxpraIR7DFZQWEzqcc7IRw2HWjgkxh1DcmsPns3xVFCSpvZsiM
zvv0ozW1gSDCxCRal0U2xsbENsGNNjGNtDMaGGUpVUUEMGgbRBqMymdw4Voo
v2B0KZuI52qWBcAjRzoMkQyfwu6yjFpdWhL0a2xUWVyZjL1aVy/Fgh5XBGpW
E7vkRi96xjnPpY9VJitNks6aL2s7Gm1abBqYy8XfDi0em2Q+gh7kNvbUIVA7
xXpQ51+EOBfdGtN2Uh1UC8Vab7C/dSZndPUNuGnPzbNuq0qZbDtHMfV+SJLJ
b9DPAkhWZoIxLoxaVzt59hzbPOmVDh1jqVqSmNEjCiUE2NkveeW4wmzl4W1v
yE6m2zxbQdlnwgqLobSxwlFmA1HlkGKNZvzs6642FWigdZU2cYZwtjawPkpq
ih8g2op2qfR1rSdkK40wUyxSkLMZwjdR7DC+uIsBhxoA1LEulELbCL5o8JmM
Se1SGMfFbCMQ060qsHxzlWS5oCiFY8IwvQQmgkwiz52KzJYiMkplpBs3GKux
zbG2lu7s7z0jcuDNCqEFfzzlTbhJkIZLgA8k7VFQk/zjCrjBurjWhv7tlt5y
Fi6VUUGbg4NxJ2t6XJ+Y0wKAO3jcmS5DBAsIUtrt3m44UthwSK4asqZC31Fi
rDmowMKe7IZYcRFtztWlBVtZn2fZHQuaU1vvPLnLeyx+fhD04dIvX0UVWItq
x+zY1aVGkgoiyaKKLZbdAsxjtoNpBQmx3UQXesuHfDNhr/I8oztVEztBIdxN
0291名無しさん@お腹いっぱい。2005/11/23(水) 11:02:38
続き

Ugycr+30s7CG1/oh+ofnoy81RlpibSfM5lIoK2VEqJGfz0Q9zqimdMSHYv2v
na9477GTNCnJpG9X5HSHcxhTvuaD7wqWbU7jXm5MrRDldpoQio1lZGSSQU1H
IVE+hwAYthBPmQRQAGkAInILOpBQjUx5Ea8RutzJWuhbeBOPKq8KGqB9WxoZ
dvVwuzkJi+rNHYoRWgm81Aa/Qku7/KHsmVLi+FBpJIEQYsXMuHfG8RsMcSFs
ueJ9wrYOY4Ga7BoaitYHG/zhnFxLfZYg0eDbSEXcA2zDxi0j0EqfIdA9Sfy8
hUYcXtnxlJzGCuMExMPAZE9SRCmMMZxgHmY1jWcLAVKsslivMV+jcx7r0xnt
aqz6LATxNU1RZBPd/zebFWYfxj5GV5IK8zxqlggKFKTeboKJL52hFd4ULRmw
07kB69DITBgI+GnB1YratXudU0o2whNpQlA26bhNl6tkQop22sethgoO/72s
x3ivmt6Ae8h3DpumRAC7/DavhMZLBdhpMCbVJzkl1rMlWVGDr5SGlStDT+t6
uli22K0Rk1m0F0kEQUGkjKd5SzNsLXG1fy3tteN9JVZNEVqrYyzxAygKyLnB
nWP6i2KiIfFmdilJc7k8ivLjB6Gm0kGDJRTLaWAZpOS6umr6isahgRAmBgOJ
gVDCv3BKwrgSi4lmEaA5ERtjiz0ZxCqR0zaO/kLVqNNhtOWOPXj4S8RCxgL6
jVDFW1yI0SNras8PrhaQQoJ2StJK9SiZA/CwFDEfpdQsM55mxFlypamHMHUB
16C5d53jvl2/o2Nx92lZULgeDglL1eckRxevbc88RuyZ75dOznGtT0wdEntl
H8UmTVgNgNbSFMMohjZVjRbPQkCxXwZwVCLzl5YxU5WVDvHmkg82l/I59PSY
KnY/GxHYgxxYzsp6Nl7Uj4EmlqeA9JuY6GjraQ0DGMEmiWcjuVMowj/sjG7+
4imAylzWeqpQxCyEy0Hjltq5PwHvSceJGbxjWYTIL660VKpIVZOVLoq0VgXJ
kBTKSp+yAgdAcPtygKUt566i+7UqlLsO8JFk20ENKdyKrng2LiujbFQL5EOV
AhFSQc9XfwazYj3qbHMtWG1qwIukOV5deuRNFk9F4CQpxkLcyaWkw3GsIuow
7ZKCfceWblVpmOTxAezmocA7ipB1sj458UuYy48p4WOWyPiK4TTYX0g7kki0
m2zYZjLCIYsGJOQmaNtyeaUZJG2hlBwibFEkGoMpRPVHGxppNOeMwdBlnggp


0292名無しさん@お腹いっぱい。2005/11/23(水) 11:03:26
ごめん長い

7+shUpfJ5ipzvKpQsc8EQQLVSYYmFk68ul2fN1c3ZjLPFnlQ1rM0LOTWK2bp
95soEu99rrXpC9S05qnLZxML3ftE8AHSH0enf31TYN4RwB7I8Shcs7aUjhQI
aMV6RdOC+IEKEUIrhKVANWM3AyQLTnuyaOFu0/MFg614rFyuc6mXuvF7uJIH
Uhk755KtSYjdQhXWEuDQkQLJQU2lrNQAhvi6GXBlEgO72OEdQ82V7SYMMbjM
a2nShuRCSDAlzNMLq2EWtQUpWA5GQWa7q+BJ4Hb5hT5ZrUyE0UYPoov/R7fi
8rG1UayQcySDmOWhMwvJA+lhLM37jQ0zkRfIsIv0M550pQmG6+ZLNJgQuiUj
rZ2OH63DpHANdIqlfiLsJ7rkt43BNGyMz0g/4u5IpwoSAdA/nOA=
====
02932902005/11/23(水) 17:12:45
だれかなんか反応くれ〜。
0294名無しさん@お腹いっぱい。2005/11/23(水) 20:01:16
>>290
試すの面倒だから解説よろ
02952942005/11/23(水) 22:03:02
おもしろいけど、たしかに鬱陶しい。
なんか動作が変だし。
02962902005/11/24(木) 04:25:33
>>295
list-choicesっていうのを削ればちょっとましになる。

02972902005/11/24(木) 04:58:55
すこしでも鬱陶しいのを減らすのと自分の好みとして
1.補完候補に色をつけたい(zstyle?)
2.terminalのまんなかあたりより下に
プロンプトがいかないようにしたい
---------------------
|$ls bar
|$tar -xf hoge
| - - - - - - - - - -<-ここより下にいかない
|
|
---------------------

1.は(とてもじっくり調べれば)なんとかなるっぽいけど
2.がわからん
0298名無しさん@お腹いっぱい。2005/11/24(木) 11:22:51
>>290

2.はターミナルの問題な気が…。
0299名無しさん@お腹いっぱい。2005/11/25(金) 00:15:29
>>279
zstyle の completer の _expand を自作の _list_expand とかに
すればよさそうだけど、これ多分めんどいね。

これやるなら expand-or-complete 使ってる場合は complete-word にしないといけない。
0300名無しさん@お腹いっぱい。2005/11/25(金) 00:51:06
誰か freebsd 用の _ls 持ってない?
-T で tabsize になるのが不便だ。いや消せばいいんだけど。
0301名無しさん@お腹いっぱい。2005/11/25(金) 01:01:24
>>297
2. って意味あるの?
03022902005/11/25(金) 08:59:17
>>301
いわれてみれば気づいたけれど意味あんまり無いな

結局鬱陶しいと思うひとにはどう足掻こうと鬱陶しいだろうし
(自分的には気にならない)
補完に色付ける方法もなんかわかったしなんか
そこそこ満足してしまったからまあべつにいいや
0303名無しさん@お腹いっぱい。2005/11/25(金) 10:19:57
1って
zstyle ':completion:*' list-colors #{(s.:.)LS_COLORS}
みたいにやってできるやつのこと? それとも、もっと高度な処理を期待している?
03042902005/11/25(金) 21:06:30
>>303
亀レスすまん
補完候補はそれで色付けられたから
補完候補に付いては満足
ただもしできるならば例えばemergeを補完するときに
$ emer|
(|はキャレット)までうって
$ emer|ge
と補完されたときキャレットより右側の補完された文字列
に色を付けたい
echo -n '\e〜'
でもいいけど動作がおかしくなるからそれ以外ってある?
0305名無しさん@お腹いっぱい。2005/11/26(土) 17:14:46
ないと思う。
03062902005/11/26(土) 20:37:44
やっぱそうだよね・・・
0307名無しさん@お腹いっぱい。2005/11/28(月) 01:29:40
% : \x9c  a
  a[改行なし]

なにコレ
0308名無しさん@お腹いっぱい。2005/11/28(月) 20:16:55
なにそれ?
0309名無しさん@お腹いっぱい。2005/11/29(火) 02:15:15
% echo \x9c a
 ax9c a

じゃあコレ。
0310名無しさん@お腹いっぱい。2005/11/29(火) 02:57:24
% echo \x9c a
x9c a
となるんだが
0311名無しさん@お腹いっぱい。2005/11/30(水) 01:27:31
すまないそしてありがとう。
これは screen 用に

preexec () echo -n "\ek$1\e\\"

としていたところ、 echo によって解釈された \x9c ('\') が
どうも \ek に対する終端になっていた模様。
# man screen には \x9c に関するそうした記述は見当たら
# なかったが
ついでに \ek の後に来る文字列の最大長が 255 である様子
なので、それも考慮したらこうなった。

preexec () echo -nE $'\ek'"${1[1,255]}"$'\e\\'
0312名無しさん@お腹いっぱい。2005/11/30(水) 15:29:37
Zsh 4.2.3 で svn の補完をしようとして,
$ svn add [TAB]
とすると以下のようなメッセージが表示されてしまいます.

>_arguments:comparguments:208: invalid argument: <引数>

言語関係の設定は以下のようになっています.どうするのが良いでしょうか?
LANG=ja_JP.eucJP
LANGUAGE=ja
LC_CTYPE=ja_JP.eucJP
0313名無しさん@お腹いっぱい。2005/12/05(月) 23:14:31
Version 4.2.6 of zsh has been uploaded to ftp.zsh.org/pub and to
Sourceforge. The changes are minor: mostly bugfixes, with a few
enhancements to completion functions.

In case you haven't been following development, you should be aware that
a development version 4.3.1 will be released soon (before Christmas,
unless I get really tied up) which will contain support for multibyte
character sets such as UTF-8 in the line editor (though there's not yet
not much support in the main shell). This appears to be working quite
well already.

(4.3.0 was the version number used during initial development on the
branch, so doesn't correspond to a release.)
0314名無しさん@お腹いっぱい。2005/12/05(月) 23:20:37
>>313
クリスマスまでにマルチバイト対応ですか。
0315名無しさん@お腹いっぱい。2005/12/06(火) 10:53:51
>>313
おっ
やっとか
0316名無しさん@お腹いっぱい。2005/12/06(火) 11:14:19
EUC も OK?
0317名無しさん@お腹いっぱい。2005/12/07(水) 00:13:36
だめじゃない?と思ったら such as UTF-8 か。
UTF-8 しか相手にしてないと思ってたよ。期待しよ。
0318名無しさん@お腹いっぱい。2005/12/07(水) 00:49:23
EUC-JPなら今でも普通に使えるよ。
0319名無しさん@お腹いっぱい。2005/12/07(水) 01:10:56
ちょっとおかしいやん。
patch 当てれば完璧なんかな。
0320名無しさん@お腹いっぱい。2005/12/07(水) 09:52:02
EUC は
| http://www.ono.org/software/zsh-euc/
FreeBSD ports によれば
| What I did over this is disable the hack for non-EUC locales.
ということであった

本家で普通に綺麗に EUC 扱えるようになると良いね
0321名無しさん@お腹いっぱい。2005/12/08(木) 19:02:44
>>312
>>43-
0322名無しさん@お腹いっぱい。2005/12/10(土) 00:50:41
I've put a test release of zsh 4.3 in the pub/development directory of
ftp.zsh.org. It's unlikely to differ much from 4.3.1 when that appears.

The main new feature compared with 4.2 is multibyte support. This is
only enabled by default on some machines (most recent PC Unix-like
targets in particular). Reports on other machines where it works (or
compiles but doesn't work) when you explicitly supply --enable-multibyte
to configure would be useful.

The documentation package for 4.3 contains a PDF file instead of a
PostScript file. This should be easier to browse.
0323名無しさん@お腹いっぱい。2005/12/10(土) 23:36:06
4.3.0-dev-2 試してみたけど、ふつーに、euc-jp 使えたよ。
0324名無しさん@お腹いっぱい。2005/12/11(日) 22:09:28
>>311 みたいに preexec で ${1[1,255]} とか
$1 を添字つきで使うと
history -D で出る elapsed times が 0:00 になってしまう。
ナンダコレ。
0325名無しさん@お腹いっぱい。2005/12/20(火) 15:25:16
~/.zshrc に以下のように書いてプロンプトの先頭からタブを何回か打ち,
次の行まで行ったあと Ctrl-a を打っても先頭までもどらず,
プロンプトの終わりからカーソルまで空間ができてしまいます.
colors を使わなければ正常なのですが,
colors を使うと上のようになってしまうのはなぜでしょうか?

autoload -U colors; colors
PROMPT="$fg[cyan]%n@%m$reset_color $"
0326名無しさん@お腹いっぱい。2005/12/20(火) 23:44:20
>>325
colorsを使わず直接エスケープシーケンスを入れて回避することにしました
0327名無しさん@お腹いっぱい。2005/12/22(木) 12:15:41
zshrc に export RED=$'%{\e[1;31m%}' とか書いてると
export を実行した時の出力にも色が付いて見にくいです

RED='%{%}' <2個めの%以降が赤
SHELL=/bin/zsh <全部赤
SHLVL=2 <全部赤

何か回避策はありませんか
0328名無しさん@お腹いっぱい。2005/12/22(木) 13:23:36
export しなきゃいけないの? (shell 変数じゃ駄目?)

あとは RED でなく
COLOR_{R,G,B,C,M,Y,...} みたいにして
COLOR_ZZ 辺りに戻すシーケンスを入れておく

おいらのは
CLbgK='\033[0;40m'
...
CLfgWb='\033[1;37m'
CLreset='\033[0m' (←alphabet order で最後に来るようになってる)
0329名無しさん@お腹いっぱい。2005/12/22(木) 13:54:19
>>328
> export しなきゃいけないの?
うわあぁ export じゃなく local にして解決しました
アホでした
0330名無しさん@お腹いっぱい。2005/12/22(木) 14:04:20
あとは >328 みてもらえれば分かるけど
shell script で使いたいだけなら echo したときに
初めて esc として評価されるような書き方をしておくと
set で出るときには色はつかない。
0331名無しさん@お腹いっぱい。2005/12/24(土) 05:01:48
>>325
PROMPT="%{$fg[cyan]%}%n@%m%{$reset_color%} $"

が正しいのでは。
0332名無しさん@お腹いっぱい。2005/12/26(月) 14:26:58
>>331
それでうまくいきました.
エスケープ文字でカーソル位置を変えないようにするには
%{...%} でくくっとかないといけないんですね.
0333名無しさん@お腹いっぱい。2005/12/27(火) 11:18:22
文字列でエスケープ文字を直接入力以外で表現する方法ある?
echoに渡すなら\eとか\033とか使えるけど、PROMPTに使いたいんだよね。
0334名無しさん@お腹いっぱい。2005/12/27(火) 16:22:58
PROMPT="..$(echo \e)..."
という感じでechoの結果を埋め込むっていうのはどう?
03353332005/12/27(火) 17:56:55
よく読んだら前のレスにヒントがあった。$'...\e...'とすればいいのね。
先達よありがとう。
0336名無しさん@お腹いっぱい。2005/12/28(水) 01:55:39
ユーザがコマンドとして使うことを意図しない関数の命名法って
決まっているのでしょうか?
_で始まるのは補完用みたいですが……。
0337名無しさん@お腹いっぱい。2005/12/30(金) 04:11:03
クリスマスって 1月6日までか?
0338名無しさん@お腹いっぱい。2006/01/08(日) 23:52:37
zsh 4.3.0-dev-2使ってみたけど、EUCも一文字として扱ってくれる。
0339名無しさん@お腹いっぱい。2006/01/09(月) 09:10:16
あんまり関係ないけどこんなのどうですか?

i=0
PROMPT='%U$USER%{^[[$[31+(i/3)%6]m%}@%{^[[m%}%U%m%#%u '
RPROMPT='%U%{^[[$[31+(i++/3)%6]m%} %~ %{^[[m%}'
0340名無しさん@お腹いっぱい。2006/01/09(月) 09:39:06
既に起動してる状態で$PROMPTとかを変えるってどうするの?
なんか反映されないのだけど
0341名無しさん@お腹いっぱい。2006/01/09(月) 09:55:05
.zshrc で変えていること自体 "起動している状態" で変えているわけだが
0342名無しさん@お腹いっぱい。2006/01/09(月) 11:47:23
それはとにかく変わんないんだもん
0343名無しさん@お腹いっぱい。2006/01/09(月) 13:08:39
% PROMPT=hogehoge
0344名無しさん@お腹いっぱい。2006/01/09(月) 13:49:20
反映されないよ。俺の環境変なのかな。
0345名無しさん@お腹いっぱい。2006/01/09(月) 13:51:00
実は zsh 使ってないだろ?
0346名無しさん@お腹いっぱい。2006/01/09(月) 13:58:03
ごめん。precmdで毎回更新してたorz
0347名無しさん@お腹いっぱい。2006/01/09(月) 14:45:12
>>346
precmdで何してる?
0348名無しさん@お腹いっぱい。2006/01/09(月) 15:38:44
if [ $? = 0 ] ; then
PROMPT="%{^[[34m%}%m:%{^[[m%}%(1j.%{^[[31m%}%j:%{^[[m%}.)%{^[[35m%}%.%# %{^[[m%}"
RPROMPT="%{^[[35m%}%~%{^[[m%} %{^[[36m%}%T%{^[[m%}"
else
PROMPT="%{^[[34;07m%}%m:%{^[[m%}%(1j.%{^[[31;07m%}%j:%{^[[m%}.)%{^[[35;07m%}%.%# %{^[[m%}"
RPROMPT="%{^[[35;07m%}%~%{^[[m%} %{^[[36;07m%}%T%{^[[m%}"
fi
}
こんなこと
0349名無しさん@お腹いっぱい。2006/01/09(月) 18:20:06
っ%(?.foo.bar)
0350名無しさん@お腹いっぱい。2006/01/09(月) 19:47:19
>>349
試してみたけど、$?が0の時に駄目みたい
0351名無しさん@お腹いっぱい。2006/01/09(月) 20:12:55
あ、そういうことか
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ライフが遅れそう
ありがとうございますた
■ このスレッドは過去ログ倉庫に格納されています