■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50



レス数が1000を超えています。残念ながら全部は表示しません。

zsh入門

1 :名無しさん@お腹いっぱい。 :2001/05/19(土) 23:42
なんかそろそろzshの補完機能をじっくりいじろうかなぁと思ったんですけど
compctl読みにくいですねぇ…
自分で書いたのもいまいちしっくり来ない…

ってことでみんなの.zshrc(主に補完部分)を見せ合いっこしませんか?
自分はまともなの書けてないですが…
zstyleも勉強したいので大歓迎
 というか参考文献が少なすぎるのでかなり喜ばれるはず

いままで他のshellを使ってきた方もこれを機に一緒に勉強しましょー

とりあえず自分のオプションはこんな感じです。tcshライクになってます。
bindkey -e
bindkey ' ' magic-space
bindkey '^W' kill-region
bindkey '^Q' reverse-menu-complete

setenv () {export $1="$@[2,-1]"}
unsetenv (){unset $1}

setopt prompt_subst
setopt nohup
setopt auto_cd GLOB_COMPLETE
setopt auto_remove_slash
setopt extended_history hist_ignore_dups
setopt prompt_subst
setopt pushd_ignore_dups rm_star_silent sun_keyboard_hack
setopt extended_glob list_types
setopt no_beep always_last_prompt
setopt cdable_vars sh_word_split auto_param_keys no_clobber
setopt complete_aliases setopt complete_in_word auto_list
unsetopt list_ambiguous auto_menu



774 :名無しさん@お腹いっぱい。 :02/09/14 09:04
>>773
rename aaa bbb *.aaa
でいいじゃん

775 :名無しさん@Emacs ◆UMAAAAAA :02/09/14 11:41
(゚д゚)ウマー

776 :名無しさん@お腹いっぱい。 :02/09/15 13:23
Linuxじゃないとrenameって入ってないんじゃない?

777 :772 :02/09/15 13:29
そうなんですか。だからうちの FreeBSD には rename(1) がないのか。
>>723さんの方法を使わせてもらってます。

ってか zsh 関係なかったですね。
なんか zsh の機能でズバズバって出来ると思ったのですが。


778 :名無しさん@お腹いっぱい。 :02/09/15 19:11
結局、mv を使う限りループを作らないといけないしね。
もうちょっと簡単に書くと

% for f in *.aaa; do mv $f $f:r.bbb; done

ぐらいか。適当にいじってエイリアス、というより関数を作って
おけば、汎用的に使えるでしょう。

779 :名無しさん@お腹いっぱい。 :02/09/15 19:12
>>777
perl-5.6.1.tar.gz::perl-5.6.1/eg/rename
Linuxだからどうこうとかは関係ありません

780 :名無しさん@お腹いっぱい。 :02/09/15 19:48
4.0.6に対応したeucパッチまだかなぁ、、、

781 :名無しさん@お腹いっぱい。 :02/09/15 19:50
sedはいらないのだ。ムフフ
for f in *.aaa; do mv $f $f:s/aaa/bbb/; done

782 :名無しさん@お腹いっぱい。 :02/09/15 20:12
>>779
明らかにそれとは別物だが…

783 :名無しさん@お腹いっぱい。 :02/09/15 22:28
zshっぽく書くなら
% for f (*.aaa) {mv $f ${f%aaa}bbb}
じゃない?


784 :名無しさん@お腹いっぱい。 :02/09/19 22:26
>>596
この、補完対象にディレクトリを含めるのってどうやればいいのですか?

785 :名無しさん@お腹いっぱい。 :02/09/24 16:30
zsh4.0.6を入れたのですが、StartupFiles/zshrcを使うと
command not found: bindkey
command not found: zstylec
などのエラーが大量にでます。
インストール失敗ですか?

786 :名無しさん@Emacs :02/09/24 17:04
>>785
(゚Д゚)ハァ?

