Vim高级技巧
vsvim¶
# 文件间跳转
nmap <C-O> :vsc View.NavigateBackward<CR>
nmap <C-I> :vsc View.NavigateForward<CR>
# 跳转到定义
nmap <C-]> :vsc Edit.GoToDefinition<CR>
# 键盘映射
imap kj <Esc>
vmap kj <Esc>
neovim¶
配置文件名为init.vim
,路径在C:\users\xxx\AppData\Local\nvim
中。
vim-plug
配置文件名为plug.vim
,路径在C:\users\xxx\AppData\Local\nvim\autoload
中。
" 插件
call plug#begin()
Plug 'preservim/nerdtree' "目录树
Plug 'vim-airline/vim-airline' "主题相关
Plug 'vim-airline/vim-airline-themes' "主题相关
Plug 'preservim/nerdcommenter' "批量注释
Plug 'mhinz/vim-startify' "最近使用文件
Plug 'tpope/vim-fugitive' "git命令相关
Plug 'tpope/vim-surround' "单词周围符号对
"Plug 'scrooloose/syntastic' "语法检查
Plug 'rust-lang/rust.vim' "rust支持
Plug 'majutsushi/tagbar' "标签栏支持
"Plug 'w0rp/ale' "异步语法检查
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
Plug 'jiangmiao/auto-pairs'
" Plug 'Yggdroot/LeaderF', { 'do': './install.sh' } "模糊查找
Plug 'ludovicchabant/vim-gutentags' "tag相关
Plug 'neoclide/coc.nvim', {'branch': 'master', 'do': 'yarn install --frozen-lockfile'}
call plug#end()
" 前缀键<leader>
let g:mapleader=","
" 编码
set encoding=utf-8
set termencoding=utf-8
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
" 行号
set number
set relativenumber
" 缩进
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
" 语法高亮
syntax on
set hlsearch
" 取消高亮
noremap <leader><leader> :nohlsearch<CR>
" 文件类型识别
filetype on
filetype plugin on
filetype plugin indent on
" 搜索
set ignorecase
set smartcase
noremap n nzz " 切换搜索结果,每次在正中间
noremap N Nzz
" 光标恢复
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
" ESC映射
inoremap <C-j> <Esc>
vnoremap <C-j> <Esc>
" 目录树
map <C-n> :NERDTreeToggle<CR>
" 注释
let g:NERDCreateDefaultMappings = 1
let g:NERDSpaceDelims = 1
let g:NERDCompactSexyComs = 1
let g:NERDDefaultAlign = 'left'
let g:NERDAltDelims_java = 1
let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } }
let g:NERDCommentEmptyLines = 1
let g:NERDTrimTrailingWhitespace = 1
let g:NERDToggleCheckAllLines = 1
map <C-\> <Plug>NERDCommenterToggle
" 主题相关
" let g:airline_theme='angr'
let g:airline_theme='deus'
let g:airline_powerline_fonts = 1
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
let g:airline#extensions#tabline#formatter = 'unique_tail'
nmap <C-h> <Plug>AirlineSelectPrevTab
nmap <C-l> <Plug>AirlineSelectNextTab
" 标签栏
nmap <F8> :TagbarToggle<CR>
" 异步语法检查
" let g:airline#extensions#ale#enabled = 1
" 模糊查找
let g:Lf_ShortcutF = '<c-p>'
" gutentags搜索工程目录的标志,碰到这些文件/目录名就停止向上一级目录递归 "
let g:gutentags_project_root = ['.root', '.svn', '.git', '.project']
" 所生成的数据文件的名称 "
let g:gutentags_ctags_tagfile = '.tags'
" 将自动生成的 tags 文件全部放入 ~/.cache/tags 目录中,避免污染工程目录 "
let s:vim_tags = expand('~/.cache/tags')
let g:gutentags_cache_dir = s:vim_tags
" 检测 ~/.cache/tags 不存在就新建 "
if !isdirectory(s:vim_tags)
silent! call mkdir(s:vim_tags, 'p')
endif
" 配置 ctags 的参数 "
let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extra=+q']
let g:gutentags_ctags_extra_args += ['--c++-kinds=+pxI']
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
" 自动补全
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
set clipboard=unnamedplus
vim插件命令¶
Command | Description |
---|---|
PlugInstall [name ...] [#threads] |
Install plugins |
PlugUpdate [name ...] [#threads] |
Install or update plugins |
PlugClean[!] |
Remove unlisted plugins (bang version will clean without prompt) |
PlugUpgrade |
Upgrade vim-plug itself |
PlugStatus |
Check the status of plugins |
PlugDiff |
Examine changes from the previous update and the pending changes |
PlugSnapshot[!] [output path] |
Generate script for restoring the current snapshot of the plugins |
vscode¶
本文总阅读量 次