Ctrl + w को zsh में शब्द हटाने के लिए कैसे कॉन्फ़िगर करें


12

मैं एक शब्द को Ctrl+ जैसे Wमें हटाना चाहता हूं zsh

vim /foo/bar^W
vim /foo/

और के लिए एक समाधान मिला bash, लेकिन bindzsh फ़ंक्शन में नहीं है।

क्या 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 में डिफ़ॉल्ट कुंजी बाइंडिंग तालिका ^ नोट करने के backward-kill-wordबजाय ^ W से बांधती है backward-delete-word
JdeBP

10

आपकी जानकारी के लिए, मैंने इस समाधान को यहाँ और अधिक सुरुचिपूर्ण पाया। मैं उद्धृत करता हूं:

एक और विकल्प सेट करना है WORDCHARS(गैर-अल्फ़ान्यूमेरिक वर्ण को एक शब्द के हिस्से के रूप में माना जाता है) जिसमें कुछ भी शामिल नहीं है /

आप भी इस tweak आप चाहते हैं तो कर सकते हैं ^wडॉट, अंडरस्कोर, में आदि पर तोड़ने के लिए ~/.zshrcहै मैं:

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

अद्यतन (2 / मार्च / 2020)

जैसा कि @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कम उपयोगी बनाता है।
टूथरोट

1
यह किसी भी तरह से अब और काम नहीं करता है zsh 5.7 (x86_64-apple-darwin18.2.0)
पटवारी

@Patryk ध्यान देने के लिए धन्यवाद! मैंने अपना उत्तर अपडेट कर दिया!
अनास्तासियोस एंड्रोनिडिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.