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.