Zshで可能で、Bashでできないシリーズ::かなりものぐさな人向け
拡張子判別実行
ファイル名だけ入力すると、音楽プレイヤーやmpvが起動すると楽といえば楽かもしれないという設定。言い換えると、拡張子判別実行ですね。 どうなんでしょう?!
設定してから何年もたちますが当方の利用頻度は低いですね。bashが基本なので。
% file.flac (enter)
とすると、mpvが起動すると楽といえば楽かもしれないという設定。
% *.mkv
以下の設定をするとmkv拡張子ファイルがmpvに割り当てているため自動実行されます。便利といえば便利か。
mpv --hwdec=auto -- *.mkv と等価。
以下bashのお話
bashではこの芸当はできませんので、そこがあれ。bash ならふつうにグロブ展開させるのは同じですが、「mpv 」と入力する必要がありますよね。スペース含めると4文字打鍵。先頭に戻る必要がありますし、5文字打鍵か。
$ mpv *.mkv
mpvで起動する場合は、bash内蔵bindで モデファイラー-m に次のような割当を行っています。これはこれで便利。意味は、カーソル位置がどこにあろうが先頭に移動してmpv以下の文字列で実行する、です。マクロですね。
bind '"\ea":beginning-of-line' #alt-a も行頭に戻る。この妥協が一番よさそう。
bind '"\em":"\eampv --start=00:00:00 --profile=vdpau \C-m"' #alt-m
余談:たぶんこう書いても同じです。
bind '"\em":"\eampv --start=00:00:00 --profile=vdpau \n"' #alt-m
bind '"\em":"\eampv --start=00:00:00 --profile=vdpau \C-j"' #alt-m
かなり長い文字列がOKみたいです。 mpvは今profile選択をメインにしていますけれど、全部1キー操作に置き換えることもできそう。効率的かはどうかとして。
余談すぎる余談。
ファンクションキーに割りあてる場合。完全1キー。こういう雛形を作成したので、少しづつ何かを割り当てていっています。覚えきれないけれど。笑) .inputrc よりこのほうが自分には調整しやすいかもです。zshのbindkey を並列して眺めつつできるだけ共通化しようと考えているんです。
#f5 f6 f7 f8 雛形
bind '"\e[15~":"F5"' #F5 にキー割り当て
bind '"\e[17~":"F6"' #F6 にキー割り当て
bind '"\e[18~":"F7"' #F7 にキー割り当て
bind '"\e[19~":"F8"' #F8 にキー割り当て
とすると、mpvが起動すると楽といえば楽かもしれないという設定。
% *.mkv
以下の設定をするとmkv拡張子ファイルがmpvに割り当てているため自動実行されます。便利といえば便利か。
mpv --hwdec=auto -- *.mkv と等価。
その1 触ってみて採用:雛形
#極端な話、全拡張子に xdg-open にしておくとGUIデフォルトなので楽かも。
# 引数込で指定もできた。コマンドの妥当性ではなくてどういう書式なのか確かめたということです。
alias -s mkv="mpv --hwdec=auto -- "
alias -s mp4="mpv --profile=opengl-hq --hwdec=vdpau -- "
alias -s m2ts="mpv --hwdec=vaapi -- "
alias -s ts="mpv --fps=60 -- "
alias -s wmv=mpv
alias -s avi=xdg-open
alias -s flac=mpv
alias -s wav=mpv
alias -s mp3=mpv
alias -s ogg=mpv
alias -s tta=mpv
alias -s ape=mpv
alias -s tak=mpv
alias -s txt=atom
alias -s conf=atom
alias -s rc=code
#alias -s pl=code
#実行権限付与したかもしれないテキストは分岐させるか、関連づけないほうがいいですよね。たぶん。
#alias -s plx=code
#alias -s sh=code
#alias -s bash=code
# 引数込で指定もできた。コマンドの妥当性ではなくてどういう書式なのか確かめたということです。
alias -s mkv="mpv --hwdec=auto -- "
alias -s mp4="mpv --profile=opengl-hq --hwdec=vdpau -- "
alias -s m2ts="mpv --hwdec=vaapi -- "
alias -s ts="mpv --fps=60 -- "
alias -s wmv=mpv
alias -s avi=xdg-open
alias -s flac=mpv
alias -s wav=mpv
alias -s mp3=mpv
alias -s ogg=mpv
alias -s tta=mpv
alias -s ape=mpv
alias -s tak=mpv
alias -s txt=atom
alias -s conf=atom
alias -s rc=code
#alias -s pl=code
#実行権限付与したかもしれないテキストは分岐させるか、関連づけないほうがいいですよね。たぶん。
#alias -s plx=code
#alias -s sh=code
#alias -s bash=code
以下bashのお話
bashではこの芸当はできませんので、そこがあれ。bash ならふつうにグロブ展開させるのは同じですが、「mpv 」と入力する必要がありますよね。スペース含めると4文字打鍵。先頭に戻る必要がありますし、5文字打鍵か。
$ mpv *.mkv
mpvで起動する場合は、bash内蔵bindで モデファイラー-m に次のような割当を行っています。これはこれで便利。意味は、カーソル位置がどこにあろうが先頭に移動してmpv以下の文字列で実行する、です。マクロですね。
bind '"\ea":beginning-of-line' #alt-a も行頭に戻る。この妥協が一番よさそう。
bind '"\em":"\eampv --start=00:00:00 --profile=vdpau \C-m"' #alt-m
余談:たぶんこう書いても同じです。
bind '"\em":"\eampv --start=00:00:00 --profile=vdpau \n"' #alt-m
bind '"\em":"\eampv --start=00:00:00 --profile=vdpau \C-j"' #alt-m
かなり長い文字列がOKみたいです。 mpvは今profile選択をメインにしていますけれど、全部1キー操作に置き換えることもできそう。効率的かはどうかとして。
余談すぎる余談。
ファンクションキーに割りあてる場合。完全1キー。こういう雛形を作成したので、少しづつ何かを割り当てていっています。覚えきれないけれど。笑) .inputrc よりこのほうが自分には調整しやすいかもです。zshのbindkey を並列して眺めつつできるだけ共通化しようと考えているんです。
#f5 f6 f7 f8 雛形
bind '"\e[15~":"F5"' #F5 にキー割り当て
bind '"\e[17~":"F6"' #F6 にキー割り当て
bind '"\e[18~":"F7"' #F7 にキー割り当て
bind '"\e[19~":"F8"' #F8 にキー割り当て
#接尾辞エイリアス suffixの -s
#拡張子判別実行
#極端な話、全拡張子に xdg-open にしておくとGUIデフォルトなので楽かも。
#拡張子判別実行
#極端な話、全拡張子に xdg-open にしておくとGUIデフォルトなので楽かも。
以下のその1を .zshrc 末尾にでもぺったんして、試してみてください。その2は機械的にPerl で作成しただけなので、まったく触っていませんので、編集しながらお試しください。
その2 ががーと生成してみた。すべて未検証
# 拡張子自動判別実行 てきとー::右側にタブいれるとエラーになる。
alias -s Z=xdg-open
alias -s gz=xdg-open
alias -s bz2="bzip2 -cd %C|"
alias -s deb=xdg-open
alias -s rpm="rpm2cpio %C|cpio -tv" -f "%a %x %u %g %s %m %d %y %f"
alias -s 7z=xdg-open
alias -s rar=xdg-open
alias -s jpg=xviewer
alias -s JPG=xviewer
alias -s jpeg=xviewer
alias -s png=xviewer
alias -s PNG=xviewer
alias -s gif=xviewer
alias -s GIF=xviewer
alias -s bmp=xviewer
alias -s BMP=xviewer
alias -s mpg=mpv
alias -s wmv=mpv
alias -s WMV=mpv
alias -s avi=mpv
alias -s mp4=mpv
alias -s m4v=mpv
alias -s mkv=mpv
alias -s mov=mpv
alias -s mpeg=mpv
alias -s ts=mpv
alias -s 3gp=mpv
alias -s mp3=mpv
alias -s m4a=mpv
alias -s ogg=mpv
alias -s wma=mpv
alias -s iso=cvlc
alias -s flac=mpv
alias -s wav=mpv
alias -s tak="paplay -v"
alias -s tta="paplay -v"
alias -s ape="paplay -v"
alias -s cue=audacious
alias -s Z=xdg-open
alias -s gz=xdg-open
alias -s bz2="bzip2 -cd %C|"
alias -s deb=xdg-open
alias -s rpm="rpm2cpio %C|cpio -tv" -f "%a %x %u %g %s %m %d %y %f"
alias -s 7z=xdg-open
alias -s rar=xdg-open
alias -s jpg=xviewer
alias -s JPG=xviewer
alias -s jpeg=xviewer
alias -s png=xviewer
alias -s PNG=xviewer
alias -s gif=xviewer
alias -s GIF=xviewer
alias -s bmp=xviewer
alias -s BMP=xviewer
alias -s mpg=mpv
alias -s wmv=mpv
alias -s WMV=mpv
alias -s avi=mpv
alias -s mp4=mpv
alias -s m4v=mpv
alias -s mkv=mpv
alias -s mov=mpv
alias -s mpeg=mpv
alias -s ts=mpv
alias -s 3gp=mpv
alias -s mp3=mpv
alias -s m4a=mpv
alias -s ogg=mpv
alias -s wma=mpv
alias -s iso=cvlc
alias -s flac=mpv
alias -s wav=mpv
alias -s tak="paplay -v"
alias -s tta="paplay -v"
alias -s ape="paplay -v"
alias -s cue=audacious