视频教程传送门:https://www.imooc.com/learn/1049
Vim介绍
vim是一个unix以及类unix文本编辑器。
特点:功能强大、高端可定制。
vim与vi的区别:vim = vi +IMproved
- 多级撤销
- 语法加亮
- 自动补全
- 支持多种插件
- 通过网络协议(HTTP/SSH)编辑文件
- 多文件编辑
- vim可以编辑压缩格式文件(gzip、zip等)
vim配置文件-vimrc
vimrc 概述: vim run command,分为 系统级vimrc
与 用户级vimrc
。
查看vimrc版本 :version
注释方式: “
设置显示行号 :set number
取消显示行号 :set nonumber
设置光标的位置信息 :set ruler
取消光标的位置信息 :set noruler
查找匹配高亮显示 :set hlsearch
边搜素边匹配高亮显示 :set incsearch
查找不区分大小写 :set ignorecase
跟随上行缩进方式 :set autoindent
花括号缩进 :set smartindent
设置背景颜色 :set bg=light
设置快捷键 :map
例: map <F3> i<ul><CR><Space><Space><li><li><CR><Esc>I</ul><Esc>kcit
map <F4> <Esc>i<li></li><Esc>cit
let mapleader=","
map <leader>w :w!<cr>
按F3后,结果输出:
<ul>
<li></li>
<ul>
按F4后,结果输出:
<li></li>
按,w,文件被保存。
vim 的常用的四种模式
查看vim模式的命令:
:h vim-modes-intro
vim基础使用
1.移动、跳转与缩进
光标移动
h | 左移 |
---|---|
l | 右移 |
j | 下移 |
l | 上移 |
^/0 | 移动到行首 |
$ | 移动到行尾 |
单词/字符串移动
w/W | 正向移动到下一个单词开头 |
---|---|
b /B | 反向移动到下一个单词开头 |
e/E | 正向移动到下一个单词结尾 |
ge | 反向移动到下一个单词结尾 |
跳转
2.删除、复制与粘贴
vim 字符块存放在寄存器中。:reg
查看所有寄存器内容。
类型 | 含义 | 表示方式 | 举例 | 特点 |
---|---|---|---|---|
无名寄存器 | 默认寄存器 | “” | “” p=p | 会被最后一条覆盖 |
数字寄存器 | “+{1-9} 缓存最近10 次操作 | ”0 | “0p | 0用于复制专用,1-9用于最近9次行删除或修改的记录 |
有名寄存器 | 26个英文字母命名有名寄存器 | “[a-z]/[A-Z] | “aaa | "A 会通过^J追加到 a寄存器中 |
黑洞寄存器 | 有去无回 | “_ | “_dw | 只想删除而不想覆盖无名寄存器 |
基本操作
按键操作 | 定义 |
---|---|
d | 剪切 |
y | 复制 |
p/P | 粘贴光标后/前 |
u | 撤销 |
ctr+r | 恢复 |
yw | 复制单词 |
y2w | 正向复制两个单词 |
yy | 复制整行 |
调换字符
按键操作 | 定义 |
---|---|
F + 【space】+ x | 剪切空格 |
x | 删除光标下的字符 |
组合删除
按键操作 | 定义 |
---|---|
dw | 删除一个单词 |
d$/D | 删除光标到行尾的字符 |
d^ | 删除光标到行首的字符 |
{n}dd | 删除一/n整行 |
5dw | 正向删除5个单词 |
3w | 正向移动单词三次 |
D3w | 正向删除3w动作 |
2d3w | 正向删除3w动作两次 |
3.修改、查找与替换
插入模式
按键操作 | 定义 |
---|---|
I/ A | 插入模式并移动到行首/尾 |
i/ a | 光标后/前插入 |
[n]O/ o | 行前/后插入n次 |
[n]+i | 插入模式重复n次 |
大小写转换
按键操作 | 定义 |
---|---|
~ | 单个字符大小写转换 |
g~w(word) | 单词大小写转换 |
g~$/ g~~ | 整行大小写转换 |
gU/uw | 单词大小写转换 |
查找
按键操作 | 定义 |
---|---|
F/f {char} | 反向/正向单个字符查找 |
t{char} | 查找字符前一个字符 |
dt{char} /df{space} | 删除光标到查找字符间字符 |
/{char} | 命令行查找 |
替换
按键操作 | 定义 |
---|---|
s/going/rolling/g | 当前行所有going替换成rolling |
%s/going/rolling/g | 全局所有going替换成rolling |
R | 替换模式 |
r | 单字符替换 |
cw | 修改一个单词 |
c$/C | 修改光标之后行内内容 |
vim高级使用
1.缓冲区与多文件编辑
缓冲区:是内存中的一块缓冲区域,用于临时存放vim打开过的文件。
缓冲区列表
查看缓冲区列表的三种方式::files
:buffers
:ls
缓冲区列表有:缓冲区序列号
指示状态
文件名
光标位置
缓冲区列表指示状态:
标记 | 含义 |
---|---|
a | 激活缓冲区,缓冲区被加载且显示 |
h | 隐藏缓冲区,缓冲区被加载但不显示 |
% | 当前缓冲区 |
# | 交换缓冲区 |
= | 只读缓冲区 |
+ | 已更改缓冲区 |
- | 不可改缓冲区 |
缓冲区列表操作
指令 | 含义 |
---|---|
:bp[revious] | 到上一个缓冲区 |
:bn[ext] | 到上一个缓冲区 |
:bf[irst] | 到第一个缓冲区 |
:bl[ast] | 到最后一个缓冲区 |
:buffer Number/file_name | 到指定缓冲区 |
:ball | 编辑全部缓冲区 |
ctrl + ^/b# | 交替缓冲区 |
2.多窗口操作与标签分组
分屏操作:
分割
指令 | 含义 |
---|---|
vim -O/on | 水平/垂直分屏 n:数字,o:Open |
ctr + w c/q | 关闭当前窗口/最后一个窗口时退出 |
ctr + w s | 上下分割当前打开的文件 |
:sp filename | 上下分割,并打开一个新的文件 |
ctr + w v | 左右分割当前打开的文件 |
:vsp filename | 左右分割,并打开一个新的文件 |
移动分屏和尺寸变动
指令 | 含义 |
---|---|
ctr + w K | 向上移动 |
ctr + w J | 向下移动 |
ctr + w L | 向右移动 |
ctr + w H | 向左移动 |
ctr + w + | 增加高度 |
ctr + w - | 减少高度 |
ctr + w = | 等分高度 |
标签:容纳一系列窗口的容器。
标签操作:
指令 | 含义 |
---|---|
:tabnew | 新建标签页 |
:tabfind | 查找并在新标签页中打开文件 |
:tabs | 显示已打开标签页的列表 |
:tabclose | 标签页 |
:tabonly | 仅保留当前标签页打开 |
:tabn/p/first/last | 移动到下/上/第一/最后一个标签页 |
:tabm | 将当前标签页放置到指定位置 |
gt/T | 移动到下/上一个标签 |
{i}gt | 移动到i位置的标签页 |
noremap :tabnext | Vimirc中自定义快捷键 |
noremap :tabprevious | Vimirc中自定义快捷键 |
:tabe | 编辑标签中的某个文件 |
tabm 0/tabm | 移动当前tab 到第一个/最后一个标签页 |
tabm{i} | 移动当前tab到i+1位置 |
3.文本对象与宏
文本对象
块对象
指令 | 含义 |
---|---|
]/[ | []block |
)/(、b | block |
>/<、>/< | <> block |
}/{、B | block |
t | tag block: <> </> |
宏:解决重复操作
宏最佳操作:
- 规范光标位置:0
- 执行编辑和操作
- 移动光标到容易回放的位置:j
宏保存:
- viminfo /vimrc file
- 保存历史和非空寄存器
- vim启动是读取
- 容易被覆盖
4.visual模式
定义:在可视化模式下,可以对一个文本块的整体进行操作。
指令 | 含义 |
---|---|
viw | 选中单词 |
vis | 选中句子 |
vip | 选中段落 |
vi( | 选中圆括号中的内容 |
vi[ | 选中中括号的内容 |
vit | 选中标签中的内容 |
v2i | 选中两层大括号之间的所有内容 |
v3aw | 选中三个单词(包含中间的2个间隔空格) |
v3iw | 选中三个单词(2个单词+间隔空格) |
可视化模式操作
操作符 | 含义 |
---|---|
gv | 重选上次的高亮选区 |
o | 切换选取边界 |