Skip to main content

Toolchain

Vim

sudo add-apt-repository ppa:jonathonf/vim
sudo apt update
sudo apt install vim
vim --version
git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_awesome_vimrc.sh
" my_configs.vim
:set number
:setlocal spell!

set gfn=Operator\ Mono\ Lig,Operator\ Mono\ SSm,Operator\ Mono,Fira\ Code,Monospace

let g:copilot_filetypes = {
\ 'gitcommit': v:true,
\ 'markdown': v:true,
\ 'toml': v:true,
\ 'yaml': v:true
\ }

NeoVim

brew install neovim
winget install Neovim.Neovim
sudo apt install neovim

AstroNvim:

mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
git clone --depth 1 https://github.com/AstroNvim/template ~/.config/nvim
nvim

LazyVim:

mv ~/.config/nvim{,.bak}
git clone https://github.com/LazyVim/starter ~/.config/nvim && nvim

NvChad:

mv ~/.config/nvim{,.bak}
git clone https://github.com/NvChad/starter ~/.config/nvim && nvim
# Run :MasonInstallAll command after lazy.nvim finishes downloading plugins.

Language server

:LspInstall typescript

TreeSitter

:TSInstall html css javascript typescript tsx vue json jsonc yaml bash

Easy Motion

Motion CommandDescription
<leader><leader> wStart of word forwards
<leader><leader> bStart of word backwards
<leader><leader> jStart of line forwards
<leader><leader> kStart of line backwards
<leader><leader> s <char>Search character
<leader><leader> f <char>Find character forwards
<leader><leader> F <char>Find character backwards
<leader><leader> t <char>Til character forwards
<leader><leader> T <char>Til character backwards
<leader><leader> lMatches begin & end of word forwards
<leader><leader> hMatches begin & end of word backwards
<leader><leader> eEnd of word forwards
<leader><leader> geEnd of word backwards
<leader><leader> / <char>... <CR>Search n-character
<leader><leader><leader> bdtTil character
<leader><leader><leader> bdwStart of word
<leader><leader><leader> bdeEnd of word
<leader><leader><leader> bdjkStart of line
<leader><leader><leader> jJumpToAnywhere motion

Color Schemes

  • Built-in fuzzy file search :find.
  • Need config.
  • :AirlineTheme {theme}.
  • :colorscheme {theme}.
set nocompatible
set number

syntax on
filetype plugin indent on

set shiftwidth=4
set softtabstop=4

set spell spelllang=en_us
scriptencoding utf-8

set mouse=a
set mousehide

set ignorecase
set smartcase

" :find filepath
" :tabnew filepath
" :tabp :tabn
" :b partOfFilepath
" :ls
set path+=**
set wildmenu
set wildmode=list:longest,full

" NERDtree like setup for netrw
let g:netrw_banner = 0
let g:netrw_liststyle = 3
let g:netrw_browse_split = 4
let g:netrw_altv = 1
let g:netrw_winsize = 25
" let g:netrw_list_hide=netrw_gitignore#Hide()
" let g:netrw_list_hide.=',\(^\|\s\s\)\zs\.\S\+'
augroup ProjectDrawer
autocmd!
autocmd VimEnter * :Vexplore
augroup END

" ctags setup
command! MakeTags !ctags -R .

" colorschemes config
colorscheme Monokai

" airline config
" set laststatus=2
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'

" CtrlP config
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlP'
let g:ctrlp_working_path_mode = 'ra'
let g:ctrlp_user_command = 'find %s -type f'

Ctags

" ^] jump
" g^] for ambiguous tags
" ^t jump back
command! MakeTags !ctags -R .
命令作用
<C-]>跳转到匹配当前光标所在关键字的第一处标签
g<C-]>跳转至匹配当前光标所在的关键字
:tag {keyword}跳转到匹配 {keyword} 的第一处标签
:tjump {keyword}提示用户从匹配 {keyword} 的多处标签中指定一处进行跳转
:pop<C-t>反向遍历标签历史
:tag正向遍历标签历史
:tnext跳转到下一处匹配的标签
:tprev跳转到上一处匹配的标签
:tfirst跳转到第一处匹配的标签
:tlast跳转到最后一处匹配的标签
:tselect提示用户从标签匹配列表中选择一项进行跳转

Make

QuickFix 命令作用
:cnext跳转到下一项
:cprev跳转到上一项
:cfirst跳转到第一项
:clast跳转到最后一项
:cnfile跳转到下一个文件中的第一项
:cpfile跳转到上一个文件中的最后一项
:cc N跳转到第 n 项
:copen打开 QuickFix 窗口
:cclose关闭 QuickFix 窗口

内置补全

In insert mode:

命令补全类型
<C-n>普通关键字
<C-x><C-n>当前缓冲区关键字
<C-x><C-i>包含文件关键字
<C-x><C-]>tag 关键字
<C-x><C-k>字典查找
<C-x><C-l>整行补全
<C-x><C-f>文件名补全
<C-x><C-o>全能(Omni)补全

可供弹出式菜单使用的命令

按键操作作用
<C-n>使用来自补全列表的下一个匹配项 (next 匹配项)
<C-p>使用来自补全列表的上一个匹配项 (previous 匹配项)
<Down>选择来自补全列表的下一个匹配项
<Up>选择来自补全列表的上一个匹配项
<C-y>确认使用当前选中的匹配项 (yes)
<C-e>还原最早输入的文本(从自动补全中 exit)
<C-h>(与 <BS>)从当前匹配项中删除一个字符
<C-l>从当前匹配项中增加一个字符
{char}中止自动补全并插入字符 {char}

Git

  • Gblame + key o.
  • Glog + [q/]q/[Q/]Q.
  • Gdiff.
  • Gcommit/Gstatus.
  • Gpull/Gpush.