Có một giải pháp là sử dụng công cụ “fzf” (Fuzzy Finder) trong terminal Linux để tạo danh sách nổi (pop-up) các folder và file và cho phép bạn di chuyển bằng phím để chọn các mục trong danh sách đó mà hôm nay tôi sẽ giới thiệu cho bạn.
Cài đặt bằng APT.
Để sử dụng fzf, bạn cần cài đặt nó trên hệ thống của mình. Dưới đây là hướng dẫn cài đặt fzf trên một số bản phân phối Linux phổ biến:
- Ubuntu/Debian:
apt-get install fzf
- CentOS/Fedora:
sudo dnf install fzf
Sau khi cài đặt, bạn có thể sử dụng fzf trong terminal bằng cách chạy lệnh:
ls | fzf
Lệnh trên sẽ hiển thị một danh sách nổi của các folder và file trong thư mục hiện tại. Bạn có thể di chuyển bằng phím lên/xuống để chọn mục và nhấn Enter để chọn mục đó.
Ngoài ra, fzf cung cấp nhiều tùy chọn và tính năng linh hoạt khác. Bạn có thể tìm hiểu thêm về fzf và cách sử dụng nó bằng cách xem tài liệu hoặc tìm kiếm các nguồn tham khảo trực tuyến.
Cài đặt bằng SNAP.
Nếu bạn không thể cài đặt fzf thông qua apt-get
trên Ubuntu 18.04, bạn có thể thử cài đặt nó bằng cách sử dụng công cụ quản lý gói snap
.
Dưới đây là hướng dẫn cài đặt fzf bằng snap trên Ubuntu 18.04:
Cài đặt snap nếu chưa có:
sudo apt-get install snapd
Cài đặt fzf bằng snap:
sudo snap install fzf
Sau khi cài đặt thành công, bạn có thể sử dụng fzf bằng cách chạy lệnh:
ls | fzf
Điều này sẽ hiển thị một danh sách nổi của các folder và file trong thư mục hiện tại, và bạn có thể chọn bằng cách di chuyển lên/xuống và nhấn Enter.
Nếu việc cài đặt qua snap không khả dụng, bạn cũng có thể thử cài đặt fzf bằng cách tải xuống bản cài đặt từ trang web chính thức của fzf và cài đặt nó thủ công. Hướng dẫn chi tiết có thể được tìm thấy trong tài liệu và trang web của fzf.
Cài đặt từ kho lưu trữ Git.
bạn có thể cài đặt fzf thông qua GitHub và sử dụng công cụ quản lý gói apt.
Dưới đây là các bước để cài đặt fzf trên Ubuntu 18.04:
Cài đặt gói phụ thuộc:
$ git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
Cloning into '/root/.fzf'...
remote: Enumerating objects: 115, done.
remote: Counting objects: 100% (115/115), done.
remote: Compressing objects: 100% (109/109), done.
remote: Total 115 (delta 2), reused 21 (delta 0), pack-reused 0
Receiving objects: 100% (115/115), 254.39 KiB | 2.96 MiB/s, done.
Resolving deltas: 100% (2/2), done.
Sao chép kho lưu trữ fzf từ GitHub:
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
Chạy lệnh cài đặt fzf, trong quá trình cài đặt, bạn sẽ được yêu cầu các tùy chọn cài đặt. Bạn có thể chấp nhận các giá trị mặc định bằng cách nhấn Enter.
$ ~/.fzf/install
Downloading bin/fzf ...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 1347k 100 1347k 0 0 1863k 0 --:--:-- --:--:-- --:--:-- 1863k
- Checking fzf executable ... 0.42.0
Do you want to enable fuzzy auto-completion? ([y]/n) y
Do you want to enable key bindings? ([y]/n) y
Generate /root/.fzf.bash ... OK
Do you want to update your shell configuration files? ([y]/n) y
Update /root/.bashrc:
- [ -f ~/.fzf.bash ] && source ~/.fzf.bash
+ Added
Finished. Restart your shell or reload config file.
source ~/.bashrc # bash
Use uninstall script to remove fzf.
For more information, see: https://github.com/junegunn/fzf
Sau khi bạn đã cài xong hãy chạy lệnh để kích hoạt fzf.
source ~/.bashrc
Sau khi hoàn tất, fzf đã được cài đặt và sẵn sàng sử dụng.
Bạn có thể sử dụng lệnh ls | fzf
, ls -al | fzf
hoặc ll | fzf
,…. để hiển thị danh sách các folder và file trong thư mục hiện tại và chọn bằng cách di chuyển lên/xuống và nhấn Enter.
Mẹo vặt kết hợp.
Hiển thị thư mục sắp xếp từ cũ đến mới, trường hợp này có thể kết hợp với lệnh cd
chẳng hạn.
$(find . -type d | sort | fzf)
Trong lệnh trên, sort
được sử dụng để sắp xếp các thư mục theo thứ tự tăng dần (từ cũ đến mới), và fzf
được sử dụng để chọn một thư mục hoặc bạn có thể thêm -r
để sắp xếp từ mới đến cũ.
$(find . -type d | sort -r | fzf)
Hiển thị file sắp xếp từ cũ đến mới có review trước file, trường hợp này có thể kết hợp với các lệnh mở file như vi
chẳng hạn.
$(find . -type d | sort | fzf --preview 'if [ -d {} ]; then ls -al {}; else cat {}; fi')
Trong lệnh trên, sort
được sử dụng để sắp xếp các file theo thứ tự tăng dần (từ cũ đến mới), và fzf
được sử dụng để chọn một file hoặc bạn có thể thêm -r
để sắp xếp từ mới đến cũ.
$(find . -type d | sort -r | fzf --preview 'if [ -d {} ]; then ls -al {}; else cat {}; fi')
Gán phím tắt.
Để gán nhanh phím bằng cách chỉnh sửa tập tin cấu hình của môi trường dòng lệnh, bạn có thể làm như sau:
Mở tập tin cấu hình của môi trường dòng lệnh bằng trình soạn thảo văn bản, ví dụ: ~/.bashrc
hoặc ~/.bash_profile
.
function c {
local selected_item=$(find . -type f -o -type d | sort | fzf-tmux --preview 'if [ -d {} ]; then ls -al {}; else cat {}; fi' --preview-window=down:40%)
if [[ -n $selected_item ]]; then
if [[ -d $selected_item ]]; then
cd "$selected_item"
else
vi "$selected_item"
fi
fi
}
Tải lại tập tin cấu hình bằng cách chạy lệnh sau:
source ~/.bashrc
Hoặc nếu bạn thêm nội dung ở file ~/.bash_profile
.
source ~/.bash_profile
Hướng dẫn sử dụng hàm c
, đây là là một hàm tùy chỉnh trong shell mà bạn có thể sử dụng để dễ dàng chuyển đổi giữa thư mục và chỉnh sửa các tệp tin trong terminal. Dưới đây là cách hoạt động và cách sử dụng của hàm này:
- Hoạt động:
- Hàm
c
sử dụng lệnhfind
để tìm kiếm tất cả các tệp tin và thư mục trong thư mục hiện tại. - Kết quả từ lệnh
find
được sắp xếp và truyền vào công cụfzf-tmux
để tạo giao diện gợi ý tương tác. - Khi bạn sử dụng
c
trong terminal, một danh sách các tệp tin và thư mục sẽ xuất hiện dưới dạng gợi ý tương tác. - Bạn có thể sử dụng các phím mũi tên lên/xuống để di chuyển qua các tùy chọn và nhấn Enter để chọn.
- Nếu bạn chọn một thư mục, hàm
c
sẽ thực hiện lệnhcd
để chuyển đến thư mục đó. - Nếu bạn chọn một tệp tin, hàm
c
sẽ thực hiện lệnhvi
để mở tệp tin đó để chỉnh sửa.
- Cách sử dụng:
- Để sử dụng hàm
c
, bạn chỉ cần gõc
trong terminal và sau đó chọn thư mục hoặc tệp tin mà bạn muốn di chuyển hoặc chỉnh sửa. - Hàm
c
sẽ hiển thị danh sách thư mục và tệp tin có sẵn để bạn chọn. - Sử dụng các phím mũi tên lên/xuống để di chuyển qua danh sách và nhấn Enter để chọn.
- Nếu bạn chọn một thư mục, bạn sẽ di chuyển đến thư mục đó.
- Nếu bạn chọn một tệp tin, tệp tin đó sẽ được mở trong trình chỉnh sửa (vim).
Hàm c
giúp bạn tiết kiệm thời gian và tăng hiệu suất khi làm việc với thư mục và tệp tin trong terminal, đồng thời cung cấp một giao diện gợi ý dễ sử dụng.