zsh には、ディレクトリ名を入力するだけで自動的にそのディレクトリに (cd) 移動する機能 (auto_cd) があります。ファイル名と同様のことを行うようにzshを構成する方法があるかどうか、ファイル名のみを入力すると自動的にvimでファイルを開く方法があるかどうか興味がありますか?
2 に答える
考えられる可能性は3つあります。1 つ目は、自動的に変換されるサフィックス エイリアスです。
% *.ps
に
% screen -d -m okular *.ps
あなたがした後
alias -s ps='screen -d -m okular'
. ただし、すべてのファイル サフィックスに対してこのエイリアスを定義する必要があります。また、ほとんどの展開の前に処理されるため、
% *.p?
*.ps
何も開かないため、同じファイルに一致します。
2 番目は command_not_found ハンドラーです。
function command_not_found_handler()
{
emulate -L zsh
for file in $@ ; do test -e $file && xdg-open $file:A ; done
}
. ただし、これは絶対パスまたは相対パスでは機能せず、スラッシュを含まないものに対してのみ機能します。
3 番目は、accept-line ウィジェットをオーバーライドするハックです。
function xdg-open()
{
emulate -L zsh
for arg in $@ ; do
command xdg-open $arg
endfor
}
function _-accept-line()
{
emulate -L zsh
FILE="${(z)BUFFER[1]}"
whence $FILE &>/dev/null || BUFFER="xdg-open $BUFFER"
zle .accept-line
}
zle -N accept-line _-accept-line
. 上記は履歴を変更し(これを回避する方法を示すことができます)、かなりハックです。サフィックスエイリアスを無効にしない(エイリアスwhence '*.ps'
の値を返す)のは良いことですが、以前は有効だと思っていました。ただし、autocdを無効にします。私はこれを避けることができます (テストの直後) || test -d $FILE
。whence
1 番目と 2 番目の解決策に問題がない場合は、それらを使用することをお勧めします。
viminfoファイルを使用して、少なくとも1回開いたファイルを識別するエイリアスvを持つ「 fasd_cd 」を使用できると思います。私の環境では、それは魅力のように機能します。
Fast cd には他にもあなたが気に入るすばらしいものがたくさんあります! 最後に編集したファイルを開くには、vim でこのエイリアスを設定することを忘れないでください。
alias lvim="vim -c \"normal '0\""