วิธีกำหนดค่า Ctrl + w เป็นลบคำใน zsh


12

ฉันต้องการลบคำด้วยCtrl+ Win zshlike

vim /foo/bar^W
vim /foo/

และพบทางออกสำหรับbashแต่bindไม่ได้อยู่ในฟังก์ชั่น zsh

เป็นไปได้ไหมที่จะกำหนดค่า ctrl-w (ลบคำ)?

ฉันจะกำหนดค่าCtrl+ Wเป็น a ได้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และทำงานได้อย่างสมบูรณ์!
เตารีดและ

emacsตารางการเชื่อมโยงคีย์เริ่มต้นใน ZLE ผูก ^ W ไปที่backward-kill-wordมากกว่าbackward-delete-wordหมายเหตุ
JdeBP

10

สำหรับข้อมูลของคุณฉันพบวิธีแก้ปัญหาที่นี่เพื่อให้ดูสง่างามยิ่งขึ้น ฉันพูด:

อีกตัวเลือกหนึ่งคือการตั้งค่าWORDCHARS(ตัวอักษรไม่ใช่ตัวเลขและถือว่าเป็นส่วนหนึ่งของคำ) /กับสิ่งที่ไม่รวมถึง

นอกจากนี้คุณยังสามารถปรับแต่งนี้หากคุณต้องการที่^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มีประโยชน์น้อยกว่านี้
Toothrot

1
zsh 5.7 (x86_64-apple-darwin18.2.0)นี้อย่างใดไม่ทำงานอีกต่อไปด้วย
Patryk

@ Patryk ขอบคุณที่สังเกต! ฉันอัพเดตคำตอบแล้ว!
Anastasios Andronidis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.