- vừa được xem lúc

Cách cài đặt zsh và zsh-autosuggestions trên Ubuntu

0 0 51

Người đăng: Nguyễn Hữu Kim

Theo Viblo Asia

Giới thiệu chung

Sau khoảng thời gian làm việc trên Ubuntu, có quá nhiều lệnh bạn phải nhớ, hoặc đôi khi bạn phải thực hiện đi thực hiện lại nhiều lần, giá như terminal ngoài auto-complete mà có thể suggest được lệnh cho chúng ta thì tốt biết mấy. Bài viết này giúp bạn giải quyết điều đó!

Về mình, thực ra mình là một thằng Developer khá đơn giản ? nên mình thích mọi thứ cũng đơn giản, rộng rãi và thoáng đãng. Cũng bởi lẽ đó nên ngay từ khi bắt đầu sử dụng Ubuntu để làm việc, mình đã yêu thích Terminal mặc định của nó; ngay từ khi nhìn cái logo đơn giản nhưng không kém phần bắt mắt.

Để làm được việc suggest lệnh thì với /bin/bash là không đủ, chúng ta cần đổi bộ shell mặc định này sang một thằng khác mạnh mẽ hơn đó là Z-Shell hay còn gọi là zsh.

Đi kèm zsh có một framework đó là oh-my-zsh support mọi thứ từ theme, command line prompts, auto suggestions, .etc. Trong bài mình sẽ hướng dẫn mọi người cài đặt zshoh-my-zsh trên Ubuntu 18.04, tích hợp plugin zsh-autosuggestions cho oh-my-zsh để terminal có thể tự động suggest lệnh cho chúng ta. Hãy cùng bắt đầu nhé!

Cài đặt zsh

Cài đặt trực tiếp zsh thông qua apt-get như sau:

$ sudo apt-get install zsh -y Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed: zsh-common
Suggested packages: zsh-doc
The following NEW packages will be installed: zsh zsh-common
0 upgraded, 2 newly installed, 0 to remove and 126 not upgraded.
Need to get 4,066 kB of archives.

Kiểm tra xem đã cài đặt thành công chưa:

$ which zsh /usr/bin/zsh

Trên máy mình, zsh vừa được cài đặt và store tại đường dẫn /usr/bin/zsh. Như vậy là chúng ta đã cài đặt thành công nhé, nhưng đừng vội vã sử dụng. Nếu bạn chạy nó luôn bây giờ thì cần phải config một tỉ thứ loằng ngằng bắt đầu như này:

Nếu lỡ chạy, bạn nhập q và nhấn enter để thoát cài đặt nhé. Sau khi thoát nó sẽ hiển thị như này trên terminal, bạn đừng lo lắng, cứ nhập lệnh bình thường nhé:

webee-srv1%

Cài đặt oh-my-zsh

Bây giờ chúng ta cài đặt oh-my-zsh, là một framework cho zsh sẽ giúp mình cài đặt nhiều thứ như theme, PS1 prompts:

$ sudo curl -L http://install.ohmyz.sh | sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 115 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 8445 100 8445 0 0 11170 0 --:--:-- --:--:-- --:--:-- 11170
Cloning Oh My Zsh...
Cloning into '/home/kimnh/.oh-my-zsh'...
remote: Enumerating objects: 1136, done.
remote: Counting objects: 100% (1136/1136), done.
remote: Compressing objects: 100% (1101/1101), done.
remote: Total 1136 (delta 22), reused 938 (delta 17), pack-reused 0
Receiving objects: 100% (1136/1136), 739.38 KiB | 1.27 MiB/s, done.
Resolving deltas: 100% (22/22), done. Looking for an existing zsh config...
Using the Oh My Zsh template file and adding it to ~/.zshrc. __ __ ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \
/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / /
\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed! Please look over the ~/.zshrc file to select plugins, themes, and options. p.s. Follow us on https://twitter.com/ohmyzsh p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh Run zsh to try it out.

Thoát terminal hiện tại và mở lại terminal mới để thưởng thức giao diện mới:

[12:13] _@.com ~ $ zsh
➜ ~

Mình phải thực hiện chạy zsh để bắt đầu bật và dùng, để set nó làm mặc định, bạn chạy lệnh sau:

$ chsh -s $(which zsh)
Password:

Lại thực hiện khởi động lại. ZSH được tự động bật.

Cài đặt zsh-autosuggestions

Cài đặt plugin zsh-autosuggestions, giúp tự động suggetions các lệnh mà mình đã dùng:

$ git clone git://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions Cloning into '/home/kimnh/.oh-my-zsh/custom/plugins/zsh-autosuggestions'...
remote: Enumerating objects: 2385, done.
remote: Total 2385 (delta 0), reused 0 (delta 0), pack-reused 2385
Receiving objects: 100% (2385/2385), 541.32 KiB | 844.00 KiB/s, done.
Resolving deltas: 100% (1531/1531), done.

