2

zsh には、ディレクトリ名を入力するだけで自動的にそのディレクトリに (cd) 移動する機能 (auto_cd) があります。ファイル名と同様のことを行うようにzshを構成する方法があるかどうか、ファイル名のみを入力すると自動的にvimでファイルを開く方法があるかどうか興味がありますか?

4

2 に答える 2

3

考えられる可能性は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 $FILEwhence1 番目と 2 番目の解決策に問題がない場合は、それらを使用することをお勧めします。

于 2012-10-26T20:52:37.330 に答える
0

viminfoファイルを使用して、少なくとも1回開いたファイルを識別するエイリアスvを持つ「 fasd_cd 」を使用できると思います。私の環境では、それは魅力のように機能します。

Fast cd には他にもあなたが気に入るすばらしいものがたくさんあります! 最後に編集したファイルを開くには、vim でこのエイリアスを設定することを忘れないでください。

alias lvim="vim -c \"normal '0\""
于 2016-04-16T09:43:55.310 に答える