+5

Tạo môi trường phát triển phần mềm xung quanh Vim

Mở đầu

Trong bài trước, mình đã giới thiệu cho các bạn những thao tác cơ bản với Vim, với hi vọng rằng các bạn sẽ có chút hứng thú với cái đồ chơi nay. Và hôm nay mình sẽ bắt đầu xây dựng môi trường xung quanh để tạo hứng thú hơn trong việc thao tác với Vim nói riêng và command line unix nói chung

Font chữ

Font chữ tương đối quan trọng, với mình thì mình dùng Fira Code trong khoảng 1 năm gần đây và rất ưng với nó. Còn tùy khẩu vị mỗi người mà các bạn có thể tự chọn cho mình font vừa ý. Ngoài ra đối với Terminal thì cần chú ý chọn font mono, đặc biệt là tiếp theo đây mình cần nerd font. Thế nên mình recommend các bạn trang web này để tìm font phù hợp với bản thân nhất

https://www.nerdfonts.com/font-downloads

Terminal

Là một web developer, mình thường dành nhiều thời gian gõ gõ các câu lệnh. Vì thế, lựa chọn phần mềm hợp lý cũng tương đối quan trọng. Tiêu chí của mình là, giao diện đẹp, hỗ trợ font ligatures, đổi được line height cho chữ dễ nhìn, cross platform vì mình dùng cả windows-wsl và ubuntu. Ở thời điểm hiện tại thì có rất nhiều lựa chọn cho các bạn, có thể kể đến như iTerm2 dành riêng cho macOS, Windows Terminal dành riêng cho Windows, Kitty dành cho các hệ máy Unix, Alacritty cross-platform khá được cộng đồng đánh giá cao. Bản thân mình đang dùng WezTerm. Và trong series này, mình sẽ cài riêng HyperJS để demo cho các bạn.

Nói thêm thì HyperJS, là một terminal được xây dựng trên Electron - NodeJS. Lý do mình chọn nó thì do nó dễ dàng config khi file config của nó là 1 file js export ra json, khá dễ chỉnh sửa, hỗ trợ connect tới WSL2 (do mình tải bản ubuntu22.04 chỉ hỗ trợ wsl2). Các bạn có thể tìm hiểu kỹ hơn về từng config của từng loại terminal trong documentation tương ứng.

image.png

Đây là terminal của mình với font FiraMono NF, lineHeight 2, letterSpacing 1.5, plugins hyper-one-dark (theme), hyperline (cái dòng system status phía dưới)

Shell

Shell là phần giao diện mềm, giúp biên dịch cái chúng ta gõ cho kernel xử lý được và giao lại kết quả. Shell mặc định của ubuntu là bash. Và mình không thích dùng bash cho lắm. Mình suggest sử dụng zsh như là một sự lựa chọn thay thế. Ngoài ra nên tìm kiếm sử dụng 1 layer phía trên zsh với giao diện thân thiện hơn và cung cấp định nghĩa sẵn các alias tiện lợi. Các bạn có thể tham khảo Oh my zsh cùng các theme xịn xò của nó, ví dụ như Power Level 10k.

Mình thì muốn mì ăn liền nên sẽ cài đặt ZimFW có sẵn highlight và auto suggestion đi kèm. Dưới đây là các câu lệnh để setup Shell, các bạn có thể tham khảo cho hệ điều hành tương ứng của bản thân

sudo apt update && sudo apt install zsh -y
zsh

Trong lần khởi chạy đầu tiên, Zsh sẽ đưa một số câu hỏi để mình config shell theo ý muốn. Mình sẽ chọn 0 để nó tạo ra 1 file .zshrc rỗng.

curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh

Các bạn để ý nếu nó hỏi password để đổi shell mặc định từ Bash thành Zsh thì hãy nhập vào nhé, lỡ chẳng may ấn nhầm skip thì có thể dùng câu lệnh dưới đây để đổi

chsh -s $(which zsh)

Sau đó tắt terminal đi bật lại. Đôi khi mình xài ubuntu thì phải restart hẳn lại luôn thì lần mở terminal kế mới nhận default shell zsh

image.png

Zoxide

Đây là một package siêu nhỏ, nhưng mình vẫn muốn dành cho nó một vị trí trong series của mình giới thiệu về nó. Các bạn có thể tìm thấy cách cài đặt (cực kỳ đơn giản) của nó tại đây https://github.com/ajeetdsouza/zoxide. Do mình dùng Ubuntu và shell Zsh nên mình sẽ install bằng câu lệnh

curl -sS https://webinstall.dev/zoxide | zsh

