Menghapus input kembali ke garis miring terakhir

16

Saya akan sangat sering berpindah-pindah antara beberapa file di server. Saya akan menjalankan perintah contoh berikut secara berurutan:

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

Untuk beralih dari satu nanoperintah ke perintah berikutnya saya saat ini menekan Updan Backspaceuntuk mengganti segmen terakhir dari jalur. Masalah dengan ini adalah saya benar- benar malas.

Apakah ada pintasan keyboard (atau Bashism) yang dapat:

  • Digantikan oleh jalur terakhir yang digunakan (dengan sedikit tambahan di akhir)
  • Hapus di baris saat ini (mis. Setelah menekan Up) kembali ke yang terakhir/
Oli
sumber
1
Saya tidak yakin persis apa yang Anda maksud, tapi saya pikir untuk bagian pertama Anda dapat menggunakan alt+ .?
Sparhawk
@Sparhawk Alt + .digunakan untuk hal lain .
Radu Rădeanu
@ RaduRădeanu Ya, mungkin saya salah paham pertanyaannya. Saya pikir "Digantikan oleh jalur terakhir yang digunakan (dengan sedikit tambahan di akhir)" berarti apa yang dilakukan alt+ ..
Sparhawk
@Sparhawk Sekali lagi, salah satu cara pintas yang benar-benar berguna sebulan sekali yang sepertinya tidak bisa saya lakukan pada memori. Dalam kombinasi dengan alt-backspace, ini sangat berguna untuk menjalankan file serupa melalui perintah yang berbeda.
Oli
@Oli Saya cenderung menggunakannya sedikit, tapi saya selalu lupa bagaimana cara bergerak ke arah lain !
Sparhawk

Jawaban:

21

Saya pikir Anda sedang mencari jalan pintas Alt+ Backspace.

Setelah menekan Upini harus menghapus kembali ke karakter /atau sebelumnya space.

Sylvain Pineau
sumber
7
SEKARANG SAYA TIDAK BERHARAP! (Sunting: Saya bersumpah saya belajar dan melupakan jalan pintas ini setidaknya sepuluh kali setahun)
Oli
3
Apa yang harus dilakukan? Di terminal saya sepertinya tidak ada yang berbeda dari biasa backspace.
Bakuriu
1
@ Bakuriu Pintasan ini harus yang default. Jika Anda ingin mengetahui apa yang dipetakan pada menjalankan sistem Andabind -P | grep '^backward-kill-word'
Sylvain Pineau
1
@ Bakuriu Sama di sini, saya di Mac.
laike9m
9

Untuk mendeteksi pengikatan readline yang membunuh kata mundur seperti yang Anda inginkan, Anda dapat menggunakan perintah berikut di terminal Anda:

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

Dalam instalasi Ubuntu default, outputnya bisa:

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

Baris kedua tampaknya tidak penting pada saat ini, jadi mari kita coba melihat apa yang dimaksud dengan baris pertama. Dari apa yang saya mengerti, backward-kill-wordfungsi readline yang sebenarnya menghapus semua karakter Sampai akhirnya karakter khusus sebelumnya ( /, ;, ,dll) terikat dengan \e\C-hurutan tombol. Sekarang, dalam urutan ini \e merupakan yang Escutama, \C- yang Ctrlutama, dan \C-hsingkatan Ctrl+ hyang setara dalam hal ini dengan Backspacekunci.

Jadi, Anda mencari Esc+ Ctrl+h pintasan keyboard yang setara dengan Esc+Backspace dan yang, karena perilaku xterm yang membuat Altkunci untuk bertindak sebagai karakter meta dan karakter meta dikonversi menjadi urutan dua karakter dengan karakter itu sendiri didahului oleh Esc(lihat man xterm) , setara dengan Alt+Backspace .

Sekarang, jika Anda tidak menyukainya dan Anda terus melupakannya, Anda dapat menggunakan perintah berikut untuk membuat pintasan baru, katakanlah Esc+ w, untuk tujuan Anda:

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

Untuk membuat pintasan baru ini tetap ada sepanjang waktu untuk semua perintah yang menggunakan readline, tambahkan baris baris berikut ke ~/.inputrcfile Anda :

"\ew": backward-kill-word

Lihat help -m bind | sensible-pageruntuk info lebih lanjut.

Radu Rădeanu
sumber
2
Jawaban yang bagus. Lebih umum Anda akan melampirkan seluruh pengaturan dalam tanda kutip tunggal dengan perintah bind; bind '"\ew": backward-kill-word', tapi itu nitpicking. Dan mungkin layak disebut bahwa Anda juga dapat menempatkan "\ew": backward-kill-worddi ~/.inputrc, dalam hal perintah lain yang menggunakan readline juga akan memiliki yang mengikat, misalnya jika Anda mengaktifkan readline di python shell interaktif, yang mengikat juga akan berlaku di sana.
geirha
@geirha Ya, saya tahu apa yang Anda katakan, tapi saya pikir OP tahu cara mengelola ini. Ngomong-ngomong, sekarang saya menyadari bahwa jawaban saya tidak begitu berguna untuk OP (dia hanya ingin mengingat jalan pintas), tetapi saya berharap dapat bermanfaat bagi pengguna lain dari situs ini dan untuk ini saya mengedit jawaban saya dengan menambahkan pengamatan Anda. Terima kasih.
Radu Rădeanu
0

Kombinasi kunci lainnya adalah:

Alt+ Blalu Ctrl+K

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

Alt+ Blalu Alt+D

Ini menghapus kata terakhir tanpa menghapus karakter khusus di antara kata-kata.

αғsнιη
sumber