Ctrl + wをzshの単語の削除として構成する方法


12

Ctrl+ Wでいいzshねして単語を削除したいです。

vim /foo/bar^W
vim /foo/

の解決策を見つけましたbashbind、zsh関数にはありません。

ctrl-w(単語の削除)を構成することは可能ですか?

Ctrl+ Wをどのように構成できますdelete-wordか?


回答:


15

これは私が使ってきた.zshrcからの抜粋です:

my-backward-delete-word() {
    local WORDCHARS=${WORDCHARS/\//}
    zle backward-delete-word
}
zle -N my-backward-delete-word
bindkey '^W' my-backward-delete-word

これが元のソースだったことを思い出します:http : //www.zsh.org/mla/users/2001/msg00870.html


ありがとう!私はこのコードを入れて~/.zshrc完全に動作します!
ironsand

emacsZLE のデフォルトのキーバインディングテーブルは、^ Wをbackward-kill-wordではなくにバインドすることbackward-delete-wordに注意してください。
JdeBP

10

ちょうどあなたの情報のために、私は、このソリューション見つけ、ここでは、はるかにエレガントであることを。私は引用します:

もう1つのオプションは、WORDCHARS(英数字以外の文字を単語の一部として扱う)を含まないものに設定すること/です。

^wドット、アンダースコアなどで区切る場合は、これを調整することもでき~/.zshrcます。

WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'

更新(2020年3月2日)

@Patrykが以下のコメントで指摘したように、これはに対しては機能しませんZSH >= 5.7。これが私がテストして取り組んだアップデートですzsh 5.8 (x86_64-apple-darwin18.7.0)

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

export WORDCHARS='.-'

これはM-dあまり役に立ちません。
Toothrot 2018

1
これはどういうわけかでもう機能しませんzsh 5.7 (x86_64-apple-darwin18.2.0)
Patryk

@Patrykお知らせありがとうございます!回答を更新しました!
Anastasios Andronidis
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.