首页 > 其他分享 >Vim进阶学习

Vim进阶学习

时间:2024-02-06 17:33:35浏览次数:31  
标签:Plug 插件 进阶 python pymode vim 学习 let 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

标签:Plug,插件,进阶,python,pymode,vim,学习,let,Vim
From: https://www.cnblogs.com/lht020321/p/18010091

相关文章

  • Eralng 学习笔记第九天, 随手记-复习
    1,Erlang的模式匹配和java的多态和方法重载Erlang中的模式匹配和Java中的某些编程方式有相似之处,但它们通常更接近于Java中的多态(polymorphism)和方法重载(methodoverloading)这样的概念。多态(Polymorphism):在Erlang中,函数的模式匹配允许根据不同的参数模式调用不同的函......
  • nodejs学习计划--(三)http协议和IP介绍
    一、HTPP协议1、概念HTTP(hypertexttransportprotocol)协议;中文叫超文本传输协议是一种基于TCP/IP的应用层通信协议这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。协议中主要规定了两个方面的内容客户端:用来向服务器发送数据,可以被称之为请求报文服务端......
  • 软件测试学习笔记丨App端测试—adb命令启动页面
    一、包和Activity(活动页)的概念package包:是Android应用的唯一标志Activity活动页:Android应用页面,一个页面就是一个Activity二、获取当前的页面名方法一:先启动应用执行adb命令:adbshell"dumpsyswindow|grepmCurrentFocus"三、获取启动页面的activity先执行adb命令:win:a......
  • 软件测试学习笔记丨App端测试——adb命令介绍
    一、adb简介AndroidDebugBridge(Android调试桥)简称adbAndroidsdk中提供的用于管理模拟器或真机状态的工具命令行工具二、adb操作手机设备打开应用adbshellamstart-ncom.tencent.wework/.launch.LaunchSplashActivity传输文件点击,输入,滑动等硬件操作返回,回到首页性能指......
  • 软件测试学习笔记丨基本性能监控系统使用
    基本性能监控系统组成Collectd+InfluxdDB+GrafanaCollectd是一个守护(daemon)进程,用来定期收集系统和应用程序的性能指标,同时提供了以不同的方式来存储这些指标值的机制;InfluxDB开源的、高性能的时序型数据库Grafana一个非常酷的数据可视化平台,常常应用于显示监控数据,支持多......
  • 软件测试学习笔记丨App端测试——adb日志操作
    一、日志的级别V:明细verbose(最低优先级,会输出所有日志)D:调试debugI:信息infoW:警告warnE:错误errorF:严重错误fatalS:无记载silent(最高优先级,不会输出任何日志)二、adb命令查看日志adblogcat三、查看日志常用的参数adblogcat:打印默认日志数据adblogcat-vtime:打印时间adblogcat-vc......
  • <学习笔记> DP套DP
    游园会考虑直接设\(F(i,j)\)表示对于兑奖串前\(i\)位匹配奖章串的\(\mathrm{LCS}\)位\(j\)的方案数,但是发现没有办法直接转移,因为对于匹配到奖章串不同位置新加一个字符情况是不一样的。考虑\(\mathrm{LCS}\)的转移,设\(dp(i,j)\)表示兑奖串前\(i\)位与奖章串前\(......
  • <学习笔记> 笛卡尔树
    笛卡尔树是一种二叉树,每一个节点由键值二元组\((k,w)\)构成,\(k\)满足二叉搜索树的性质,\(w\)满足堆的性质。构建我们可以用一个栈进行构建,假如我们想要求\(k\)满足二叉搜索树的性质,那么我们首先需要按\(k\)从小到大排序,然后一个一个插入;假如我们想要\(w\)满足小根......
  • MySQL-进阶
    一、MySQL体系结构1.连接层:一些客户端和连接服务,完成连接处理、授权认证及相关操作2.服务层:完成大多数核心服务的功能,比如SQL的分析和优化3.引擎层:负责MySQL中数据的存储和提取4.存储层:数据存储层,将数据存储在文件系统上,并完成与存储引擎的交互二、存储引擎(MySQL的核心)1.定......
  • (python)代码学习||2024.2.4||题目是codewars的【 All Balanced Parentheses】
    题目链接:https://www.codewars.com/kata/5426d7a2c2c7784365000783/pythondefbalanced_parens(n):'''Toconstructallthepossiblestringswithnpairsofbalancedparenthesesthisfunctionmakesuseofastackofitemswiththefoll......