Видалення вводу назад до останньої косої риски вперед


16

Я дуже часто буду гортати між декількома файлами на сервері. Я запускаю наступні приклади команд послідовно:

nano /web/site/path/to/file
/web/site/script.py
nano /web/site/path/to/anotherFile
nano /web/site/path/to/yetAnotherFile
/web/site/script.py
nano /web/site/path/to/etc

Для переходу від однієї nanoкоманди до іншої в даний час натискаю Upі Backspaceзамінюю останній відрізок шляху. Проблема в цьому в тому, що я справді, дуже ледачий.

Чи є комбінація клавіш (або башизм), яка може:

  • Замініть на останній використаний шлях (із додатковим бітом на кінці)
  • Видалити в поточному рядку (наприклад, після натискання Up) назад до останнього/

1
Я не впевнений, що саме ви маєте на увазі, але я думаю, що для першої частини ви можете використовувати alt+ .?
Sparhawk

@Sparhawk Alt + .використовується для чогось іншого .
Radu Rădeanu

@ RaduRădeanu Так, можливо, я неправильно зрозумів питання. Я думав, що "Замінити останній використаний шлях (із додатковим бітом на кінці)" означав, що alt+ .робить.
Sparhawk

@Sparhawk Знову ж таки, один із таких ярликів, який дійсно корисний раз на місяць, який я просто не можу взяти на себе пам'ять. У поєднанні з alt-backspace, це дуже зручно для запуску подібних файлів через різні команди.
Олі

@Oli Я, як правило, використовую це неабияк, але я завжди забуваю, як рухати іншим способом !
Sparhawk

Відповіді:


21

Я думаю, ви шукаєте ярлик Alt+ Backspace.

Після натискання Upце слід видалити назад до попереднього /або spaceсимволу.


7
ЗАРАЗ Я НЕ МОЖУТЬ! (Редагувати: Клянусь, я дізнаюсь і забув цю ярлику принаймні десять разів на рік)
Олі

3
Що це робити? На моєму терміналі це, здається, не робить нічого іншого, ніж звичайне backspace.
Бакуріу

1
@Bakuriu Цей ярлик повинен бути типовим. Якщо ви хочете дізнатися, на що це відображено у вашій системі запускуbind -P | grep '^backward-kill-word'
Sylvain Pineau,

1
@Bakuriu Те саме тут, я на Mac.
laike9m

9

Для виявлення прив'язки читання рядків, які вбивають слово назад, як хочете, ви можете використовувати таку команду у своєму терміналі:

bind -p | awk '/kill/ && /word/ && /backward/'

У установці Ubuntu за замовчуванням вихід може бути:

"\e\C-h": backward-kill-word
# shell-backward-kill-word (not bound)

Другий рядок на даний момент здається не важливим, тому спробуємо розібратися, що означає перший рядок. З того, що я розумію, backward-kill-wordфункція Readline , яка насправді видалити всі символи недо попередній спеціальний символ ( /, ;, і ,т.д.) прив'язаний до \e\C-hпослідовності клавіш. Тепер, в цій послідовності \e являє на Escключ, \C- на Ctrlключ, і \C-hвиступає за Ctrl+ , hяка еквівалентна в цьому випадку з Backspaceключем.

Отже, ви шукаєте комбінацію клавіш Esc+ Ctrl+,h яка еквівалентна Esc+Backspace і яка через поведінку xterm, яка змушує Altклавішу діяти як мета-символ, а мета-символи перетворюються в двосимвольну послідовність із самим символом Esc(див. Див. man xterm) , еквівалент Alt+Backspace .

Тепер, якщо вам це не подобається, і ви продовжуєте його забувати, ви можете скористатись такою командою для створення нового ярлика, скажімо Esc+ w, для вашої мети:

bind '"\ew": backward-kill-word'

Щоб зробити цю нову ярлик стійкою весь час для всіх команд, в яких використовується лінія зчитування, додайте у ~/.inputrcфайл наступний рядок рядка :

"\ew": backward-kill-word

Див. Для help -m bind | sensible-pagerотримання додаткової інформації.


2
Гарна відповідь. Більш часто ви вкладаєте цілі параметри в одиничні лапки за допомогою команди bind; bind '"\ew": backward-kill-word', але це нитко. І може бути варто відзначити , що ви також можете помістити "\ew": backward-kill-wordв ~/.inputrc, в цьому випадку інших команд, використання Readline буде також , що зв'язування, наприклад , якщо ви дозволите Readline в Пітоні інтерактивної оболонці, що зв'язування також буде застосовуватися там.
geirha

@geirha Так, я знаю, що ти сказав, але я думав, що ОП знає, як це впоратися. Так чи інакше, зараз я розумію, що моя відповідь не дуже корисна для ОП (він просто хотів запам'ятати ярлик), але я сподіваюся бути корисним для інших користувачів цього сайту і для цього я відредагував свою відповідь, додавши ваше спостереження. Дякую.
Radu Rădeanu

0

Ще одна ключова комбінація:

Alt+ Bтоді Ctrl+K

Alt + B     Move cursor backward one word on the current line    
Ctrl + K    Clear the line after the cursor

Alt+ Bтоді Alt+D

Це видаляє останнє слово, не видаляючи спеціальних знаків між словами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.