787 :785 :02/09/24 21:51
>>786
スマソ。やり直したらできました。初心者のくせにMakefile弄ったからだ・・・

788 :名無しさん@お腹いっぱい。 :02/09/25 15:29
[質問]

$ cd tmp

と打つと、

cd ~/tmp

のように変換されてヒストリに記録することはできますか?


789 :名無しさん@Emacs :02/09/25 16:04
できません

790 :名無しさん@お腹いっぱい。 :02/09/26 00:04
>>788
その展開の規則が良く分からない。
カレントディレクトリに tmpがなければ、$HOMEを見に行って展開するってことか?


791 :名無しさん@お腹いっぱい。 :02/09/26 08:39
>>790
$CDPATH 見てるんじゃないの?


792 :名無しさん@お腹いっぱい。 :02/09/26 11:24
>>790
最終的には `cd ' と入力したあとに、M-p でヒストリを検索したいのです。

たとえば、

~ $ cd tmp
~/tmp $ cd foo
~/tmp/foo $ cd bar
~/tmp/foo/bar $ cd

ここで、M-p で
cd ~/tmp/foo/bar, cd ~/foo/foo, cd ~/tmp がヒットして欲しい。



793 :名無しさん@お腹いっぱい。 :02/09/26 12:04
AUTO_PUSHD を有効にして cd -TAB... じゃ駄目ですか。

794 :名無しさん@お腹いっぱい。 :02/09/26 14:16
>>793
792じゃないけどサンクスそれカコイイな。

795 :名無しさん@お腹いっぱい。 :02/09/26 14:33
>>793
792だけど、それ(・∀・)イイ!!



796 :名無しさん@お腹いっぱい。 :02/09/26 14:36
(・∀・)イイ!! と思ったが、やっぱ使いにくかった


797 :名無しさん@お腹いっぱい。 :02/09/26 14:39
2つのディレクトリ間を行ったり来たりするのは、「cd -」を
連発すればいいのだが。
3つ、4つのディレクトリ間を行き来するとき、なんかいい方法がないかな。


798 :名無しさん@お腹いっぱい。 :02/09/26 14:46
>>797
pushd, popd とか?

799 :709 :02/09/26 15:22
man見たらわかりました。
autoload -U compinit;compinit -u
でできました。


800 :793 :02/09/26 15:43
>>796
書いておいて何ですが、実は自分も滅多に使いません(w

「-」を打つのがどうも面倒。それに履歴に cd -3 などが残っても
使い廻しに利かないというのもあります。まあ、HIST_IGNORE_SPACE を
有効にしていれば、頭にスペースを入れれば済む話ですが、cd を使うのに
そこまで神経を使いたくないし。

>>797
以前どこかで手に入れた
alias gd='dirs -v; echo -n "select number: "; read newdir; cd -"$newdir"'
というのはどうですか。対話的になってしまいますが。AUTO_PUSHD を有効に
しないと余り効力はありません。

これはそこそこ使ってます。

801 :名無しさん@お腹いっぱい。 :02/09/26 18:55
漏れはgd使ってるけどcd -の方がいいな。
まあ履歴のことは気にしない。
「-」を打つのが面倒ってのはよくわからんが。

802 :名無しさん@お腹いっぱい。 :02/09/26 19:36
*~hogeでhoge以外のファイルに展開されるけど,
ディレクトリを指定して./*~hogeとするとhogeも入ってしまう。
なぜだろう。

803 :名無しさん@お腹いっぱい。 :02/09/26 20:00
>>802
手許ではちゃんと動作しているように思えるが…
具体例キボンヌ

804 :名無しさん@お腹いっぱい。 :02/09/26 21:17
>>803
まじですか。3.05,4.01,4.06で試したけど全部なりました。
具体例ってそのままなんですが、
ls -d *~hogeだとhoge以外のファイルが表示されるのですが、
ls -d ~/*~hogeだとhogeも表示されます。

805 :名無しさん@お腹いっぱい。 :02/09/26 21:53
>>804
すまん、試したときにワイルドカードを使っていた。
確かにそのとおりの結果になるねえ。
ls -d ~/*~*hoge
だと大丈夫なのだが。

~の解釈が変わってしまうのだろうか

806 :名無しさん@お腹いっぱい。 :02/09/26 23:43
E の文字のエコーバックが1秒くらい遅れるんだけど、うちだけ?
おなじターミナルでbashやtcshだとなんともないんですが。

807 :名無しさん@お腹いっぱい。 :02/09/27 00:11
>>802
./*~./hoge としないとだめなのかな?

808 :名無しさん@お腹いっぱい。 :02/09/27 01:41
>>797
screenを使うとか。
いや、おれは実際にそうしてる。

809 :名無しさん@お腹いっぱい。 :02/09/27 09:07
>>801
> 「-」を打つのが面倒ってのはよくわからんが。
ホームポジションから離れているという意味合いだったんですが、
その割には「=」を打つのは苦にならない(w

多分、「~-」としなけりゃならなかった時代の感覚が残っているのかも
しれません。今でもサブディレクトリに入っていこうと思えば省略は
できませんし、当然ながら補完もしてくれません。

手許の zsh(4.0.4) では、^I を expand-or-complete にしていると補完時
の動作が嬉しくないですね。menu 系だと大丈夫ですが。

>>808
実際 screen は使っているのですよ。ただ X 上では幾つか端末窓がある
方が便利なので(移動も早い)、screen はそのうちの一つでしか使ってません。
一画面一窓で使っているので、窓の切替えを screen ではなく X 上の
window manager に頼っている感じです。でもまあ、固定窓に限ったような話
ですかね。

810 :名無しさん@お腹いっぱい。 :02/09/27 14:17
>>805>>807
なるほど。./*~./hogeとしないといけないのか。
実はサブディレクトリのあるファイル以外のファイルを全て削除しようと
おもってやったら、全部消えてしまったという話なんです。
たまたまどうでもいいファイルだったから良かったんですけどね。
削除するまえにechoなりlsなりで確かめなくてはいけませんね。

811 :名無しさん@お腹いっぱい。 :02/09/27 15:14
>>810
> 実はサブディレクトリのあるファイル以外のファイルを全て削除しよう
何通りにも解釈できて事情が判然としない。済まないが、もう少し詳しく
説明してくだされ

812 :名無しさん@お腹いっぱい。 :02/09/27 17:43
>>811
すんません。あるディレクトリにa,b,cの3つのファイルがあったとして、
a以外のファイル(b,c)を削除するということです。
素直にそのディレクトリにcdすればよかったんですけどね。

813 :名無しさん@お腹いっぱい。 :02/09/28 12:15
>>812
ああ、なるほど。そう書いてもらうと、それ以外の解釈のしようがないように
思えてきた(w

試行錯誤したところ、./(*~hoge) のように括弧でくくるとうまくいくみたい。

814 :名無しさん@お腹いっぱい。 :02/09/28 16:43
zsh-4.0.5/Functions/Misc/zmvは便利


zmv -w '**/*.txt' '$1$2.lis'
zmv '(*).txt' '$1.lis'



などね。

815 :名無しさん@お腹いっぱい。 :02/09/29 02:30
>>814 は神!!!

と思った漏れは逝ってヨシ?

816 :名無しさん@お腹いっぱい。 :02/09/29 10:15
どうやって使うの?
zmv っていうコマンドはないんだけど。

817 :816 :02/09/29 10:19
~/.zshrc に
autoload -U zmv
か。Google で調べたらあった。

818 :816=772 :02/09/29 10:22
>>772 なんですが zmv 使えばよかったのですね。
こういうのを探していたんです。

>>814 ありがとう!

819 :名無しさん@お腹いっぱい。 :02/09/29 12:16
FreeBSD 4.7RC zsh 4.0.6 です。

% /usr/local/bin/jman ls
とやると日本語で man が表示されます。

>>725 のように ~/.zshrc に書いて ESC-h で man を表示
させると 英語の man が出ます。
run-help () { LC_CTYPE=ja_JP.eucJP w3mman "$@" }
こんな感じでやれば日本語 man が表示されると思ったのですが駄目でした。

zsh から w3mman で日本語 man を表示させる方法を教えて下さい。

820 :名無しさん@お腹いっぱい。 :02/09/29 13:22
share/zsh/4.0.6/functionsにzなんとかってのたくさんあるね。
なんかzmvの他に便利なものありますか?
でもなんでMiscってのがないんだろ?

821 :819 :02/09/29 13:32
zsh と関係ないっぽいので w3m のスレ行きます。

822 :名無しさん@お腹いっぱい。 :02/09/29 13:35
>>820
> でもなんでMiscってのがないんだろ?
ソースと配置が変わっているだけ

823 :名無しさん@お腹いっぱい。 :02/09/30 20:15
亀レス。
>>800,801
> 漏れはgd使ってるけどcd -の方がいいな。
> まあ履歴のことは気にしない。
> -」を打つのが面倒ってのはよくわからんが。
'cd -'をタイプするのが面倒なので alias bk='cd -' としてます。
2つのディレクトリ間を行き来して作業するには便利。
もちろん gd も使ってますけど。

824 :814 :02/09/30 20:16
ああ、ごめんごめん。
/usr/local/src/zsh-4.0.5/Functions/Misc/zmv
ってのはソースディレクトリ。
tarボール展開したら、この構成になっているはず。
その下にインストールされていないものも色々あるので、
三徳とよいよ。



825 :名無しさん@お腹いっぱい。 :02/09/30 20:37
こういうのをUUの連載でやってほしいな〜。


826 :名無しさん@お腹いっぱい。 :02/09/30 20:37
http://examples.oreilly.com/cookbook/pcookexamples.tar.gz
のなかの
ch09/rename

標準の
/usr/bin/rename
もつ買い方、嫉妬区と良いよ。
とくにperlのrenameはzmvよりある意味強力かも。


827 :名無しさん@お腹いっぱい。 :02/09/30 20:39
日本語変換に何使っているんだ?

828 :814 :02/09/30 21:38
IME2000

829 :名無しさん@お腹いっぱい。 :02/09/30 22:12
>>596 を使って mplayer の補完が便利になった。

% ls -R
a.mp3 b.mp3 a/ b/

./a:
a.mp3 b.mp3

./b:
a.mp3 b.mp3

こういうディレクトリ構成だったとする。

% mplayer a[TAB]

した時に a.mp3 だけが選択されてしまう。a/b.mp3 を補完したかったかも
しれないのに。(この例では a/ が短いからいいけど長いと大変)

どうにか対処出来ないでしょうか?


830 :名無しさん@お腹いっぱい。 :02/10/01 02:33
>>829
infoより。

zstyle ':completion:*' file-patterns \
'%p:globbed-files *(-/):directories' '*:all-files'

mpalyerだけこうしたいなら、 ':completion:*:*:mplayer:*'

831 :829 :02/10/01 02:42
>>830
> mpalyerだけこうしたいなら、 ':completion:*:*:mplayer:*'

それをどこに書くのでしょうか?

832 :名無しさん@Emacs :02/10/01 11:56
>>831
info

833 :829 :02/10/01 11:59
info に書くのですね。ありがとうございました。

834 :829 :02/10/01 12:01
と、いうのは冗談で、~/.zshrc に書いたら望みように動きました。
ありがとうございました。

835 :名無しさん@お腹いっぱい。 :02/10/01 12:17
>>602 のように zstyle だけで済ましてもよかったのではないか

836 :名無しさん@Emacs :02/10/01 17:49
${PATH//:/ } を展開すると

/usr/bin\ /bin\ /usr/X11R6/bin\ /usr/local/bin

と展開される。
backslash が出ないようにするにはどうしたらいいでしょうか?


837 :名無しさん@お腹いっぱい。 :02/10/01 18:24
${(s/:/)PATH} とか

838 :836 名無しさん@Emacs :02/10/01 19:10
>>837 できました、サンクス。


839 :名無しさん@お腹いっぱい。 :02/10/02 23:47
PATH限定なら $path とか。


840 :名無しさん@お腹いっぱい。 :02/10/08 03:17
zshって、cshみたく
while
 処理
 @ num++
end


ってな書き方できますか?

841 : :02/10/08 04:23
まずやってみれ。

842 :名無しさん@お腹いっぱい。 :02/10/08 17:59
>>841同意

843 :名無しさん@お腹いっぱい。 :02/10/08 21:12
UNIX USER11月号

・GLOBオプション有効時のファイル名|ディレクトリ名展開
・EXTENDED_GLOBオプション有効時のファイル名|ディレクトリ名展開

844 :マルチホームディレクトリ :02/10/09 00:49
$HOME を変えても ~ が変わらない...
どうやったらいいんでしょうか?

845 :名無しさん@お腹いっぱい。 :02/10/09 02:18
>>844
ハァ?何がしたいの?

846 :名無しさん@お腹いっぱい。 :02/10/09 04:43
>>844
ちょっと面白かった。3点

847 :名無しさん@お腹いっぱい。 :02/10/09 05:27
あだ名を付けてもらっても 戸籍が書き換わらない...
どうやったらいいんでしょうか?

みたいな感じ?

848 :名無しさん@お腹いっぱい。 :02/10/09 08:52
>>844
$ HOME=/home/foo/bar zsh


849 :844 :02/10/09 12:04
>>845
mkdir ~/tcsh ~/zsh
echo 'export HOME=$HOME/zsh;zsh' > .bash_profile
とやると,zsh専用のホームディレクトリができるのですが,
$HOMEはだませても~がだませない.それではまっています.
スクリプトの「~」は「$HOME」に変更したけど,
「vi ~/.vimrc」とかできない!
>>847
そんな感じです.たいていの場合困らないけど,ときどき困る.

850 :名無しさん@お腹いっぱい。 :02/10/09 13:03
>>848
ありがとう!できました.848は神

851 :名無しさん@お腹いっぱい。 :02/10/09 13:24
(´-`).。oO(不思議なことをするひとがいるものだ・・・)

