If I'm using terminal and typing in a line of text for a command, is there a hotkey or any way to clear/delete that line?
For example, if my current line/command is something really long like:
> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>
Is there a hotkey or command to go from the above to:
>
?
Usually I will press the ↓ key, and if my current line is a brand new one on the history, that will clear it. But if I'm going through my command history via the ↑ key and start editing or using those commands, ↓ will only change the prompt to the next newest command in history, so it doesn't work here unless I press ↓ multiple times.
You can use Ctrl+U to clear up to the beginning.
You can use Ctrl+W to delete just a word.
You can also use Ctrl+C to cancel.
If you want to keep the history, you can use Alt+Shift+# to make it a comment.
Bash Emacs Editing Mode Cheat Sheet
Just to summarise all the answers:
Clean up the line: You can use Ctrl+U to clear up to the beginning.
Clean up the line: Ctrl+E Ctrl+U to wipe the current line in the terminal
Clean up the line: Ctrl+A Ctrl+K to wipe the current line in the terminal
Cancel the current command/line: Ctrl+C.
Recall the deleted command: Ctrl+Y (then Alt+Y)
Go to beginning of the line: Ctrl+A
Go to end of the line: Ctrl+E
Remove the forward words for example, if you are middle of the command: Ctrl+K
Remove characters on the left, until the beginning of the word: Ctrl+W
To clear your entire command prompt: Ctrl + L
Toggle between the start of line and current cursor position: Ctrl + XX
Alt + D
Alt
+ D
does not work thats why I have not include it :(
CTRL + L
clears the screen but keeps what has been typed in the current command line.
Ctrl + Alt + >
moves to the end of the input history which is perfect when you want to cancel searching the history.
I have the complete shortcuts list:
Ctrl+a Move cursor to start of line Ctrl+e Move cursor to end of line Ctrl+b Move back one character Alt+b Move back one word Ctrl+f Move forward one character Alt+f Move forward one word Ctrl+d Delete current character Ctrl+w Cut the last word Ctrl+k Cut everything after the cursor Alt+d Cut word after the cursor Alt+w Cut word before the cursor Ctrl+y Paste the last deleted command Ctrl+_ Undo Ctrl+u Cut everything before the cursor Ctrl+xx Toggle between first and current position Ctrl+l Clear the terminal Ctrl+c Cancel the command Ctrl+r Search command in history - type the search term Ctrl+j End the search at current history entry Ctrl+g Cancel the search and restore original line Ctrl+n Next command from the History Ctrl+p previous command from the History
CTRL
+ L
(16.) preserves the content of the current command line.
Ctrl
+h
: delete the character before the cursor
Ctrl+A, Ctrl+K to wipe the current line in the terminal. You can then recall it with Ctrl+Y if you need.
Another nice complete list:
TERMINAL Shortcuts Lists:
Left Move back one character
Right Move forward one character
Ctrl+b Move back one character
Ctrl+f Move forward one character
Alt+Left Move back one word
Alt+Right Move forward one word
Alt+b Move back one word
Alt+f Move forward one word
Cmd+Left Move cursor to start of line
Cmd+Right Move cursor to end of line
Ctrl+a Move cursor to start of line
Ctrl+e Move cursor to end of line
Ctrl+d Delete character after cursor
Backspace Delete character before cursor
Alt+Backspace Delete word before cursor
Ctrl+w Delete word before cursor
Alt+w Delete word before the cursor
Alt+d Delete word after the cursor
Cmd+Backspace Delete everything before the cursor
Ctrl+u Delete everything before the cursor
Ctrl+k Delete everything after the cursor
Ctrl+l Clear the terminal
Ctrl+c Cancel the command
Ctrl+y Paste the last deleted command
Ctrl+_ Undo
Ctrl+r Search command in history - type the search term
Ctrl+j End the search at current history entry and run command
Ctrl+g Cancel the search and restore original line
Up previous command from the History
Down Next command from the History
Ctrl+n Next command from the History
Ctrl+p previous command from the History
Ctrl+xx Toggle between first and current position
or if your using vi mode, hit Esc followed by cc
to get back what you just erased, Esc and then p :)
echo 'set editing-mode vi' >> ~/.inputrc
. Also works in places like python interpreter prompts and some SQL clients
I'm not sure if you love it but I use Ctrl+A (to go beginning the line) and Ctrl+K (to delete the line) I was familiar with these commands from emacs, and figured out them accidently.
An alternative to Ctrl+A, Ctrl+K is Ctrl+E, Ctrl+U.
Ctrl+u: move up to the beginning of your line to a ring buffer
Ctrl+k: move up to the end of your line to a ring buffer
Ctrl+w: move characters and (multiple) words left from your cursor to a ring buffer
Ctrl+y: insert last entry from your ring buffer and then you can use Alt+y to rotate through your ring buffer. Press multiple times to continue to "previous" entry in ring buffer.
CTRL+R and start typing to search for previous commands in history. Will show full lines. CTRL+R again to cycle.
To delete the whole line no matter where the cursor is, you can use the kill-whole-line
command, but it is unbound by default. It can be bound to, for example, Ctrl+Alt+K by inserting
"\e\C-k": kill-whole-line
into your Readline init file (conventionally ~/.inputrc
).
Various remarks:
To avoid accidentally re-assigning a key sequence that is already in use for something else, you can check all your bindings with bind -P. Check for the suggested binding with bind -P | grep '\\e\\C-k'
The Readline init file name is is taken from the shell variable INPUTRC. If it is unset, the default is ~/.inputrc, or (if that doesn't exist) /etc/inputrc. Notice that if you have ~/.inputrc, /etc/inputrc will be ignored.
To reload your Readline init file, you can use Ctrl+X Ctrl+R.
Links to relevant manual sections: Readline Init File Readline killing and yanking commands The bind builtin
Readline Init File
Readline killing and yanking commands
The bind builtin
In order to clean the whole line (2 different ways):
Home , Ctrl+K
End , Ctrl+U
Ctrl+W will clear the word to the left.
Add to the list:
In Emacs mode, hit Esc, followed by R, will delete the whole line.
I don't know why, just happens to find it. Maybe it's not used for delete line but happens to have the same effect. If someone knows, please tell me, thanks :)
Works in Bash, but won't work in Fish.
revert-line
readline command: "Undo all changes made to this line". It's bound, by default, to M-r
(Meta-R), which can be both Alt-R or Esc R. This means it's not actually deleting the line, only when it was empty to begin with; if you scroll back in your command history and change a command, then issue revert-line
, it will change back to the command it was originally and not delete the line.
Alt+# comments out the current line. It will be available in history if needed.
Ctrl+Alt+Backspace for deleting the backward words from the end of the line
Ctrl+Delete for deleting the forward words from the beginning of the line
Success story sharing
U
/A
andY
is more like a cut-paste. Try doingCtrl
+Y
multiple times.ESC
is it's own modifier key in bash. It's used for things like cancelling history navigation (CTRL
+r
), or swapping the last two words behind the cursor (ESC
+t
).