BashでTabを2回入力して押すと、実行screen -x
中のすべてのセッションのリストが表示されます。
zshでTabを2回押して押すscreen -ls
と、実行中のすべてのセッションのリストが表示され、タブを介して移動できます。最終的にEnterを押すとセッションが選択されますが、もう一度screen -ls session-name
Enterを押すとセッションが実行されます。
-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]}}