Bash:キーボードショートカットを使用して行末までカーソルから削除


91

次のbashプロンプトを検討してください。ここで^、プロンプトの場所を示します。

$ git commit -am "[bug 123456] Do this and that with the bug"
                               ^

別のコミットメッセージを使用して、同じバグに再度コミットするとします。カーソル位置から行末までテキストを削除する方法はありますか?

回答:


145

使用Ctrl+ Kカーソル位置から行末までを削除します。

使用Ctrl+ U行の先頭にカーソルから削除します。


配置するキーの組み合わせは何ですか?
-ShooShoSha

@ ShooShoSha、Shift + Insertを試してください
-user128285

KとUの意味は何ですか、意味がわからない場合、来週は思い出せません、それらを覚える方法は?
workplaylifecycle

2
@hylepo Dunnoしかし、私のニーモニックはBrexit - the UK leaves Europe-Uが先頭まで削除し、Kが末尾まで削除します。
スノークラッシュ

47

シェル内でvi(set -o vi)またはemacs(set -o emacs)編集モードを使用しているかどうかによって異なります。

デフォルトでは、通常、シェルはデフォルトでemacs編集モードになります。

  • emacsモードでは、行末まで削除するにはコマンドctrl- を使用しkます。

  • ただし、コマンドシェルでvi編集モードを使用している場合、Esc(コマンドモードになります)を入力してからd- $(行全体を削除する場合はを入力します)を入力すると、同じ結果が得られますdd

シェルで現在使用している編集モードが不明な場合はset -o、コマンドラインからコマンドを入力すると、現在使用している編集モードを判別できます。

set -o
...snip...
emacs           on
...snip...
vi              off

コマンドライン編集モードを切り替えるには、次のいずれかを入力します。

set -o vi

または

set -o emacs

4
ニーモニックが必要な場合Kは、kill(カーソル位置から始まる行)を表します。
グレゴールボテロ

5
viコマンドモードでDは、次と同じように動作しますd$
グレンジャックマン

3
正しい答えを実際に書いて、shelloptsがそれを変えるかもしれないと説明するために+1 。
-TC1

1
>>ありがとう。私はviを使用しているようですので、CTRL + Kがトリックを行います。– Adam Matan Adam、それはviではなく、あなたがいるemacsモードです。
catch22

1
Kubuntu oneiric(コンソール)では、Ctrl + KとESC Shift + Dの両方が機能します。ESC dは行の一部を削除します(「;」まで)。(その後に$を入力すると、コンソールに$が送信されるだけです。)私はかなり長い間、その方法を理解しようとしていました。ありがとう!
ジョー

3

ZshとBashのいずれか1つだけに精通している場合、必要な(場合によっては)同等のキーバインディングを以下に示します。

バッシュ

bind '"\C-k"':kill-line

zsh

bindkey "\C-k"      vi-kill-eol

その他の関連情報

キーバインディングのリストを取得するには:

# bash
bind -p

# zsh
bindkey

よくわかりません。Bashの場合"^k" 、Control + Kを使用するべきではありませんか?
wjandrea

申し訳ありませんが、それは私の個人的な義務です。デフォルトのバインディングを使用していましたが、bash構文には慣れていませんでした。あなたがそれがどうあるべきかについて言及したので、私はあなたの言葉をそれのために取り、私の投稿を編集しました。
スリダールサルノバト

1
ああ、わかった。私は自分自身それに慣れてないんだけど、ちょうどチェックし、それがあるべき"\C-k"
wjandrea
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.