Vim 笔记


  Vim总共分为普通模式、插入模式(insert)、替换模式(replace)、可视模式(visual)、命令模式。Vim启动后即进入普通模式,在其它模式下,按 Esc可退回到普通模式。

普通模式

普通模式下命令可分为以下三类:

  • 光标命令
    指移动光标的命令。有以下特性:
    • 输入这些命令前,可以先输入一个数字,用来指定连续执行的次数。如:<command><command><command>等价于3<command>
    • 这些命令可以作为含参命令的参数,用来指定含参命令的作用范围。
  • 立即命令
    指按下命令键后,无需再输入参数,便立即做出反应的命令。有以下特性:
    • 同光标命令,在输入前可输入一个数字。
  • 含参命令
    指按下命令键后,需要再输入参数,才能做出反应的命令。有以下特性:
    • 同光标命令,在输入前可输入一个数字。
    • 后跟参数可为光标命令(记作<end_position>),记当前光标位置为<start_position>,则该命令作用范围是<start_position><end_position>
    • 后跟参数也可为该命令的重复,此时作用范围为光标所在的一行。

光标命令

字符级移动

命令含义
h向左移动
j向下移动
k向上移动
l向右移动

单词级移动

命令含义
wW移动至下一个单词的第一个字符处
bB移动至光标所在单词的第一个字符处;若已在此处,则移动至上一个单词的第一个字符处
eE移动至光标所在单词的最后一个字符处;若已在此处,则移动至下一个单词的最后一个字符处

WBE以不可见字符( \s)作为划分单词的依据;wbe以非单词字符( \W[\^0-9a-zA-Z_])作为划分单词的依据。

行级移动

命令含义
0移动至本行行首
$移动至本行行尾
^移动至本行第一个非空字符
+移动至下一行行首
-移动至上一行行首

文段级移动

命令含义
(移动至当前句子开头;若已在此处,则移动至上一句的开头
)移动至当前句子结尾;若已在此处,则移动至下一句的开头
{移动至当前段落开头;若已在此处,则移动至上一段的开头
}移动至当前段落结尾;若已在此处,则移动至下一段的结尾

屏幕级移动

命令含义
H移动至本屏首行行首
M移动至本屏中间一行的行首
L移动至本屏尾行行首

文件级移动

命令含义
gg移动至文件首行行首
G移动至文件尾行行首
4G移动至文件第四行行首

屏幕行移动

当某行的字符数过多,为适应屏幕宽度而回绕时,该行在屏幕上占据两行;实际上占据一行。

命令含义
gj移动至上一屏幕行
gk移动至下一屏幕行
g0移动至本屏幕行行首
g$移动至本屏幕行行尾
g^移动至本屏幕行第一个非空字符处

匹配移动

命令含义
*移动至与光标所在单词相匹配的下一个单词
#移动至与光标所在单词想匹配的上一个单词
%移动至另一个括号符(支持的括号符为 ( ) [ ] { } )

查找式移动

命令含义
/向后查找
?向前查找
n若有多项符合查找要求,按此键则移动至下一项
N若有多项符合查找要求,按此键则移动至上一项

拷贝、剪切和粘贴

下表中除yd外其余皆为立即命令

命令含义
y拷贝(含参命令)
Y拷贝当前行
d剪切(含参命令)
D从当前光标位置起剪切至行尾
x剪切光标处字符
X剪切光标前字符
p向后粘贴
P向前粘贴

  现对含参命令进行举例。根据含参命令的特性可知:yy等价于Yy$表示拷贝从光标位置至行尾的内容;y4e表示拷贝从光标位置开始至其后的第4个单词结尾的内容。
  Vim 支持将拷贝或剪切的内容存入一个变量(az)中,在需要的时候从某个变量中取出粘贴。使用变量时需先输入"声明变量,如:"aY表示拷贝当前行的内容放入变量a中;"bp表示向后粘贴变量b中的内容。

缩进

命令含义
>缩进(含参命令)
<反缩进(含参命令)

大小写转换

命令含义
gu转为小写(含参命令)
gU转为大写(含参命令)

合并

命令含义
J将当前行与下一行合并

撤销

命令含义
u撤销上一次操作
U撤销对当前行的所有操作

标记点

命令含义
m声明标记点
\` 跳转到标记点
'跳转到标记点的行首

  Vim支持26个局部标记点(az)和26个全局标记点(AZ),局部标记点仅限于当前文件内,全局标记点可跨文件跳转。如:ma表示将当前光标处声明为局部标记点a\`a表示跳转到标记点a处,'A表示跳转到全局标记点A处的行首(可能发生文件跳转)。

保存和退出

命令含义
ZZ不保存退出
ZQ保存退出

屏幕视图切换

命令含义
zt将光标所在行滚动至屏幕顶端
zz将光标所在行滚动至屏幕中间
zb将光标所在行滚动至屏幕底端
Ctrl + f向上翻页
Ctrl + b向下翻页
Ctrl + e向上滚动一行
Ctrl + y向下滚动一行

插入模式

下表中除c外其余皆为立即命令

命令含义
i在当前位置的左侧插入
a在当前位置的右侧插入
I在当前行行首插入
A在当前行行尾插入
o在当前行之下插入新一行
O在当前行之上插入新一行
s删除当前字符并插入
S删除当前行并插入
c删除并插入(含参命令)
C删除从光标开始至行尾的内容并插入

替换模式

命令含义
r替换当前字符
R进入替换模式

命令模式

保存和退出

命令含义
:w保存
:w!强制保存(应用于只读文件,且用户有修改权限)
:q退出
:q!强制退出(退出且不保存修改时)
:wq保存并退出
:wq!强制保存并退出(应用于只读文件,且用户有修改权限)

设置

命令含义
:set nu显示行号
:set nonu不显示行号

查找和替换

命令含义
/<regular_expression>查找(<regular_expression>为正则表达式,此时按n光标移动到下一匹配项;按N光标移动到上一匹配项)
:s/<regular_expression>/<string>将当前行第一个匹配项替换为<string>
:s/<regular_expression>/<string>/g将当前行所有匹配项替换
:%s/<regular_expression>/<string>将各行第一个匹配项替换
:%s/<regular_expression>/<string>/g将全文所有匹配项替换
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值