Vim进阶学习

vim的进阶学习分为两部分:自定义配置文件以及插件的使用。

自定义配置文件

在这里我们需要修改.vimrc文件,稍后我会将我的配置文件发在文章结尾,所有的配置都是参考b站的课程:传送门

首先就是

" 代码高亮
syntax on
" 设置行号
set number
" 主题使用 OneDark
colorscheme onedark
" 按 F2 进入粘贴模式
set pastetoggle=<F2>
" 高亮搜索
set hlsearch
" 设置折叠方式
set foldmethod=indent

" 一些方便的映射
let mapleader=','
let g:mapleader=','

" 使用 jj 进入 normal 模式
inoremap jj <Esc>`^
" 使用 leader+w 直接保存
inoremap <leader>w <Esc>:w<cr>
noremap <leader>w :w<cr>

" 切换 buffer
nnoremap <silent> [b :bprevious<CR>
nnoremap <silent> [n :bnext<CR>
" use ctrl+h/j/k/l to switch windows
noremap <C-h> <C-w>h
noremap <C-j> <C-w>j
noremap <C-k> <C-w>k
noremap <C-l> <C-w>l

" Sudo to write
" cnoremap w!! w !sudo tee % >/dev/null 
" json 格式化
com! FormatJson %!python -m json.tool

插件的使用

这里我们使用vim-plug来进行插件管理,具体怎么安装插件大家可以根据视频自学,我这里记录一下基础命令。

1.文件目录树:nerdtree

:NERDTREE  打开文件目录
,g  快速打开
,v  快速跳转到文件在目录树对应位置

2.模糊搜索器:CtrlP

ctrl + P 快速查找文件

3.快速定位插件:easymotion

ss 点击亮起的英文字母即可跳转

4.成对编辑插件:Vim-surround

ys iw "  快速给一个单词添加双引号
cs " '  快速修改双引号为单引号
ds "  快速删除双引号

5.命令行模糊搜索工具:fzf

Files 要搜索的目录路径  
:Ag 要搜索的字符串

6.搜索替换插件:far

:Far 要替换的文本 替换后的文本 要替换的目录 
Fardo 确定替换
例子:Far foo bar **/*.py

7.python-mode

ctrl + ]  快速查看代码定义
ctrl + xo  代码补全
:PymodeLintAuto  自动代码整理

8.浏览代码插件:tagbar

,t  快速打开标签预览

9.代码补全插件:deoplete

ctrl + xo  快速补全并预览

10.格式化插件:Neoformat

:Neoformat + 回车

11.静态检查插件:ale

自动使用

12.自动注释插件:commentary

gc  注释或者取消注释

13.git插件:Fugitive

Gedit,Gdiff,Gcommit,Gblame

vim-plug插件配置:

" 插件设置,这里使用了 vim-plug
 
call plug#begin()

" 开始界面
Plug 'mhinz/vim-startify'
" onedark 主题
Plug 'joshdick/onedark.vim'
" hybrid 主题
Plug 'w0ng/vim-hybrid'
" 状态栏插件
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" 代码缩进线
Plug 'yggdroot/indentline'
" 文件目录树
Plug 'scrooloose/nerdtree'
" 模糊搜索器
Plug 'kien/ctrlp.vim'
" 快速定位
Plug 'easymotion/vim-easymotion'
" 成对编辑 ys/cs/ds 增加/修改/删除
Plug 'tpope/vim-surround'
" 模糊搜索 Ag/Files
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
" 批量替换 :Far foo bar **/*.py  :Fardo
Plug 'brooth/far.vim'
" vim-go
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
" python-mode
Plug 'python-mode/python-mode', { 'for': 'python', 'branch': 'develop' }
" 快速浏览代码
Plug 'majutsushi/tagbar'
" 高亮单词
Plug 'lfv89/vim-interestingwords'
" 代码补全
if has('nvim')
  Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
else
  Plug 'Shougo/deoplete.nvim'
  Plug 'roxma/nvim-yarp'
  Plug 'roxma/vim-hug-neovim-rpc'
endif
Plug 'zchee/deoplete-jedi'
" Plug 'deoplete-plugins/deoplete-go', { 'do': 'make'}
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" 代码格式化
Plug 'sbdchd/neoformat'
" 静态检查
Plug 'w0rp/ale'
" 快速注释 gc
Plug 'tpope/vim-commentary'
" git相关
Plug 'tpope/vim-fugitive'
Plug 'airblade/vim-gitgutter'
Plug 'junegunn/gv.vim'
call plug#end()

let g:lightline = {
  \ 'colorscheme': 'onedark',
  \ }
" NERDTree
nnoremap <leader>v :NERDTreeFind<cr>
nnoremap <leader>g :NERDTreeToggle<cr>
let NERDTreeShowHidden=1
let NERDTreeIgnore = [
      \ '\.git$', '\.hg$','\.svn$','\.stversions$','\.pyc$','\.pyo$','\.swp$',
      \ '\.DS_Store$','\.sass-cache$','\.__pycache__$','\.egg-info$','\.ropeproject$',
      \ ] 
" ctrlp
let g:ctrlp_map = '<c-p>'
" easymotion
nmap ss <Plug>(easymotion-s2)
" vim-go
autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4
" python-mode
let g:pymode_python = 'python3'
let g:pymode_trim_whitespaces = 1
let g:pymode_doc = 1
let g:pymode_doc_bind = 'k'
let g:pymode_rope_goto_definition_bind = "<C-]>"
let g:pymode_lint = 1
let g:pymode_lint_checkers = ['pyflakes', 'pep8', 'mccabe','pylint']
let g:pymode_options_max_line_length = 120
" tagbar
nnoremap <leader>t :TagbarToggle<CR>
" ctrlp,在~/.agignore中添加一行node_modules
set wildignore+=*/tmp/*,*.so,*.swp,*.zip
let g:ctrlp_suatom_ignore = {
  \ 'dir':  '\v[\/]\.(git|hg|svn)$',
  \ 'file': '\v\.(exe|so|dll|swp|pyc|pyo)$',
  \ }
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
if executable('ag')
        set grepprg=ag\ --nogroup\ --nocolor
        let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
else
        let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard','find %s -type f']
endif
" deoplete
set completeopt-=preview
let g:deoplete#enable_at_startup = 1
set updatetime=100
posted @ 2024-02-06 17:30  信2005-2刘海涛  阅读(13)  评论(0编辑  收藏  举报