zshでスラッシュまたは単語を削除するにはどうすればよいですか?


18

Bashの動作

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

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

したがって、Alt+ Backspaceは前のスラッシュに戻って削除され、入力されたパスを変更するのに役立ちました。

さらに、bashデフォルトで は前のスペースをCtrl+ w削除します。これは、引数全体を削除するのに役立ちます(引数にスペースがないと仮定)。

Zshの動作

ではzshAlt+ BackspaceCtrl+の両方wが同じことを行います。どちらも前の単語を削除しますが、単語区切りを構成するものに対して寛大すぎて、前の単語-またはまで削除し_ます。とzsh同様に動作させる方法はありbashますか?それが重要であれば、私はoh-my-zshインストールしました。


1
単語を構成するもののzshの定義を変更しますか?その場合:unix.stackexchange.com/questions/48577/…または、別の単語の定義で新しいコマンドを定義しますか?
Gilles「SO-邪悪なことをやめよ」

@ギレス私は両方の組み合わせを推測します。bashでは、2つの異なるコマンドを定期的に使用します。つまり、最後/まで削除し、最後の ``まで削除します。彼らは異なる機能を持っています。
Sparhawk

1
@ギレスはい、そのリンクは私のbashようなAlt + Backspaceの動作で機能しますが、私は(異なる)bashCtrl + wのような動作、つまり最後のスペースまで削除することを望んでいます。
Sparhawk

回答:


14

編集:あなたの質問の後の次のGoogleの結果はこれと同じ解決策でした:zsh:ALT + BACKSPACEを英数字以外の文字で停止させます

この回答は/nick FoH、freezの#zshから提供されました。

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

このようにしてctrl+w(vim lingoで)alt+bkspc単語を削除したり、単語を削除したりできます。


鮮やかさ!調査して回答していただきありがとうございます。
Sparhawk

Googleについて:9か月前に質問したところ、1か月以内に質問しました。
Sparhawk

1
時間は単なる社会の構築者です!..しかし真剣に、公正な点。
JunkMechanic

19

同様の質問がここで尋ねられました:zsh:ディレクトリ区切り文字で逆方向キルワードを停止します

与えられた実行可能なソリューション:これらの設定をzshrcに追加します:

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

答えてくれてありがとう。しかし、それらの答えはどれも私にはうまくいきません。(具体的には、あなたが引用したものは変更を加えません。)おそらく、それは私がoh-my-zshインストールしたためです。いずれにせよ、これは私の質問のように2つの異なる関数とキーバインディングに対応していないようです。(そして、私の質問がそれが
だまさ

1
WORDCHARS変数を微調整する必要があります。zshでは簡単ですvared WORDCHARS
Jshura

このフォーラムで回答された質問と照合した場合にのみ重複します。
Thomas Dickey

@ThomasDickeyああ、すみません、SEサイトを交換したことに気づきませんでした。
Sparhawk

@Jshuraいいえ、質問に従って、2つの異なる機能が必要bashです。これはで可能です。
Sparhawk

5

ジャンクメカニックの答えを拡張して、私はそれが欲しかった

  • 既存のzshショートカット(CtrlWCtrlおよびCtrl)はzshデフォルトと同様に機能します
  • Altベースのショートカット(AltWAltおよびAlt)は同様に機能しますが、「最も細かい」、たとえば最も近いものまで/

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

# Alt+Backspace
backward-kill-dir () {
    local WORDCHARS=${WORDCHARS/\/}
    zle backward-kill-word
}
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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.