Làm cách nào để thay đổi phím tắt từ trước / tiếp theo trong bash?


20

Làm cách nào để định cấu hình Ctrl-Left và Ctrl-Right làm các phím tắt từ trước / tiếp theo cho bash (hiện là alt-b và alt-f)?



@Gilles - Tôi nghĩ rằng tôi đã hỏi một cái gì đó tương tự trước đây, vâng, xin lỗi. Đóng bản gốc dưới dạng bản sao (vì nó thuộc về nhiều hơn ở đây với Siêu người dùng).
ripper234

Câu trả lời:


26

Câu trả lời đúng phụ thuộc vào thiết bị đầu cuối bạn đang sử dụng.

Đối với Gnome Terminal hoặc các phiên bản gần đây của xterm, hãy đặt cái này vào ~ / .inputrc:

"\e[1;5C": forward-word
"\e[1;5D": backward-word

Đối với PuTTY, hãy đặt cái này trong ~ / .inputrc:

"\eOC": forward-word
"\eOD": backward-word

Đối với rxvt, hãy đặt cái này vào ~ / .inputrc:

"\eOc": forward-word
"\eOd": backward-word

Bạn có thể có thể thoát khỏi việc kết hợp tất cả những thứ đó lại với nhau trong ~ / .inputrc.

Trong mọi trường hợp, bạn cũng cần đặt cái này vào ~ / .bashrc (hoặc ~ / .zshrc):

export INPUTRC=~/.inputrc

Nếu điều đó không hoạt động hoặc bạn có một thiết bị đầu cuối khác, hãy đi đến thiết bị đầu cuối của bạn và nhập Ctrl+ V Ctrl+ ->. Sau đó sử dụng thay vì "\e[1;5C"hoặc "\eOC"ở trên. Lặp lại cho Ctrl+ <-.

Lưu ý rằng bạn cần viết các chuỗi thoát bàn phím bằng cú pháp inputrc , vd

  • \C có nghĩa là kiểm soát
  • \ecó nghĩa là thoát (xuất hiện như ^[khi gõ nó bằng Ctrl + V ở trên)

Ctrl + V, Ctrl -> in "^ [[1; 5C" và tôi đang sử dụng gnome-terminal.
ripper234

2
Vì vậy, hãy thử "\e[1;5C": forward-word. Và làm Ctrl+ Vđiều cho Ctrl+ Left Arrowquá.
Mikel

Cảm ơn, làm việc như một nét duyên dáng. Dần dần nhưng chắc chắn, tôi sẽ học cách bơi trong linux. Tại sao họ phải làm cho nó không trực quan ngay từ đầu? (Bạn phải thừa nhận ctrl bên trái, Ctrl bên phải là những lựa chọn tốt hơn)
ripper234

1
Nếu bạn nghĩ rằng Linux không trực quan để bắt đầu, hãy thử cài đặt mặc định FreeBSD hoặc thậm chí Solaris. Có bash như vỏ khởi đầu của bạn là một giấc mơ. Ngoài ra, vì bàn phím không phải lúc nào cũng có phím Mũi tên, Emacs và do đó cũng hỗ trợ các phím tắt hỗ trợ. Hãy thử sử dụng Ctrl-b và Ctrl-f một lúc.
chim cánh cụt359

2
Vẻ đẹp của các hệ thống UNIX / Linux là dễ dàng di chuyển xung quanh các cài đặt. Khi bạn nhận được các chương trình yêu thích của mình được cấu hình theo cách bạn thích, chỉ cần sao chép nó xung quanh. Tôi thực sự đang sử dụng kiểm soát phiên bản cho các tệp thư mục nhà của mình như .inputrc, .bashrc, .vimrc, v.v. Tôi sử dụng đồng bóng để sao chép và cập nhật tất cả các cài đặt thư mục nhà của tôi giữa các máy tính. Tại một thời điểm nào đó tôi cũng dự định xuất bản repo của mình để những người khác có thể chia sẻ tất cả công việc khó khăn của tôi.
chim cánh cụt359

3

Nếu bạn đang sử dụng ZSH, bạn cần thực hiện một phương pháp khác, bởi vì, trích dẫn các phần có liên quan từ hướng dẫn ZSH của ArchLinux :

Zsh không sử dụng readline #like bash #, thay vào đó, nó sử dụng zle riêng và mạnh hơn.

Nó không đọc / etc / inputrc hoặc ~ / .inputrc.

Sau khi đọc hướng dẫn đó, tôi đã hình dung rằng tôi cần một nguồn ZSH modren để có được ý tưởng chung về cách thực hiện điều này và vì vậy tôi tìm thấy tệp oh-my-zsh này mô tả hành vi tôi muốn, tôi đã sao chép các phần có liên quan muốn vào ~ / .zshrc của tôi:

bindkey -e #Use emacs mode, it's more sane for beginners
bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word
bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word
# Also, If you want to copy paste this into your zshrc,
# I'm pretty sure you would have to add this at the top : 
# setopt interactive_comments

tôi đã thử ctrl + rightarrow, nhưng nó không truyền được một lời nào trên Mac
TomSawyer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.