Vim保姆级教程 宏录制 寄存器 映射 插件

命令行快捷键

在这里插入图片描述

ctrl+a 移动到行首
ctrl+e 移动到行尾
ctrl+b 往前移动
ctrl+f 往后移动
ctrl+h 删除上一个字符
ctrl+w 删除上一个单词
ctrl+u 删除当前行
ctrl+pprev上一个命令
ctrl+nnext下一个命令
vim a.txt b.txt -O同时打开两个文件
shift+z+z保存退出

Normal模式

在这里插入图片描述

/word 查找word关键字
ctrl+c/ctrl+[ 替代ESC,快速切换到Normal模式
zt将当前行移到最顶端
zz将当前行移到中间

移动大法

在这里插入图片描述

字符移动
hjkl ←↓↑→「字符移动」

单词移动
w/W 移到下个单词开头「单词移动」
e/E 移到下个单词结尾「单词移动」
b/B 移到上个单词开头「单词移动」

行间搜索移动
f{char}/F{char}移到char字符上; 下一个, 上一个「行间搜索移动」
t{char}/T{char}移到char的前一个字符; 下一个, 上一个「行间搜索移动」

水平移动
0移到行首「水平移动」
$移到行尾「水平移动」

页面移动
gg移到文件开始 G移到文件结束 ctrl+o快速返回「页面移动」
H/M/L移到屏幕所显示文件的头部Head、中部Middle、尾部Lower「页面移动」
ctrl+u/ctrl+f上下翻页 「页面移动」
zz将当前行显示在屏幕中间「页面移动」

快速删除

在这里插入图片描述

x删除字符  {4}x删除4个字符
dw删除单词
dd删除一行  {2}dd删除2行
dt{;}delete to ... 删除「当前位置」到「;」的内容
d0删除「当前位置」到「行首」的内容
d$删除「当前位置」到「行尾」的内容
uundo 撤回
ctrl+r前进

快速修改

在这里插入图片描述

r = replace, c = change, s = substitute
r{char}快速替换字符
R{char}快速替换字符并可以连续替换
s/4s删除当前字符/删除4个字符-->编辑模式
S删除当前行-->编辑模式
cwchange word 删除当前单词-->编辑模式
C删除「当前字符」到「行尾」的内容-->编辑模式
ct{;}change to ... 删除「当前字符」到「;」的内容-->编辑模式

快速查询

在这里插入图片描述

/{word}向下搜索,n上一个N下一个
?{word}向下搜索,n上一个N下一个
* | #对当前单词「向上或向下」匹配

文本对象

在这里插入图片描述

[number]<command>[text object]
number:次数
command:命令,d[delete] c[change] y[yank]
text object:文本对象,w[单词]  s[句子]  p[段落]
2dw删除后面的2个单词
2cw修改后面的2个单词
di{"}删除"里面的内容
ci{"}修改"里面的内容

复制粘贴

在这里插入图片描述

dd->jk->p删除一行->移动->粘贴
dw->hjkl->p删除单词->移动->粘贴
yy->hjkl->p复制一行->移动->粘贴
yiw->hjkl->p复制单词->移动->粘贴

Insert模式

在这里插入图片描述

i = insert, a = append, o = open a line below
i在光标的前面插入    I在当前行首插入
a在光标的后面插入    A在当前行尾插入
o在光标的下一行插入  O在光标的上一行插入
ctrl+h 删除上一个字符
ctrl+w 删除上一个单词
ctrl+u 删除当前行
gi 快速回到上次编辑的地方

代码补全

ctrl+n/ctrl+p代码补全
ctrl+x+f文件名补全
:r! echo %:p插入当前文件全路径

Command模式

在这里插入图片描述

:进入命令模式
:wq 保存退出
:set nu 设置行号
:vs 横分屏  :sp 竖分屏 :q 退出
:syntax on 语法高亮
:help {c}查找关于c的命令用法
:set hls搜索结果高亮
:set incsearch增量搜索,边搜索边高亮
:e!重新加载并不保存当前文件
:source ~/.vimrc刷新vimrc配置
:qa退出所有窗口

替换命令

在这里插入图片描述

:[range] s/{pattern}/{string}/[flags]
range:10,20表示10-20行,%表示全部
pattern:搜索的文本
string:替换的文本
flags:g全局,c替换前需确认,n查询匹配的次数
:% s/java/kotlin/g  全局替换 java --> kotlin
:% s/java//n查询java全局有多少个匹配
:% s/\<java\>/kotlin/g精确匹配替换,用<>,而不是把包含的单词也替换了

多文件操作

在这里插入图片描述

缓冲区Buffer
:ls列出所有缓冲区
:b {n}跳转到第n个缓冲区
:b {buffer_name}跳转指定的缓冲区
:e {b.txt}打开指定的buffer
窗口Window
ctrl+w+v左右分割
:vs左右分割
ctrl+w+s上下分割
:sp上下分割
:vs/sp {a.txt}以「左右|上下」分割打开某个文件
:q退出窗口
ctrl+w+w窗口间循环切换
ctrl+w+h/j/k/l窗口←↓↑→切换
ctrl+w+H/J/K/L移动「当前窗口」到「←↓↑→」
标签页Tab
:tabnew {a.java}新建标签页并打开a.java
gt标签页之间切换

Visual模式

在这里插入图片描述

v 进入Visual模式
V 选择一行
ctrl+v 选择方块
y 复制
p 粘贴
V->jk->:normal I#多行注释
V->jk->:normal x取消多行注释
v->hjkl->u/U大小写转换

快速删除

d 删除
v->hjkl->d/xhjkl选择块 --> 删除块「批量删除」
V->jk->d/x选择一行 --> jk选择哪几行 --> 删除行「批量删除」

文本对象

v->iw选中单词 inner word
v->aw选中单词+空格 around word
v->i{"}选中"里面的内容

寄存器

在这里插入图片描述

Vim操作的是寄存器而不是系统剪贴板
默认使用的是无名寄存器
"0复制专用寄存器
"+系统剪贴板,有时cmd+v复制代码格式错乱的情况下,使用"+就不会格式错乱

Normal模式

"{a}->yy复制一行到a寄存器中
"{b}->dd删除一行并复制到b寄存器中
"{a}->p粘贴a寄存器的内容

命令模式

:reg {a}查看a寄存器的内容
:set clipboard=unnamed可以直接「复制粘贴」到系统剪贴板,而不用"+再使用「复制粘贴」
编辑模式
ctrl+r->+粘贴系统剪贴板内容,等同于cmd+v

宏macro

在这里插入图片描述

在Normal模式下录制
q录制或停止录制
q{a} -> {i} -> 编辑 -> esc -> q -> V -> jk/G -> :normal @a
1、录制
q{a} -> {i} -> 编辑 -> esc -> q
①录制命令到a寄存器->②Insert模式->③编辑一行->④Normal模式->⑤停止录制
2、回放
V -> jk/G -> :normal @a
①Visual模式->②选中需要修改的行->③回放a寄存器的内容

不使用宏完成行首和行尾加"
V -> G -> :normal I" -> ctrl+p(:normal A")
选择一行->全选->行首加"->执行上个命令并修改(行尾加")

映射

在这里插入图片描述

nmap/vmap/imap分别对Normal/Visual/Insert模式下分别有效
nnoremap:Normal模式的非递归映射
vnoremap:Visual模式的非递归映射
inoremap:Insert模式的非递归映射
:map 快捷键 命令
:map - x按-就会删除字符
:map <space> viw按空格选中单词
:map <c-d> dd按ctrl+d删除一行
:imap <c-d> <Esc>ddiInsert模式下按ctrl+d删除一行
:vmap \ UVisual模式下选中的文本u/U转换大小写
let mapleader=','定义leader键,
inoremap jj <Esc>\`^Insert模式下按jj切换到Normal模式
inoremap <leader>w <Esc>:w<cr>Insert模式下按,w保存文件
noremap <leader>w :w<cr>Normal模式下按,w保存文件

插件

推荐vim-plug插件
.vimrc中配置
call plug#begin('~/.vim/plugged')
Plug 'mhinz/vim-startify'
call plug#end()
PlugInstall 插件名安装插件

插件推荐

1、GitHub搜索
2、https://vimawesome.com
Plug 'mhinz/vim-startify'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'yggdroot/indentline'
Plug 'wong/vim-hybrid'
Plug 'scrooloose/nerdtree'
Plug 'ctrlpvim/ctrlp.vim'
Plug 'easymotion/vim-easymotion'
Plug 'tpope/vim-surround'
Plug 'junegunn/fzf'
Plug 'junegunn/fzf.vim'
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值