Chơi với macro:
Ràng buộc phím chức năng F8để nhân với hai từ cuối cùng (tăng khoảng trắng trước đó) (mã khóa F8 được tìm thấy bằng cách sử dụng Ctrl-V F8
):
$ bind '"\e[19~": "\C-w\C-y\C-y"'
Điều đó có thể được thực hiện vĩnh viễn bằng cách gửi cùng một văn bản tới ~/.inputrc
$ echo '"\e[19~": "\C-w\C-y\C-y"' >> ~/.inputrc
sau đó gõ:
tiếng vang 0F8F8F8F8
để có được 2 ^ 4 lần số không. (vẫn còn 5 lần nhấn phím).
hoặc loại:
cuốn sách tiếng vangF8F8F8
để có được 2 ^ 3 từ sách.
Vẫn nhanh hơn:
Nhân với 4:
$ bind '"\e[19~": "\C-w\C-y\C-y\C-w\C-y\C-y"'
tiếng vang 0F8F8
3 phím bấm.
Nhân với 8 (cùng số với phím chức năng)
$ bind '"\e[19~": "\C-w\C-y\C-y\C-w\C-y\C-y\C-w\C-y\C-y"'
tiếng vang 00F8
Vẫn 3 phím bấm.
Lừa đảo?
Gian lận bằng cách nhân với 16.
$ bind '"\e[19~": "\C-w\C-y\C-y\C-w\C-y\C-y\C-w\C-y\C-y\C-w\C-y\C-y"'
tiếng vang 0F8
Chỉ có 2 phím bấm. (và vẫn là một chức năng đơn giản hữu ích)
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
Rõ ràng là gian lận:
$ bind '"\e[19~": "0000000000000000"'
tiếng vang F8
Chỉ cần 1 (có: một ) tổ hợp phím.
Thay đổi ràng buộc cho ctrl+U:
Gửi cái này đến ~/.inputrc
:
echo '"\C-u": universal-argument >> ~/.inputrc
Đọc lại ~/.inputrc
tập tin:
ctrl+Xctrl+R
làm điều đó như bình thường trong emacs (như bạn muốn):
foo --bar = baz ctrl+U16 ctrl+U0
7 phím (sau khi "thiết lập").
Hơi ngắn hơn một chút:
Sử dụng "nhân với 4" mặc định của "đối số phổ quát" và kết thúc bằng
ctrl+V 0
foo --bar = baz ctrl+Uctrl+Uctrl+V0
Chỉ có 5 phím.
Sử dụng alt+nquyền truy cập vào (arg: n)
foo --bar = baz Alt+16Ctrl+V0
Đó là 6 chìa khóa để có được 16 số không.
Không thay đổi bất kỳ phím tắt nào:
Nếu trong bash của bạn, bạn có bash C-u kills the currently-being-typed line
.
Đó là bởi vì "\C-u":
được liên kết với unix-line-discard
.
Nhưng điều đó cũng có thể giúp ích:
Khi nào, cái gì trước khi con trỏ bị xóa, nó cũng được đặt trong "vòng giết".
Vì vậy, ctrl+u
xóa và ctrl+y
kéo lại những gì đã bị xóa.
Trên một dòng sạch: Gõ 00
xóa nó và kéo nó trở lại hai lần để thực hiện 0000
.
Lặp lại để nhận 00000000
(8 số không), cuối cùng gõ lệnh và quay lại hai lần.
Bộ đầu tiên ( ctrlnhấn 7 phím ):
00 ctrl+Uctrl+Yctrl+Y ctrl+U
Bộ thứ hai (5 phím)
ctrl+Uctrl+Yctrl+Y ctrl+U
Điều đó sẽ nhận được tám số không trong vòng xóa, sau đó nhập những gì bạn muốn:
foo - bar = baz ctrl-Y ctrl-Y
để có được:
foo --bar=baz 0000000000000000
Sau khi bạn có ý tưởng, bạn cũng có thể, nhập những gì bạn cần, đi đến đầu dòng ( ctrl-Y), làm như trên (tối đa tám số không) đi đến cuối ( ctrl-E) và kéo dài hai lần.
foo --bar = baz ctrl-A00ctrl-Uctrl-Yctrl-Y ctrl-Uctrl-Yctrl-Y ctrl-U ctrl-Ectrl-Yctrl-Y
Đó là 15 phím (bên cạnh lệnh).
Không ngắn, tôi biết, nhưng đó chỉ hoạt động với những gì đã có sẵn.
Cái này ngắn hơn một chút:
0000 ctrl-U ctrl-Y ctrl-Y ctrl-Y ctrl-Yctrl-A foo --bar = baz
Đó là 11 phím
know what you want to do
. Trong một lệnh lồng nhau phức tạp, làm thế nào bash biết phần nào bạn muốn xem kết quả của việc thực hiện trong lịch sử trái ngược với chính lệnh đó? Còn các biến thì sao? Trong bash ngắn sẽ luôn luôn cócode
trong lịch sử, không phải là kết quả của việc thực thi mã.