Vi-modunda bash'taki son komutun son parametresi


19

Sevgili bash'ımı vi modunda kullanmaya ikna oldum (Stack Overflow'da). Şimdiye kadar oldukça iyi alıştım ve beğendim.

Ancak gerçekten bir özelliği özledim: emacs-modunda, "ESC" tuşuna basarak önceki komutun son parametresini girebilirsiniz. (Yani, basın kaçış ve ardından.)

Vi moduna son parametreyi eklemek için varsayılan bir bağlama var mı? Bir tane bulamadım ve bu komutu gerçekten özledim ...

Yanıtlar:


9

Varsayılan yok. Vi moduna geçtiğinizde 'yank-last-arg' ('bind -p' ile listelendiği gibi) bağlaması kaybolur.

bind '"\e."':yank-last-arg

size aynı bağlamayı geri verir (veya başka bir şey seçer)


1
bindkey "\e." insert-last-word
ksh

Ben yıllarca zsh üzerinde yaşadım ve bash kullanmak zorunda kaldım her zaman (örneğin iş yerinde bir sunucuda) ben bash üzerinde nasıl kurmak asla anlamaya unutmadan. Daha fazla yok! Bu ile birlikte history-search-backwardsciddi komut satırı kullanıcıları için paha biçilmezdir.
Sridhar Sarnobat

11

Varsayılan olarak "vi" ile eşleştirilmiş (vi-yank-arg) vardır. İstediğinizi yapmalısınız (komut modunda).


+1. Bu cevabın neden kabul edilmediğinden emin değilim.
Sathyam

7

Tam olarak aynı değil, ancak her iki modda da yazabilirsiniz !$ve bunun yerine önceki komutun son sözcüğü gelir. Kılavuzda daha fazla şey bulabilirsiniz .


Bir oy almak için yeterince yakın ama tam olarak aynı değil ... Yürütmeden önce satırı düzenleme olanağını kaçırıyorum. Ama yine de çok teşekkürler!
Mo

5

~ / .İnputrc dosyası (o bulunamazsa eğer elle bunu üretebilir) anahtar harita yapılandırabilirsiniz. ~ / .İnputrc dosyasına aşağıdaki komutu ekleyin :

"\e.": yank-last-arg
"\e_": yank-last-arg

~ / .İnputrc dosyam:

set completion-ignore-case on
set show-all-if-ambiguous on
set show-all-if-unmodified on

set editing-mode vi
set keymap vi-insert

"\C-p": previous-history
"\C-n": next-history
"\C-a.":beginning-of-line
"\C-e.":end-of-line

"\e.": yank-last-arg
"\e_": yank-last-arg

Readline ile ilgili ayrıntıları bind -pburada bulabilirsiniz: http://linux.about.com/library/cmd/blcmdl3_readline.htm

Ve bash Vi tuş körlemeleri ve Readline VI Düzenleme Modu Cheat Sheet hakkında bazı bilgiler


3

.Bashrc dosyanızın içine şunları ekleyin:

set -o vi
bind -m vi-command ".":insert-last-argument
bind -m vi-insert "\C-l.":clear-screen
bind -m vi-insert "\C-a.":beginning-of-line
bind -m vi-insert "\C-e.":end-of-line
bind -m vi-insert "\C-w.":backward-kill-word

Bunlar sadece ESC-noktasının değil, aynı zamanda Ctrl-A, Ctrl-E, Ctrl-W ve Ctrl-L'nin varsayılan davranışını da geri yükleyecektir. Bu nedenle normal bash modunun tadını çıkarabilir ve yine de bildiğiniz ve sevdiğiniz kısayolları kullanabilirsiniz. Daha fazla eyleme ihtiyacınız varsa, ihtiyacınız olan okuma satırı eyleminin adını ("net ekran", "satır sonu" vb.) Bulmak için "man bash" ı kontrol etmeniz yeterlidir.


0

$_Önceki komutun son argümanına başvurmak için kullanabilirsiniz .

Dezavantajları:

  1. Enter tuşuna basmadan önce, eklenen şeyin eklemek istediğiniz şey olduğunu doğrulayamazsınız.

  2. PROMPT_COMMAND veya bir DEBUG tuzağı kullanırsanız (tam olarak, soruna neden olduğundan emin değilim; her ikisi de benim .bashrc içinde var) xterm başlığına çalışan komutu koymak gibi süslü şeyler yapmak için, bu cızırdayacak $_.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.