私の現在の行は次のとおりです。
/tmp/path/to/file:123
今この行の終わりに来て、:123
特定のキーの組み合わせを押して削除したいと思います。これは可能ですか? (コロンは単に例として挙げられています。他の文字かもしれません。これを行うためにキーをバインドできるかどうか疑問に思います。)
alt+と同様に動作しますが、Backspace単語の区切り記号についてはより具体的です。
Bashまたはzshの両方を歓迎します。
答え1
戻る検索して:
行末まで削除します。Ctrl++ R :
Alt。 +は履歴検索コマンドで、編集中の行は履歴の一部です。 + include ほとんどのコマンドは増分履歴検索を終了し、一般的な効果を持ちます。DCtrlRAltD
viモードで:F:C
これはbashとzshの両方で機能します(基本設定ではもちろん、主キーバインディングを想定している場合はzshに異なる反応をもたらす素晴らしいオプションの組み合わせがないことを保証することはできません)。
答え2
Bashでは、ctrl++を押して関数を起動し、カーソルをalt「:」に移動し、+を入力して現在の単語の終わりを削除できます。頻繁に使用する場合にバインディングを作成できます。これは readline 関数で、info: に文書化されています。ソースコードを解読せずに人々の言葉の理解を変える方法はないと思います。]character-search-backward
:altd~/.inputrc
info readline
readline
答え3
私が知っている限り、私はちょうどbash 3.2でテストしました。
Alt+バックスペースとESC+バックスペースは、最初の「奇妙な」文字の前の単語を削除します。
Ctrl + Wは、最初のスペースが表示されるまで削除されます。
私が理解したのは、スクリプトを書くのではなく、入力しながらスクリプトを書くことです。
答え4
zshでは、Emacsショートカットを使用してこれを行うことができます。上記の例はAlt-Backspace(またはM-DEL
Emacs用語)です。
そのために私はにいます.zshrc
。 (URLを参照してください。私はです。いいえこれについての功績を認めてください! )
## emacs cursor-word movement (not identical but close enough)
# also necessary for this:
# /usr/share/zsh/functions/forward-word-match
# (from http://stackoverflow.com/questions/10847255 )
autoload -U select-word-style
select-word-style bash
記載されているファイルは次のとおりです。
emulate -L zsh
setopt extendedglob
local curcontext=":zle:$WIDGET" word
local -a matched_words
integer count=${NUMERIC:-1}
if (( count < 0 )); then
(( NUMERIC = -count ))
zle ${WIDGET/forward/backward}
return
fi
while (( count-- )); do
match-words-by-style
# For some reason forward-word doesn't work like the other word
# commands; it skips whitespace only after any matched word
# characters.
if [[ -n $matched_words[4] ]]; then
# just skip the whitespace and the following word
word=$matched_words[4]$matched_words[5]
else
# skip the word but not the trailing whitespace
word=$matched_words[5]
fi
if [[ -n $word ]]; then
(( CURSOR += ${#word} ))
else
return 1
fi
done
return 0