vim从入门到进阶学习笔记

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

参考手册

中文参考手册
入门参考

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) cawa修改单词包括空格
  • 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补全大法

buquan

给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 ag window系统

  • 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值