2つのキーストロークでzshからスラッシュまたは単語を削除する方法は?

2つのキーストロークでzshからスラッシュまたは単語を削除する方法は?

すごい行動

bash今から移行しましたzsh。にはbash次の行があります~/.inputrc

"\e\C-?": unix-filename-rubout

したがって、Alt+はBackspace古いスラッシュを再度削除するため、パスを編集するのに役立ちます。

個別に、bashデフォルトはCtrl+w 前の削除です。スペース、これはパラメータ全体を削除するのに役立ちます(スペースがないと仮定)。したがって、少し2つあります。その他各キーの組み合わせで実行される操作です。

Zshアクション

zsh+と+の両方で同じことを行いますAlt。どちらも古い単語を削除しますが、ハイフン接続をあまりにも疎に定義して古いまたは削除します。と同様の動作を作成する方法はありますか?BackspaceCtrlw-_zshbash2つの独立した行動?重要な場合はすでにoh-my-zshインストールしています。

答え1

同様の質問がここに要求されました。zsh:ディレクトリ区切り文字で単語を逆さまに殺すのをやめます。

そして動作する解決策が提供されたら、次の設定をzshrcに追加します。

autoload -U select-word-style
select-word-style bash

答え2

編集:質問後の次のGoogleの結果は、同じソリューションを使用した結果です。zsh:英数字以外の文字でALT + BACKSPACEを停止します。

この回答は/nick FoHfreenodeの#zshで提供されました。

backward-kill-dir () {
    local WORDCHARS=${WORDCHARS/\/}
    zle backward-kill-word
    zle -f kill
}
zle -N backward-kill-dir
bindkey '^[^?' backward-kill-dir

ctrl+wこのようにして、vim lingoから単語を削除してalt+bkspc単語を削除することができます。

答え3

拡張ジャンクメカニックの答え、私は欲しい

  • 既存のzshショートカット(CtrlW、、CtrlおよびCtrl)はzshデフォルトと同じように機能します。
  • Altショートカットベース(AltW、、AltおよびAlt)も同様に機能しますが、「より詳細」です。/

これが私が今使っているものです:

# Alt+Backspace
backward-kill-dir () {
    local WORDCHARS=${WORDCHARS/\/}
    zle backward-kill-word
    zle -f kill  # Ensures that after repeated backward-kill-dir, Ctrl+Y will restore all of them.
}
zle -N backward-kill-dir
bindkey '^[^?' backward-kill-dir


# Alt+Left
backward-word-dir () {
    local WORDCHARS=${WORDCHARS/\/}
    zle backward-word
}
zle -N backward-word-dir
bindkey "^[[1;3D" backward-word-dir

# Alt+Right
forward-word-dir () {
    local WORDCHARS=${WORDCHARS/\/}
    zle forward-word
}
zle -N forward-word-dir
bindkey "^[[1;3C" forward-word-dir

詳細については、zle -f kill次を参照してください。Zsh - カスタムウィジェットにテキストを貼り付けると、最後の単語でのみ機能します。この問題を修正できますか?

答え4

bindkey '^[^?' vi-backward-kill-word


私が知る限り、それはMeta-BackSpace同じように動作します@thomas-dickeyが提案した回答、そして2行の代わりに1行に;-)。しかし、ただMeta-BSに影響を与えます。メタ(左/右)ナビゲーションの完全なbash様動作を探している場合、これはselect-word-style正しいアプローチです。

(脚注:select-word-style- もの文書化されていますが、man zshcontribほとんど理解できません。vi-backward-kill-wordに録音されましたman zshzle。 )

関連情報