Cải thiện chức năng tự động hoàn thành thiết bị đầu cuối (tương tự như Matlab)


18

Nếu bất kỳ ai trong số bạn từng sử dụng Matlab, bạn có thể đã nhận thấy chức năng cửa sổ lệnh trong chương trình đó. Tôi tự hỏi nếu có thể kích hoạt chức năng tương tự trong Mac Terminal.

Nó hoạt động như thế này: giả sử bạn đã sử dụng hai lệnh trước đó trong phiên Terminal này. Đầu tiên bạn sử dụng a cd ~và sau đó a ls -la.

Trong mọi thiết bị đầu cuối * nix, bao gồm cả máy Mac, nếu bạn nhấn vào Up Arrow, đầu tiên nó sẽ hiển thị ls -lalệnh và nếu bạn nhấn hai lần, cd ~lệnh đó. Điều đó thật tuyệt. Nhưng, trong Matlab, nếu bạn lần đầu tiên gõ chữ cái cvà sau đó nhấn Up Arrow, nó sẽ không hiển thị cho bạn lsmà thay vào đó hãy truy cập trực tiếp vào cd ~. Điều này giúp tiết kiệm rất nhiều thời gian khi bạn có các lệnh lớn và một danh sách dài các lệnh đã sử dụng trước đó.

Có thể không?

Câu trả lời:


27

Trong shell Bash, bạn có thể nhấn Control+ Rđể thực hiện tìm kiếm thông minh ngược trong lịch sử. Bắt đầu nhập lệnh và shell sẽ tự động hoàn thành với các lệnh đã nhập trước đó.

Sau đó, bạn có thể nhấn Enterđể thực hiện lại lệnh, sử dụng phím mũi tên trái hoặc phải để chỉnh sửa lệnh hoặc tiếp tục nhấn Control+ Rđể chuyển qua các lần hoàn thành có thể khác.

Đảo ngược tìm kiếm thông minh


9

Lưu cái này dưới dạng ~ / .inputrc:

# make the up and down arrows cycle through commands that match the start of a line
"\e[A": history-search-backward
"\e[B": history-search-forward

Tùy chọn sẽ là \e\e[Avà control-p \C-p. Bạn có thể thấy các chuỗi thoát của các tổ hợp phím khác bằng cách nhấn control-v.


1
Đối với người dùng chưa có ~/.inputrc, chỉ cần tạo một.
Đánh bạc Sibbs 23/07/2016

Câu trả lời nên được chấp nhận
ripper234

1
"\ e [A": không tìm thấy lệnh
Louis

2

Một điều khác bạn có thể làm là gõ !và sau đó là chữ cái đầu tiên, và nó sẽ tìm thấy gần đây nhất. IE: cd ~có thể được truy cập bằng!c


1

Đây là một tính năng của vỏ. Control-R sẽ làm những gì bạn mô tả, nhưng thay đổi sang lớp vỏ hiện đại hơn sẽ giúp bạn có được nhiều hơn thế. Hãy nhìn vào Z-shell (zsh), có một chút về đường cong học tập, nhưng nó rất mạnh mẽ.


Tôi nghĩ bạn có nghĩa là Control-R.
jmk

1

zsh sẽ hoàn thành các lệnh chính xác như trong ví dụ của bạn. Bạn thậm chí không phải làm bất cứ điều gì khác ngoài việc sử dụng nó cho vỏ của bạn.


0

Thêm chúng vào .cshrc của bạn (nếu bạn đang sử dụng tcsh) -

  bindkey -k up history-search-backward
  bindkey -k down history-search-forward

Sau đó, làm nguồn ~ / .cshrc để có được chính xác chức năng bạn mô tả.

Tôi không biết nếu có .profile tương đương.

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.