TERMINAL
Sử dụng Fish
apt update
apt install fish -y
fish
Gõ là nó hiện gợi ý mờ; bấm → nhận.
Muốn mặc định khi SSH vào:
chsh -s /usr/bin/fish
FZF - search history kiểu menu chọn
Nếu bạn thấy Ctrl+R khó tìm vì nó chỉ nhảy từng cái, thì fzf biến nó thành fuzzy search có danh sách: gõ vài chữ → hiện nhiều kết quả → dùng ↑↓ chọn → Enter chạy (hoặc đưa vào dòng lệnh).
Cài:
apt update
apt install fzf -y
Bật keybinding cho Bash, tìm key-bindings.bash.gz hoặc completion.bash.gz
ls -l /usr/share/doc/fzf/examples/
Nếu bạn thấy key-bindings.bash.gz hoặc completion.bash.gz thì thêm vào ~/.bashrc như này:
cat >> ~/.bashrc <<'EOF'
# fzf (key bindings + completion)
if [ -r /usr/share/doc/fzf/examples/key-bindings.bash.gz ]; then
source <(zcat /usr/share/doc/fzf/examples/key-bindings.bash.gz)
elif [ -r /usr/share/doc/fzf/examples/key-bindings.bash ]; then
source /usr/share/doc/fzf/examples/key-bindings.bash
fi
if [ -r /usr/share/doc/fzf/examples/completion.bash.gz ]; then
source <(zcat /usr/share/doc/fzf/examples/completion.bash.gz)
elif [ -r /usr/share/doc/fzf/examples/completion.bash ]; then
source /usr/share/doc/fzf/examples/completion.bash
fi
EOF
source ~/.bashrc
Sau đó bấm Ctrl+R sẽ ra menu search lịch sử đã đời hơn hẳn.
Search theo prefix - cực nhanh (không cần plugin): ↑ / ↓ theo chữ bạn đang gõ
Bạn gõ vài chữ đầu, rồi nhấn ↑ nó chỉ lướt những lệnh trong history bắt đầu bằng prefix đó.
Bật trong Bash bằng cách edit ~/.inputrc và reload bind -f ~/.inputrc
cat >> ~/.inputrc <<'EOF'
"\e[A": history-search-backward
"\e[B": history-search-forward
EOF
bind -f ~/.inputrc
Ví dụ gõ git ch rồi nhấn ↑ sẽ chạy qua các lệnh git ch... đã từng dùng.
VI
For Ubuntu
cat > ~/.vimrc << 'OEF'
set hlsearch
set incsearch
set ignorecase
set smartcase
set expandtab
set shiftwidth=2
set softtabstop=2
vnoremap <S-Up> :m '<-2<CR>gv=gv
vnoremap <S-Down> :m '>+1<CR>gv=gv
nnoremap <C-Right> >>
nnoremap <C-Left> <<
vnoremap <C-Right> >gv
vnoremap <C-Left> <gv
set nofixeol
set nocompatible
set paste
nnoremap D :%d<Bar>startinsert<CR>
nnoremap Q :q!<CR>
function! ToggleNumbers()
if &number
set nonumber norelativenumber
else
set number relativenumber
endif
endfunction
nnoremap X :call ToggleNumbers()<CR>
OEF