Theo như mình đọc các bài viết tham khảo trên Viblo thì chúng ta kích hoạt plugin bằng lệnh sau:

➜ ~ plugins=(zsh-autosuggestions)

Cơ mà mình làm 4 lần trên cả 4 con server + 1 PC cũng đều không thấy plugin này nó hoạt động. Dù có khởi động lại terminal, hay là restart máy.

Cách giải quyết đó là bạn thêm dòng sau vào cuối file ~/.zshrc để kích hoạt plugin zsh-autosuggtestions lên:

➜ ~ vi ~/.zshrc
...
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh" source ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh

Lưu lại và khởi động lại terminal và tận hưởng:

Khi suggestion hiện ra, nếu bạn muốn dùng luôn suggestion đấy thì nhấn nút: Up Arrow (mũi tên đi lên) để chọn. Tuy nhiên cá nhân mình thấy dùng phím này khá bất tiện với các bàn phím dạng Full, Lite phổ thông bởi thường vị trí nút này ở ngoài vùng soạn thảo chính (A-Enter). Do đó, mình sẽ custom sang tổ hợp Shift + Enter để chọn suggestion. Bản thân mình thấy nó tiện hơn vì khi muốn thực thi luôn suggestion sau khi chọn thì tương đương Shift + Enter + Enter. ?

➜ ~ vi ~/.zshrc source ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh ## Add shortcut "Shift + Enter"
bindkey '^[OM' autosuggest-accept

Tổng kết

Như vậy, mình đã thực hiện xong việc hướng dẫn cài đặt zshzsh-autosuggestions để việc sử dụng terminal trong công việc bớt nhàm chán hơn. Nếu bạn không thích Terminal mặc định trên Ubuntu, bạn có thể sử dụng một số terminal sau như:

  • Terminator
  • KDE Konsole -> MÌnh thích thằng này vì nó đơn giản giống Terminal, nhưng có thêm cả Split view:
sudo apt-get install konsole

Ở chế độ Split View của Konsole sẽ như này, tất nhiên bạn có thể chia dọc màn hình:

P/S

P/S: Nếu bạn đã thực hiện đầy đủ các bước trên nhưng khi nhấn khi mở Terminal của Ubuntu mà vẫn không thấy giao diện của zsh được tự động kích hoạt thì hãy làm thêm bước sau cho Terminal:

  • Mở Terminal (Ctrl+Alt+T)
  • Ediit > Preferences, chọn tab Command ở bên phải
  • Tích chọn Run a custom command instead of my shell, điền /usr/bin/zsh vào ô Custom Command phía ngay dưới
  • Nhấn Close rồi tắt bỏ Terminal và mở lại là sẽ được

Nếu muốn cài đặt Konsole hay một cái khác làm terminal mặc đinh, bạn chạy lệnh sau trên Ubuntu:

➜ ~ sudo update-alternatives --config x-terminal-emulator There are 6 choices for the alternative x-terminal-emulator (providing /usr/bin/x-terminal-emulator). Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gnome-terminal.wrapper 40 auto mode 1 /usr/bin/gnome-terminal.wrapper 40 manual mode 2 /usr/bin/koi8rxterm 20 manual mode 3 /usr/bin/konsole 40 manual mode 4 /usr/bin/lxterm 30 manual mode 5 /usr/bin/uxterm 20 manual mode 6 /usr/bin/xterm 20 manual mode Press <enter> to keep the current choice[*], or type selection number: 3

Chọn terminal bằng cách nhập các số tương ứng. Của mình Konsole tương ứng là 3.

Hy vọng bài viết này sẽ là tiền đề để các bạn dần biết cách tùy biến Terminal của mình sao cho phù hợp. Ví dụ như cài thêm plugin zsh-syntax-highlighting nữa chẳng hạn. ?

Chúc các bạn thành công!

New update

Phần update này mình xin tổng hợp thêm một vài comment hay ho từ cộng đồng anh em Viblo đã suggest phía dưới. Rất cảm ơn mọi người vì sự chia sẻ:

bạn nào sau khi chạy chsh -s $(which zsh) rồi khởi động lại terminal mà vẫn shell cũ thì logout rồi login lại máy là ok nhé

A đã từ bỏ zsh và dùng fish

zsh mỗi lần update version là xóa hết history của terminal

Em thì trước có dùng Oh My Zsh, xong sau này đổi sang những cái alternative nhẹ nhanh hơn như là prezto hay zimfw. Đặc biệt là zimfw khởi động chỉ mất một nửa thời gian so với Oh My Zsh. Mặc định khi cài zim là đã có sẵn syntax highlight, suggestion, auto completion đầy đủ và việc cài/gỡ module rất đơn giản. Nên mọi người có thể thử dùng và cảm nhận nhé ?

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 525

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 396

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 737

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 358

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 449

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 433