Mở .zshrc ra và thêm khai báo như nó yêu cầu

vim ~/.zshrc

Bạn nào chưa nhớ thì mở file xong gõ GO để nó xuống dòng dưới cùng, thêm dòng mới và vào Insert Mode, khi đó có thể paste hoặc gõ lại tùy các bạn nhé. Sau đó ấn Esc để về Normal Mode, rồi gõ :wq để lưu và thoát. Sau đó chúng ta cần khai báo path như lúc cài đặt nó có ghi và nạp lại zshrc

source ~/.zshrc

Về cơ bản, tất cả những gì các bạn cần làm là dùng z thay cho cd mặc định của shell. Zoxide ghi nhớ đường dẫn. Những lần sau đó bạn chỉ việc viết một đoạn có trong path tới vị trí bạn cần cd tới, là nó sẽ tự tìm kiếm kết quả path liên quan, có tần suất dùng nhiều nhất cho bạn.

zoxide.gif

Tổng kết

Vì mình thường xài Vim trực tiếp trên Terminal nên với bài viết này, mình hi vọng đã cho các bạn thấy môi trường mà mình sẽ dùng để thao tác với Vim nói riêng và CLI nói chung. Hẹn gặp lại các bạn ở những bài kế tiếp!


All rights reserved

Bình luận

Đăng nhập để bình luận
Avatar
@bigkizd
thg 5 25, 2022 4:45 CH

I really appreciate your effort in this article. I usually use nvim(with lua config)+tmux+zsh(many plugins of oh-my-zsh) as the main code editor. With any vim article, i hope that the author should have a dotfiles repository to share with everyone to know what plugins you use

Avatar
@l3lackheart
thg 5 26, 2022 1:59 SA

Thanks 🤩🤩 I did share the dotfiles, in another article of the series. You can check my dotfiles right here https://github.com/l3aro/dotfiles

Avatar
@thevan96
thg 7 5, 2022 11:21 SA

Bên mình thì dùng những thằng này

  • HyperJs => Alacritty
  • zsh + oh-my-zsh mặc định
  • Zoxide/z => fzf
  • Font chữ: Code New Roman

Phần fzf mặc định sau khi cài là search theo file, mình chỉnh cấu hình trong .zshenv/.zshrc, thì có thể search và cd theo folder, tiện hơn z.

# FZF
export FZF_DEFAULT_COMMAND="fdfind --type f --type d -H \
  --exclude .git \
  --exclude .idea \
  --exclude .vscode \
  --exclude node_modules \
  --exclude vendor \
  --exclude composer \
  --exclude gems \
    "
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
Avatar
@l3lackheart
thg 7 5, 2022 12:04 CH

Tuyệt! Mình dùng Hyperjs vì dễ cài đặt và tùy chỉnh (ấn ctrl + , là nó mở ra file ghi rõ có thể config những gì luôn), giúp mấy bạn mới dễ tiếp cận hơn. Nhưng phải công nhận Alacritty rất xịn xò và mình cũng đã mention nó trong bài viết. tương tự với Zimfw, 1 dòng lệnh là có hết các thứ, trong khi Oh-my-zsh phải config thêm plugin, theme. Về font thì mình thấy Code New Roman mình ko thấy support ligatures. Bạn có thể tham khảo font này mình đang dùng, khá đẹp, support ligature và unicode https://github.com/mishamyrt/Lilex

Avatar
@thevan96
thg 7 5, 2022 2:18 CH

Phần zsh bên oh-my-zsh về cơ bản support đủ tốt rồi, nếu cần thêm tính năng thì search tìm kiếm plugin tương ứng rồi bỏ vào thôi. Mấy phần config alias thì tách ra bỏ bên .zshenv.

# .zshrc
# Config zsh
ZSH_THEME="minimal"
DISABLE_AUTO_TITLE="true"

# Plugins
plugins=(vi-mode tmux)
VI_MODE_RESET_PROMPT_ON_MODE_CHANGE=true

# Load zsh
source $ZSH/oh-my-zsh.sh

# Load fzf
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

# Load asdf cli manager
. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash

Còn về font thì cần to, rõ theo mình là đủ. Có ligatures không ảnh hưởng mấy, mà alacritty không support ligatures nên có lẽ dùng kitty/ WezTerm thì hợp lý hơn.

Avatar
@l3lackheart
thg 7 6, 2022 7:44 SA

@thevan96 Yup! Mình thường hay dùng WezTerm, nhanh mượt, config vất vả hơn chút bù lại render ổn hơn HyperJS

Avatar
+5
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí