web-dev-qa-db-ja.com

zshでWordを削除するようにCtrl + wを構成する方法

単語を削除したい Ctrl+Wzshのように。

vim /foo/bar^W
vim /foo/

そして、bashの解決策を見つけましたが、bindはzsh関数にありません。

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

設定方法 Ctrl+W として delete-Word

12
ironsand

これは。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

15
Joe

参考までに、このソリューション here の方がはるかにエレガントであることがわかりました。私は引用します:

別のオプションは、WORDCHARS(Wordの一部として扱われる英数字以外の文字)を_/_を含まないものに設定することです。

ドット、アンダースコアなどで区切るために_^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='.-'
_
10