Tự động hoàn tất thiết bị đầu cuối không hoạt động đúng


56

Nếu tôi bắt đầu nhập một lệnh như apt-gsau khi nhấn tab, shell sẽ hoàn thành lệnh đó apt-get, nhưng đối với phần thứ hai của lệnh như install, nếu tôi nhập một số ký tự như insta, nhấn tab, sẽ không hoàn thành install.

Một ví dụ khác: sau khi tôi sudonhấn tab, không hoàn thành bất cứ điều gì. ví dụ: sudo apt-ge[ tab] và không có gì.

Tôi đã cài đặt Ubuntu bằng mini iso (trình cài đặt mạng 40 MB), vì vậy có thể có một cấu hình mà tôi đã bỏ lỡ!

Tôi đã thêm mã này vào .bashrcnhưng vẫn không hoạt động:

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Tôi cũng đã kiểm tra sự cho phép của .bashrcnó và nó -rw-r--r--.

Tôi cũng lấy nguồn .bashrcsau khi thay đổi sử dụng source .bashrcđể áp dụng các thay đổi cho môi trường mới nhưng vẫn không có hiệu ứng.

Tôi sử dụng xfce4-terminalvì vậy tôi nghĩ rằng nó có thể là thiết bị đầu cuối và không phải là bash.

Nhưng chỉnh sửa:

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

Và thay đổi:

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

đến:

<property name="&lt;Super&gt;Tab" type="string" value="empty"/>

Không làm cho bất kỳ sự khác biệt quá.

Câu trả lời:


83

bash-completion là một tập hợp các tập lệnh bash cho phép hoàn thành tùy chỉnh cho các lệnh cụ thể.

Điều này không chỉ dành cho các tập tin và thư mục, mà còn cho các lệnh. Vì vậy, bạn gõ một phần của các lệnh và bằng cách nhấn, Tabchúng tôi sẽ tự động hoàn thành các lệnh.

Cài đặt

Bước 1: Cài đặt hoàn thành bash

$ sudo apt-get install bash-completion

Và đôi khi nó hoạt động nếu chúng ta cài đặt lại nó bằng lệnh follwing:

$ sudo apt-get install --reinstall bash-completion

Bước 2: Cho phép hoàn thành bash trong .bashrctệp của bạn

Mở của bạn gedit ~/.bashrcvà nếu những nội dung này không tồn tại ở đó, hãy thêm chúng vào cuối của nó và lưu nó.

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Quan trọng: Sau khi thay đổi, bạn cần tìm nguồn của mình ~/.bashrcvới source ~/.bashrchoặc mở lại Terminal. Nó sẽ được sửa chữa ngay bây giờ.


1
Tôi muốn xác nhận rằng việc thêm khối mã ở trên vào tệp ~ / .bashrc đã làm việc cho tôi. Chỉ cần một bình luận; bạn không thực sự cần phải đăng xuất và đăng nhập lại để làm cho nó hoạt động (bạn có thể không muốn chấm dứt những gì bạn làm việc), bạn chỉ có thể chạy source ~/.bashrc.
nullgeppetto

Tôi đã phải mở lại Terminal để nó hoạt động!
Gilberto Albino

2
Hoàn thành đột nhiên ngừng làm việc cho tôi, các bước trên không khắc phục vấn đề. Bất kỳ ý tưởng về cách khắc phục sự cố? Trên Ubuntu 16.04
Gudlaugur Egilsson

1
Bước 2 làm điều đó cho tôi. Hoặc lấy mẫu từ/etc/skel/.bashrc
Hendy I Girls

1
@SergioIvanuzzo không chắc chắn về vấn đề bạn đang gặp phải, bạn có thể xem unix.stackexchange.com/q/219342/72456 này giúp, nếu không, hãy mở câu hỏi của riêng bạn cho vấn đề bạn gặp phải.
αғsнιη

27

Nếu trường hợp của bạn là tab thiết bị đầu cuối không hoạt động Xfce,

Giải pháp như sau:

  1. Mở Application Menu> Settings> Window Manager.
  2. Bấm vào Keyboardtab.
  3. Xóa Switch window for same applicationcài đặt.

Window Manager chụp màn hình làm thế nào để xóa cửa sổ chuyển đổi cho cùng một ứng dụng

Tôi đã tìm thấy giải pháp ở đây


Đã thử nhận awnser, nhưng mọi thứ đã sẵn sàng. Đây thực sự là giải pháp cho tôi.
dùng1226868

Như trên. Gợi ý tuyệt vời
tiểu não

Cảm ơn bạn rất nhiều, tôi đã thực sự mất trí về điều này.
Dustin Cowles

2
Vẫn là giải pháp tôi cần kể từ tháng 5 năm 2018.
clifgray

Cảm ơn đã làm việc cho tôi
MMH

3

Bạn cũng có thể ở trong trình bao không hỗ trợ tự động hoàn tất (ví dụ: Bourne Shell | SH). Nếu bạn muốn BASH tự động hoàn tất, bạn cần chuyển đổi shell, nói với BASH (Bourne Again SHell) thay vì bằng lệnh

chsh -s /bin/bash

Nguồn: Ubuntu Wiki - Thay đổi vỏ


1

Trong trường hợp của tôi, tôi đã cố gắng thực thi một tập lệnh ./myScript.shvà việc gõ ./my[tab]sẽ không tự động hoàn tất.

Tôi đã phải thêm quyền thực thi vào tập tin và tự động hoàn thành.

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.