VIM教程


vim的价值意义就不再赘述了,个人认为就像打字一样,两个指头戳能打得飞快的高手也有,没必要要求所有人都练习标准打字方法,vim也是一样,一切都是生产工具,对你来说什么更高效就用什么。

1. vim基本概念介绍

vim是vi的增强工具,其命名来源也是vi(vi (i)mproved,也就是vim),关于vi的来源本文就不介绍了,请自行搜索了解。一般我们可将vim分为三种模式:命令模式、插入模式和底线命令模式。

1.1 命令模式

刚刚打开vim默认进入的就是命令模式,插入模式和底线命令模式都是通过命令模式下按下某些按键进入的,例如命令模式下按下i即进入插入模式,光标位于刚刚命令模式所在的文字前,a同样也是进入插入模式,但是光标位于刚刚命令模式所在文字的后面。下面的表格对命令模式下所有的按键进行了汇总说明。

注:命令模式下的光标是粗光标,插入模式下的光标是细光标,差异是,粗光标选中了一个文字,细光标则在是在文字之间的。

图1 命令模式与插入模式光标对比

下表是命令模式下每个按键的功能说明。建议可以先跳过汇总表,先参考具体的关键用法,基本用法逻辑如下:
(N)+(R)+C+(O)
其中:

  • 带括号表示该参数可选
  • N表示数量,R表示操作寄存器,C表示命令,O表示选项
  • 如:
    • 5"+yy的N为5,操作寄存器为"+,命令为y,选项为y,整个命令表示拷贝当前行开始往下5行到剪贴板中
    • 6GN为6,没有R,没有O,表示跳转到第6行

表1 命令模式按键功能说明

名称说明分类
h左移(查找)移动命令
i右移
j下移
k上移
w把光标移动到下一个单词开始处
W把光标移动到空格、换行或者制表符后的下一个单词开始处
b把光标移动到上一个单词开始处
B把光标移动到空格、换行或者制表符前的上一个单词开始处
e把光标移动到下一个单词的尾部
E把光标移动到空格、换行或者制表符后的下一个单词的尾部
H移动光标到当前屏幕可见的第一行
L移动光标到当前屏幕可见的最后一行
/向后搜索内容
?向前搜索内容
n移动到查找内容的下一个位置
N移动到查找内容的上一个位置
f查找命令,后接查找的字符,比如fx,查找当前光标往后一个x字符并把光标选中到该字符上
F查找命令,后接查找的字符,比如Fx,查找当前光标往前一个x字符并把光标选中到该字符上
t功能类似f,只是光标会移到目标字符的前一个字符上
T功能类似F, 只是光标会移动到目标字符的前一个字符上
$移动光标到当前行尾部
0移动光标到当前行尾部
^移动光标到当前行首部非空字符
i进入插入模式,光标位于命令模式光标选中文字前插入命令
I进入插入模式,光标位于当前行第一个非空字符前
a进入插入模式,光标位于命令模式选中文字后
I进入插入模式,光标位于当前行最后一个非空字符后
o进入插入模式,光标位于原位置的下一行
O进入插入模式,光标位于原位置的下一行
s删除原光标选中的文字并进入插入模式
S删除原光标行内所有文字,并定位在该行的第一个非空字符进入插入模式
y复制拷贝,y后面加拷贝选项,详细说明见yank命令复制与粘贴
Y复制当前行,后面不需要加拷贝选项
p在当前光标行后粘贴拷贝的内容
P在当前光标行前粘贴拷贝的内容
r替换当前光标选中的字符,输了r之后直接输入需要替换的字符即可,替换一个字符后自动退出替换状态回到正常命令模式替换操作
R连续替换当前光标选中的字符,按esc退出替换模式
u撤销上一个操作撤销操作
U撤销行内的操作
J合并该行与下一行,如果前面先输入数字则表示合并与后面的n行,如5J表示合并后面5行行合并
K帮助帮助
x删除操作,删除光标选中的字符,删除后光标选中被删除字符的下一个字符删除操作
X删除操作,删除光标选中的字符,删除后光标选中被删除字符的上一个字符
v进入可视模式进入可视模式
V进入多行可视模式
Q切换至ex模式
esc回到命令模式!模式切换
:进入底线命令模式
>缩进缩进操作
<反缩进
mm标记位置,后接标记名称,如ma则把标记存储到a,再通过'a跳转标记与跳转
'跳转到指定标记位置,标记是由m进行的
q录制宏,具体参考宏的录制与使用宏录制
z调整视图,后接调整选项,如zz将光标所在那一行移到屏幕中央,z-将光标所在那一行移动到屏幕底部,z回车将光标所在行移动到屏幕顶部视图调整

下图是网上大神汇总的命令模式下的键位说明图。
在这里插入图片描述

1.1.1 复制与粘贴

y命令表示复制,基本操作如下:

  • yy表示复制本行到默认寄存器,p表示粘贴默认寄存器内容
  • nyy表示复制从本行开始的n行到默认寄存器,比如5yy就是复制本行开始的5行到默认寄存器
  • y也可以配合前置选择功能,比如通过v进入选择模式先选取需要拷贝的内容,然后通过y把选中的内容拷贝到默认寄存器
  • 此外还可以通过前置配置拷贝寄存器来把拷贝内容放到指定寄存器,如
    • "ayy表示拷贝当前行到寄存器a中;
    • 需要粘贴寄存器a中的内容需要通过如下指令"ap进行粘贴
    • a-z标记命名寄存器,0-9表示专用寄存器,通过d或者c删除的内容会依次序存在这10个寄存器里面;
    • "+yy表示拷贝到剪贴板,"+p表示粘贴剪贴板内容到文中;
    • 如果需要查看寄存器内容,通过:进入底线命令模式,输入registers即可

1.1.2 宏的录制与使用

录制宏是为了自动做重复操作,比如如果想在连续的10行每行头部加入注释字符//,一种方案是通过底线命令模式下的s搜索替换完成,另一种方案就是录制与执行宏。以在光标所在行往下10行添加//的目的为例,宏的录制与使用如下:

  • 按q加一个字母开始宏录制,如qa,就是开始录制宏,宏标记为a
  • 接下来执行单次操作:
    • 按0定位光标到行首
    • 按i进入插入模式
    • 输入//
    • 按esc回到命令模式
    • 按j跳转到下一行
    • 按q完成录制
  • 使用宏:命令模式下按下9@a表示执行宏a九次

1.2 插入模式

按i进入插入模式,就是正常输入内容,此处不再赘述,插入模式下按esc回到命令模式。

  • 多行同时插入小技巧:比如在需要对多行进行注释的时候
    • 按ctrl+v进入列选择模式
    • 选择多行
    • 按I进入插入模式
    • 输入插入内容
    • esc回到命令模式,可以发现多行注释已完成

1.3 底线命令模式

底线命令模式的进入方法是在命令模式下按下:,在文档底部就会出现一个可以输入的光标,如下图所示,在这个里面输入对应的命令,完成命令后会自动退出底线命令模式,回到命令模式。

1.3.1 常用底线命令

如上图wq表示保存并退出,常用底线命令如下所示

  • set nu:显示行号
  • wq:保存并退出
  • registers:显示寄存器内容
  • s:搜索替换,基本格式如下:{作用范围}s/{目标字符}/{替换的字符}/{替换标志},如%s/red/blue/g表示把全文的red替换成blue;,$s/red/blue/g表示把当前行至结尾的red搜索替换成blue,5,$s/red/blue/g表示把第5行开始的red替换成blue。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值