Vraag Bash: verwijder van de cursor tot het einde van de regel met een sneltoets


Overweeg de volgende bash-prompt, waar ^ geeft de promptlocatie aan:

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

Stel dat ik opnieuw aan dezelfde bug wil binden, met een ander commit-bericht. Is er een manier om de tekst te verwijderen van de cursorpositie tot het einde van de regel?


82
2018-03-17 08:28


oorsprong




antwoorden:


Gebruik Ctrl+K om van de cursor naar het einde van de regel te verwijderen.

Gebruik Ctrl+U om van de cursor naar het begin van de regel te verwijderen.


132
2018-03-17 08:37



Wat is de belangrijkste combinatie om te plaatsen? - ShooShoSha
@ShooShoSha, probeer Shift + Insert - user128285


Het hangt ervan af of je vi gebruikt (set -o vi) of emacs (set -o emacs) bewerkmodus in uw shell.

Standaard is je shell standaard ingesteld op de emacs-bewerkingsmodus.

  • In emacs-modus kan het verwijderen van het einde van de regel worden bereikt met behulp van de opdracht ctrl-k.

  • Als je echter de vi-bewerkingsmodus in je opdrachtshell gebruikt, kan hetzelfde resultaat worden bereikt door te typen Esc(die u in de commandomodus plaatst) gevolgd door d-$(als u de hele regel wilt verwijderen, voert u in dd).

Als u niet zeker weet welke bewerkingsmodus u momenteel gebruikt in uw shell, voert u de opdracht in set -o vanaf de opdrachtregel en kunt u bepalen welke bewerkingsmodus u momenteel gebruikt:

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

Als u wilt schakelen tussen de bewerkingsmodus van de opdrachtregel, typt u een van de volgende:

set -o vi

of

set -o emacs

45
2018-03-17 09:07



Als u een ezelsbruggetje wilt, de K staat voor kill (de regel vanaf de cursorpositie). - Gregor Botero
In vi-opdrachtmodus, D werkt hetzelfde als d$ - glenn jackman
+1 voor het daadwerkelijk schrijven van de rechts beantwoorden en uitleggen dat shellopts het kunnen veranderen. - TC1
>> Bedankt. Het lijkt erop dat ik vi gebruik, dus CTRL + K doet de truc. - Adam Matan Adam, dan is dat in de emacs-modus waarin je je bevindt, niet vi. - catch22
In Kubuntu werken oneiric (konsole), Ctrl + K en ESC Shift + D beide. ESC d wist een deel van de regel (misschien tot een ';'). (Als je daarna een $ invoert, wordt de $ naar de console gestuurd.) Ik probeer al een tijdje uit te zoeken hoe dat moet. Bedankt! - Joe


In het geval dat je alleen bekend bent met een van Zsh en Bash, zijn hier de equivalente toetsbindingen die je (mogelijk) nodig hebt:

bash

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

zsh

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

andere relevante informatie

Om een ​​lijst met sneltoetsen te krijgen:

# bash
bind -p

# zsh
bindkey

2
2017-09-25 20:54



Ik ben in de war. Voor Bash, zou het niet zo moeten zijn "^k"  voor Control + K? - wjandrea
Sorry, dat is mijn persoonlijke binding. Ik zou de standaardbinding hebben gezet maar was niet op mijn gemak bij bash-syntaxis. Omdat je hebt gezegd wat het zou moeten zijn, heb ik je woord aangenomen en mijn bericht bewerkt. - Sridhar-Sarnobat
Oh oke. Ik ben er zelf niet bekend mee, maar heb het gewoon gecontroleerd en het zou moeten zijn "\C-k" - wjandrea