852 :名無しさん@お腹いっぱい。 :02/10/09 16:48
( ゚Д゚)ポカーン

853 :名無しさん@お腹いっぱい。 :02/10/09 17:04
ほんとだ。これ結構おもしろいかも。
当然.zshrcがないからデフォルトになってたよ。

854 :名無しさん@お腹いっぱい。 :02/10/09 22:26
Unix User 発売age

855 :名無しさん@お腹いっぱい。 :02/10/09 22:55
>>849
それってどういう御利益があるのかいまいちわからないのだけど、
そうやるとなにが嬉しいの?

856 :名無しさん@お腹いっぱい。 :02/10/09 23:10
>>854
初心者向けの連載だったのか。

857 :名無しさん@お腹いっぱい。 :02/10/10 00:20
>>854

(・∀・)ニヤニヤ

858 :名無しさん@Emacs :02/10/10 03:05
(´∀`)< shellなんて、なんでもいいじゃん!と言ってみるテスト


859 :名無しさん@お腹いっぱい。 :02/10/13 14:09
{1..33}
みたく
{a..z}
として
a b c d e f . . . z y z
と生成したい。
何か方法ない?

860 :名無しさん@お腹いっぱい。 :02/10/13 14:39
{a-z} じゃ駄目?
何かのオプションをセットする必要があるかもしれないけど

861 :名無しさん@お腹いっぱい。 :02/10/13 16:52
tcshだとhistory-search-{backward,forward}で
それまでに入力した文字列から始まるhistoryを呼び出すことができますが
zshだと
入力したコマンド名から始まるhistoryが呼び出され、コマンド名以降の引数が無視されます
tcshと同じ動作をさせるにはどうすればいいでしょうか?

862 :名無しさん@お腹いっぱい。 :02/10/13 19:02
>>861

同じ動作かどうかは知りませんが
bindkey "^P" history-beginning-search-backward
bindkey "^N" history-beginning-search-forward
これで満足でしょうか?

863 :名無しさん@お腹いっぱい。 :02/10/13 20:04
>>861
history-beginning-search-{backward,forward}-end なんてのもある

864 :名無しさん@お腹いっぱい。 :02/10/13 22:51
http://omaemona.sourceforge.net/packages/zsh/

865 :名無しさん@お腹いっぱい。 :02/10/14 01:19
>>862-863
ありがとうございます。よく見たら既出しまくりでしたね(恥
# Ctrl + P/N で履歴検索 tcsh風味
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end


866 :744 :02/10/15 08:24
>>744 ですが ESC-, と ESC-/ がなんだか今だにわかりません。
(zsh 的に書けば ^[, と ^[/ )
配布ファイルの中に入っていた reporter を実行してみましたが
何かの機能に割り当てられているのをみつけられませんでした。


867 :名無しさん@お腹いっぱい。 :02/10/16 14:36
zshのヒストリーファイルをtcshのヒストリファイル形式に変換したいんです
けど、変換用スクリプト、ご存知の方いないでしょうか?


868 :名無しさん@お腹いっぱい。 :02/10/16 14:46
>>867
↓これでいけるかな?
sed 's/^: /#+/' | sed 's/:[0123456789]*;/\
/'

869 :名無しさん@お腹いっぱい。 :02/10/16 16:05
最後の\は必要あるんですか?といってみるテスト

870 :名無しさん@お腹いっぱい。 :02/10/19 00:41
zshに限ったことではないけど、
%ls
dump-1 dump-11 dump-13 dump-15 dump-17 dump-19 dump-20 dump-22 dump-4 dump-6 dump-8
dump-10 dump-12 dump-14 dump-16 dump-18 dump-2 dump-21 dump-3 dump-5 dump-7 dump-9

%more dump-*
1.dump-1 の内容確認
2.スペースでdump-2 の内容確認
3.dump-3の確認
といきたいところですが、
実際にはdump-1→dump-10となってしまうので、
%foreach i ({1..22});more dump-$i;end
みたいに強制的に順番どおりにすれば、一気に全部スクロールしてしまう。

一つ一つのファイルを自分の指定順で閲覧するいい方法ありませんか?

871 :名無しさん@Emacs :02/10/19 01:50
>>870
> %more dump-*
ここのワイルドカード展開が、"dump-1 dump-10 dump-2 (以下略)"になる
のが元凶だよね、きっと。こういうのは?

% foreach i ({1..22});echo -n "dump-$i ";end | xargs more

bashで確認したのはこんなコマンドライン
% for i in `seq 1 22`; do echo -n "dump-$i "; done | xargs more


872 :名無しさん@お腹いっぱい。 :02/10/19 05:06
setopt NUMERIC_GLOB_SORT とすればいいのです

873 :871 :02/10/19 05:18
触れるのを忘れてました。

>>870
> %foreach i ({1..22});more dump-$i;end
これは more dump-{1..22} でいいですね。ファイル名の展開じゃなくて生成になりますが。
連番のファイル名の抜けを見つけたい場合などに活躍してくれます(w


掲示板に戻る 全部 前100 次100 最新50

read.cgi ver5.26+ (01/10/21-)