zsh その7
.の後にスペースを入れたように見えるけど実際には.を使ってたりする じゃあ俺、mkdir .zshrc して帰るから(鬼畜) じゃ俺はそれをrm -rf . zshrcで消しとくね (( )) 内の浮動小数変数のデフォルト型をdoubleにする設定ってないですか? zsh-5.0.8 → zsh-5.1.1(zsh-5.2 も同様) と上げたら、 menu-complete → reverse-menu-complete で reverse-menu-complete が確定→補完開始するようになった。(バグ?) zsh-5.0.8 は確定せずに候補選択の逆順移動をする。 zsh-5.0.8 と同じ動きにする方法ってある? >>448 setopt FORCE_FLOAT でどうでしょう。 と思ったら浮動小数変数のデフォルト型ですか。 何もしなくても double では? 表示の有効桁数のことですか? compinit するとなるようですね。もっというと zle -C reverse-menu-complete .reverse-menu-complete _main_complete でなる。(_main_complete でなくても。) zsh-5.0.8 でも compinit すると complete-word, menu-complete とかで 新しい補完を開始してしまう。 ので、reverse-menu-complete 以外は前から問題があったのかな? zle -C 前の reverse-menu-complete や .reverse-menu-complete なら 新しい補完を開始することはない。 が、menu completion 中以外について、 当然 _main_complete は呼ばれないし、なぜか compinit なしの補完もしない。 menu completion 中しか reverse-menu-complete を使ってないので 姑息ながら、とりあえず .reverse-menu-complete で凌ぐ。 seq 1 10 | echo `grep 5` `grep 3` bashだと5が表示されるけど、zshだと完全に固まるね(^Cも^Zも受け付けない) 5.2 では % seq 1 10 | echo `grep 5` `grep 3` grep: (標準入力): 入力/出力エラーです 3<eof> ← 入力 3 となる。けど % zsh % seq 1 10 | echo `grep 5` `grep 3` でなぜか固まるね。 ↓ は期待通りかな。 % zsh -c 'seq 1 10 | echo `grep 5` `grep 3`' 5<eof> ← 入力 3<eof> ← 入力 5 3 bash とは多分仕様が違うけど、 bash は POSIX compliant なのかな? 正しく動けば zsh の方が使い易そうだけど。 hist_find_no_dupsはどういう意味なんでしょうか? これを設定していても、Ctrl-pを繰り返し押したとき同じコマンドが何回も出てきます。 Ctrl-rで検索したとき一度出たものと重複するものをスキップしてくれますよ。 そういえば.zhistoryも日本語が文字化けしてた history-all等の方で取り出すのは文字化けしないから 困った事にはならなかったが bash_historyの方は化けないから 文字化けは他でもまた偶然直面しそうだ 直し方両方分からないし なんかzshがWindowsに対応とかニュースになってるらしいけどマジ? すごいよ。WindowsでUbuntuのバイナリ互換するんだもんな zshも動くよきっと >>459 ~/.zsh_historyのエンコーディングがLatin1っぽい >>465 nkf で utf-8 に変更しても駄目だったから zshから書き出すまでの方見ないと駄目かもしれない bashのcdでディレクトリだけ補完する、の下記設定は、zshだとどう書けばよいですか? complete -d cd 下記でできましたが、自分には不要な設定もたくさんついてくるので、cdのディレクトリ補完だけ単独で設定したいです。 autoload -Uz compinit; compinit man cdとするとzshではなくbashのビルトインの方が呼ばれるんですがどうしたらいいですか man zshbuiltinはちょっとめんどい zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' これで補完のとき大文字小文字を区別しないようにしているのですが、 Macで/us<Tab>とすると/Usersが先に出てきてしまいます。 これを/usrが先に出てくるようにしたいです。つまり 入力した文字列と大文字小文字が一致した候補がある場合はそちらを先にしたいのですが どうすればいいでしょうか? zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' これじゃダメなんだね? 大文字小文字無視系の設定は、しばらく使ってみないと自分の好みの動作が判らんよな 楽をしようとしてるのに、縛りを少しきつくすると勝手に確定させられて「おいっ!」みたいなことがあるし 俺は最初oh-my-zsh使ってたけど今はantigenで落ち着いたな(´・ω・`) .zshrcにfunctionを書いているのですが、readでユーザ入力を待っている時に、ctrl+c、ctrl+d、esc、どれも押しても強制終了できません。 function hoge(){ .zshrcにfunctionを書いているのですが、readでユーザ入力を待っている時に、ctrl+c、ctrl+d、esc、どれも押しても強制終了できません。 ユーザ入力ができて、入力待ち中に強制キャンセルもできるようにするにはどのようにすればよいでしょうか? function hoge(){ # 入力待ち中に強制キャンセルが何も効かない。。 printf "input: " read string } >>483 function hoge(){ trap 'return 1' SIGINT printf "input: " read string } これでどうだろう >>484 ありがとうございます。 ctrl+cのあとにエンターを押せばtrapに補足されましたが、ctrl+cだけではキャンセルされませんでした。。 バージョンはこれでした。zsh 4.3.11 (x86_64-redhat-linux-gnu) テストで、 trap "echo aaa" SIGINT としたんですが、これ、関数が終わった後も、コマンドライン上でctrl+cすると aaa aaa aaa ... とtrapが発動するようになりますね。。 とりあえず、 read -k 1 str で1文字入力にすることで、ctrl+cが入力されるとそれでキャンセルされたように見えるのでこれで代用しようかな。 >>485 見当違いなアドバイスだが、readに-tつけては >>486 なるほど。 秒数待ちをするんですね。 そのアイデアはまったく考えてませんでした。 案の一つとして検討させていただきます。ありがとうございます。 ここ最近、履歴の共有ができなくなってしまいました inc_append_history と share_history は有効にしてます 何が悪さをしてるでしょうか? zshは5.2です function定義した中身を表示する方法はありますか? aliasはwhichで内容を確認できるのですが、functionはwhichで見れず。。 何か他の方法で見れないでしょうか? >>490 ,491 レスありがとうございます。 すでに違ったとレスいただいていますが、typeコマンド初めて知りましたので一応調べてみたら、functionだとわかるだけでした。 関数定義も普通にwhichで見れると思うけど…… % function foo() { echo hoge; } % which foo foo () { echo hoge } whichが置き換わってるんとちゃう? built-in which でいける >>493 ,494 おお! その通りでした。 whichをwhichするのは初めてだ。 ↓alias登録されてた! % which which which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' これでいけました。ありがとうございます。 % builtin which is_exists 続きます。 続きです。 .zshrcと.zshenv見直してもalias登録してないので、どこで設定されてるかぐぐったら こんなの見つけました。 ttp://d.hatena.ne.jp/BigFatCat/20080601 どうやら下記で設定されてるみたいです。 /etc/profile.d/which-2.sh これはzshの場合デフォルトで読まれるみたいですが、functionが見れなくなる欠陥whichで書き換えるとか迷惑ですね。。 これを読まないようにする設定とか無いでしょうか? 途中で書き込んでしまいましたすみません。 読まないようにする設定が無ければ、無理矢理感があって気持ち悪いですが unalias which を.zshrcに入れて我慢します。 zshはそんなものデフォルトで入れないよ。冤罪だw その手のおせっかいはお使いのディストリビューション固有の事情かと。 curlで&や?を含むURLを取得するとき、いちいちURLをクォートで囲むのが 面倒なんだが、いい方法ないだろうか? URLをコピペするときは bracketed-paste-url-magic が役立つ 自分はその手のコマンドは noglob を使った alias を定義してるな >>504 あれ、確かにそうだよなと思って履歴を見返したら、クォート 途中で切れてしまった。履歴を見返したら & を含む場合はクォートしていたw ごめんち ブラウザ経由で呼び出す機会が多くなったし、端末に張り付ける場合も 正規化した URL を使ってたから、クォートする機会があまりなかった 自分の記憶が全くに当てにならんのが泣ける ttps://github.com/ryoppy/cool-peco を入れたんだけど C-r で cool-peco-history にならんのです。 デフォルトの bck-i-search: になっちまう。 コマンドラインからは cool-peco-history 呼べるし、 alias の hist も呼べる。 $ bindkey | grep peco "^R" cool-peco-history になってるし、コマンドラインから $ bindkey '^r' cool-peco-history しても変わらず。 「やっちまったなぁ!」を使わず解決策教えてほしいです。 pushd +3 とかってしたとき、3つ分スタック全体を循環させるんじゃなくて、 3つ目を取り出してスタックトップに乗せるって挙動なかったですか? つまり最近使った順にスタックが並ぶ。 昔出来た気がするのですが、今マニュアル見てもなくて。 ulimit -aってやると一番下に -N 15: unlimited と出るんですが、この項目は何ですか? extendedglobがmissing delimiterとか言われてエラーになる 何か他のオプションと衝突するとかある? cdr だけ 部分一致で補完したいのですが、どうすればよいでしょうか? 実用途としましては、project名 入力で path が補完して移動です。 zstyle ":completion:*" matcher-list 'm:{a-zA-Z}={A-Za-z} l:|=*' で部分一致になった( l:=|* が 妥当かもわかってません)ので、 zstyle ":completion:*:*:cdr:*:*" matcher-list 'm:{a-zA-Z}={A-Za-z} l:|=*' としてみたのですが、反映されませんでした。 最近.zshrcを見直してzmodload zsh/filesが入ってたことに気付いたけど これもう完全にいらない子なんだな。 たしか引数の最大バイト数を回避する目的で入れた記憶があるけど、 最近のLinuxは引数上限がかなり緩和されたはずだから困ることはまずないし、 むしろPOSIX準拠してないので制約が多い。 というかそもそもこれが作られた目的が緊急時のリカバリ用というのを今頃知った。 ただのPOSIX拡張だと思ってたわ・・・。manは見なきゃ駄目だな。 誰でも簡単にパソコン1台で稼げる方法など 参考までに、 ⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。 グーグル検索⇒『宮本のゴウリエセレレ』 CDVW4G8P2M 世の中pythonが流行ってるけど、案の定xonshっていうシェルも出てきた そのうちイーマック厨みたいにpythonは環境です(キリッとか言い出すやつも現れそうだな >>514 xonsh初めて知った。 機能的にはすごそうだが、ちょっと込み入ったことはシェルスクリプトで書いた方が後々使い回しが楽そうだな... ☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、 改憲議員が3分の2を超えております。『憲法改正国民投票法』、 でググってみてください。国会の発議はすでに可能です。 平和は勝ち取るものです。お願い致します。☆☆ fzfのキーバインドを変更したい時ってどうすればいいんですか? 具体的にはC-tをC-TもしくはM-Tに変更したいです muxer -i input.aac?sbr --file-format m4a -o output.m4a ってコマンドを打ちたいんですが、sbrというオプションを付けるときは頭に?を付けないといけないんですが、 「?」がzshでワイルドカードとして扱われてしまいます。 ワイルドカードとして認識されないようにするにはどうしたらいいでしょうか? 自己レス ?の前にバックスラッシュを入れたら使えました。 zshのデフォルトだと、マッチするファイルがなければ?は?のままのはずだが。 >>520 バックスラッシュ付けないとこのようになってしまいます。 $ muxer -i input.aac?sbr --file-format m4a -o output.m4a zsh: no matches found: input.aac?sbr >>521 NOMATCHかなんか設定してるんでしょ。 man読みな。 >>522 何の設定でしょうか? 何のmanをみたらいいですか? 今ググってみて .zshrcに setopt nonomatch と書いたら?を付けなくてもコマンドが動きました。 $ $PATH<Enter> としたとき$PATHの値が表示されるようにできるみたいなんですが、 そういうオプションがあるんでしょうか? zsh: No such file or directory: のようなおまけがついててもいいなら そのままでも表示はされる場合が多い気がする 確かに。でも$PATHならともかく他の環境変数にもその方法を適用するには リスクが高いですね。 以下のように (( )) で浮動小数演算したところ思わぬ結果になりました。 a と b の型がどのように決まるのか教えていただけないでしょうか? $ cat hoge a=$(( 1e-6 * 1e-6 )) (( b = 1e-6 * 1e-6 )) typeset -p a typeset -p b $ zsh hoge typeset a=9.9999999999999998e-13 #型は文字列? typeset -F b=0.0000000000 #小数点以下10桁固定の型? $ zsh --version zsh 5.4.2 (x86_64-redhat-linux-gnu) よく知らずに答えるけど $(())を使うと文字列 (())を使うと浮動少数や整数 になるんじゃないの? 型はtypeset指定しなければ暗黙的に決まるわけだが、 floatは指数形式と小数点固定形式があるが(())内の暗黙floatは勝手に後者になる そもそも型とその出力表現は別の概念なのにごっちゃになってんのが糞仕様すぎ 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方 時間がある方はみてもいいかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 NQSL6 zsh/filesって今はいらない子なの? これないと引数の最大バイト数の制約がきついよね? 自分が必要なら使えばいい 俺は引数の最大バイト数制限なんてここ10年ひっかかったことないし あったとしたら自分のマシンじゃないからzshじゃなかったはず 昔のLinuxはかなり少なかったらしいね>最大バイト数制限 昔初めて.zshrcを作る際に他人の設定をパクってそのまま惰性で使ってる人多そう・・・ そもそもこれが作られた目的って緊急メンテ用だし http://www.zsh.org/mla/workers/2008/msg00617.html より It wasn't intended to provide full versions of the commands, the commands which are there don't implement all the POSIX options, etc. It's intended to provide enough to be useful in emergencies. Most people shouldn't need to use it. read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる