参考手册
中文参考手册 入门参考
vim模式
- V (大V) 选择当前行
- ctrl+v 进行方块操作
vim编辑技巧
- 插入模式下 ctrl+h 删除上一个字符, ctrl+w删除上一个单词,ctrl+u删除当前行
移动大法 normal模式
- zz 当前行移动到屏幕中间
- H/M/L 分别移动到当前屏幕头、中间、尾
vim快速增删改查
- dw、daw删除单词包括空格,dtw删除前后匹配标记(括号双引号内)的内容
- x 删除单个字符
- r(replace) 替换
- c(change)
caw 带a 修改单词包括空格 - s(substitute) 删除并进入插入模式
* 或 # 进行当前单词的向前和向后搜索
搜索替换
多文件操作
- Buffer: 文件的内容缓冲区
- window: Buffer的可视化分割区域
- Tab:组织window为一个工作区
BUffer
- :ls 查看当前缓冲区
- :e file 编辑文件
- :b[n] 打开第几个缓冲区,
:bpre :bnext :bfirst :blast 切换缓冲区
vim文本对象(Text Object)
次数+命令+文本对象, 命令: c(hange)、d(elete)、v(isual)、y(ank) (v|c|d|y)(i|a)(’{’|’[’|’<’…),表示(选中|改变|删掉|复制)(不包括|包括)定界符以内的)文本。
vim复制粘贴和寄存器
insert模式下的复制粘贴
:set paste 设置粘贴模式 不设置会导致代码缩进错乱 :set nopaste
寄存器
:reg 查看寄存器"[num|name] 使用寄存器"+ 使用系统剪切板的内容
vim 宏(macro)
一系列命令操作的集合
如何使用
- q 开始录制,q 结束录制
- 使用 q{register} 把录制的宏保存到指定寄存器
- 使用 @{register} 使用录制宏
例子: 给url批量加双引号
vim补全大法
给vim换配色
安装插件加速 在 plug#begin() 前添加 let g:plug_url_format=‘https://git::@hub.fastgit.org/%s.git’
- 使用
:colorscheme 显示当前主题,默认是default :colorscheme <ctrl>+d 显示所有可用配色主题- 网上下载配色方案,放到 vim 配置目录下的 colors 目录
~/.vim/colors ,windows系统是 ~/AppData/Local/vim/colors 。如果没有目录创建目录
主题
- vim-hybrid
- vim-colors-solarized
- gruvbox
vim文件目录和搜索插件
文件管理器 nerdtree
- github nerdtree
autocmd vimenter * NERDTree 可以在启动vim的时候打开 nerdtree
快捷键映射
快速搜索插件 ctrlp
文件内容快速定位
- vim-easymotion
nmap ss <Plug>(easymotion-s2) 一个快捷键映射搜索文件内容
编辑成双成对 vim-surround
https://github.com/tpope/vim-surround
- ys
'"([{}]) 包裹成对添加 - yss 同上,范围是一行
- cs 修改 eg:
cs"' 双引号改为单引号 - ds 删除 eg:
cs" 删除双引号
强大的模糊搜索与替换插件
fzf.vim
需要先安装 fzf https://github.com/junegunn/fzf 根据 README 安装 choco install fzf window系统
vim-go插件
neovim
vim 的另一分支版本,更现代化的vim
课程总结
vim 可以用一生的编辑器
《practical vim》 《笨方法学vim》
课程结业
效果截图
.vimrc 配置文件
" 防止中文乱码
set encoding=utf-8
" 不与vi兼容
set nocompatible
if !has('nvim')
" 设置 leader 键
let mapleader=','
" 语法高亮
" syntax on
set number
" 缩进2个空格单位
set shiftwidth=2
set background=dark
colorscheme hybird
set t_Co=256
" 自动缩进
set autoindent
set tabstop=2
set expandtab " 不同编辑器tab缩进会存在不一致,将tab转为空格
set softtabstop=2 " tab转为2个空格
" gui_vim 才生效
" set guifont=FantasqueSansMono\ Nerd\ Font\ Mon:h24
" set relativenumber " 显示当前行号,其他行为相对该行的行号
set cursorline
set hlsearch " 高亮最近的匹配搜索
" 自定义按键映射
" 使用jj 进入normal 模式
inoremap jj <Esc>`^
" 显示文件在目录中的位置
nnoremap <leader>v :NERDTreeFind<cr>
" 显隐文件目录
nnoremap <leader>g :NERDTreeToggle<cr>
" ctrlp插件配置 ===
" let g:ctrlp_working_path_mode = 'ra'
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlP'
" 设置搜索的目录是当前打开的目录
let g:ctrlp_cmd='CtrlP :pwd'
" let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d' " Windows
" ctrlp ===
" easymotion 配置
nmap ss <Plug>(easymotion-s2)
" Ag 命令配置
let g:ackprg = 'ag --nogroup --nocolor --column'
let g:plug_url_format='https://git::@hub.fastgit.org/%s.git'
call plug#begin('~/.vim/plugged')
" 首页插件
Plug 'mhinz/vim-startify'
" 底部状态栏插件
Plug 'vim-airline/vim-airline'
" 文件管理器插件
Plug 'scrooloose/nerdtree'
" 文件快速搜索插件
Plug 'ctrlpvim/ctrlp.vim'
" 文件内容快速定位插件
Plug 'easymotion/vim-easymotion'
" 标记成对修改插件
Plug 'tpope/vim-surround'
" 命令行快速搜索文件插件
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
" golang插件,代码补全不生效,奇怪
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
" 代码补全插件,还没研究怎么用
Plug 'valloric/youcompleteme'
call plug#end()
endif
|