Shell
zsh 鍵綁定:對整個引用的字元串進行反向殺詞
當使用
Ctrl+w
或Alt+Backspace
或Alt+d
鍵盤快捷鍵向後/向前刪除單詞時,我知道我可以定義 WORDCHARS 字元:WORDCHARS='~!#$%^&*(){}[]<>?.+;-'
例如,
Ctrl+w
從這個字元串的末尾開始使用,將依次刪除每個單詞echo aaa bbb ccc ddd eee
但是如果我引用了字元串,我如何將整個引用塊視為一個實體?
echo 'aaa bbb ccc' 'ddd eee fff'
所以,
Ctrl+w
應該一次性刪除整個“ddd eee fff”。對於用雙引號引起來的字元串應該有同樣的行為"
shell
字樣式正是這樣做的。autoload -U select-word-style select-word-style shell
我認為您需要留出空間,
WORDCHARS
而且似乎沒有辦法圍繞它們的使用定義規則,我不確定有沒有辦法讓它發揮作用。也許有一種方法可以定義命令行可以引用的自定義 Emacs 宏。如果有辦法做到這些,那超出了我的熟悉程度,我很樂意聽從知情人士的意見。不是你想要的答案
這不是對所提出問題的直接答案,但您可以按照您描述的方式使用內置功能(注意事項)來做一些事情:
將行編輯器方法更改為
vi
set -o vi
然後你可以試著記住輸入這個小美女:
Esc``2``d``F``"``x
或Esc``2``d``F``'``x
根據使用的報價。它並沒有真正從手指上滾下來,但如果你願意,你至少可以按下來
.
重複。注意事項
它只是向後搜尋兩次以查找給定引用的實例並刪除所有阻礙(不了解語法、上下文等)。鑑於這是您的命令行,並且您的游標位於末尾:
echo "foo bar" baz
你最終會得到
echo<space>
或者如果你從
echo "foo bar" baz "boz
你最終會得到同樣不是我想要的東西
echo "foo bar
在開始輸入之前,您需要處於
vi
模式,因此您必須在您的個人資料或類似的地方進行設置。在
vi
命令行中作為編輯器是一種範式轉變,可能會與肌肉記憶作鬥爭——這看起來真的不是很有趣。所以…
我可能會堅持
Ctrl``W
自己砸幾次。如果您不小心過度使用它,總會有 undo
Ctrl``_
。