文章目录
参考手册
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)(’{’|’[’|’<’…),表示(选中|改变|删掉|复制)(不包括|包括)定界符以内的)文本。
-
iw 插入单词
-
viw 选择模式插入单词
-
vaw around word 选中当前单词和单词之后的空格
-
vis/vas/vip/vap
-
vi(/)/</>/{/}/"/"/’/’
-
va(/)/</>/{/}/"/"/’/’
-
ciw 删除单词并插入
-
ci{ 删除{内容
-
ya[
-
di" 删除双引号包裹的内容
vim复制粘贴和寄存器
- y(yank) 和 p(put)
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系统
-
使用ag命令需要安装
https://github.com/ggreer/the_silver_searcher
choco install agwindow系统 -
far.vim 替换插件 批量替换文件
vim-go插件
- 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

本文档详述了Vim编辑器的各个模式,如Normal、Insert和Visual,提供快速增删改查、文本对象操作、宏录制、多文件操作、配色方案和插件应用等实用技巧。通过vim-surround和fzf等插件,实现模糊搜索与替换,适合编程与文本编辑爱好者。
304

被折叠的 条评论
为什么被折叠?



