zsh gnu-screenタブは、「-ls」に似た「-x」フラグを完成させます。

zsh gnu-screenタブは、「-ls」に似た「-x」フラグを完成させます。

BashでTabを2回入力して押すと、実行screen -x中のすべてのセッションのリストが表示されます。

zshでTabを2回押して押すscreen -lsと、実行中のすべてのセッションのリストが表示され、タブを介して移動できます。最終的にEnterを押すとセッションが選択されますが、もう一度screen -ls session-nameEnterを押すとセッションが実行されます。

-xセッション名-lsを入力するか、セッションを選択してls戻りますx

screen -lnタブアクションを実装するためにタブアクションを実装するコードが見つかりません-x。プラグインリストで検索/検索しましたが、.oh-my-zsh何も見つかりませんでした。

ヘルプやワークフローのヒントに感謝します。私は主にscreen -x

ベストアンサー1

コードは次のとおりです。_screen(完了はzshでデフォルトで提供されており、追加のプラグインではありません)。すべてのセッションはZshで完了しましたが、-ls追加のセッションのみが完了しました-x

-xマニュアルに従って「分離されていない画面セッションに接続する」ように設計されています。ただし、セッションが分離されていても機能します。したがって、両方の行動には意味があります。理想的には、zshが実行する構成オプションでなければなりません。

現在の動作の代わりに目的の動作を取得するには、行を変更する必要があります。

  '-x[attach to a not detached screen (multi display mode)]: :->attached-sessions' \

到着

  '-x[attach to a not detached screen (multi display mode)]: :->any-sessions' \

目的の動作を得るために完了関数をサルパッチするために、次のコードを初期化ファイルに入れることができます。後に来る必要がありますcompinit(したがって、oh-my-zshを使用している場合は、oh-my-zsh行の後に)。

# Monkey-patch the screen completion function to complete all sessions
# after -x, not just detached sessions.
autoload +X _screen # load immediately
set -o extendedglob # needed for (#b) and # below and generally a good
                    # thing to have in interactive shells
functions[_screen]=${functions[_screen]/(#b)(\'-x[^:]#:[^:]#:->)attached-sessions(\')/${match[1]}any-sessions${match[2]}}

おすすめ記事