vim 常用命令

1.前言

一直觉得 Linux 相比于 windows 系统不知好用了多少倍,第一是 linux 的 terminal 终端,第二是 linux 安装软件太方便了,所以我个人对于 linux 简直是爱不释手。不过现在 Windows10 好像也引入了终端吧。而且德国等好几个国家也在从 Windows 系统切换到 linux 系统,足以说明了 linux 的强大。毕竟我们在用 git 等工具的时候可不想在去安装什么 git 工具。直接几个命令搞定的事情不是很好嘛。

对于会使用 linux 的同学来说,vim 的使用更是家常便饭了,怎样提高 vim 的编辑效率是很有必要的。如果一篇文章很长我们不可能通过上下左右去移动光标到我们想要的位置,对吧。

2.Vim介绍及快捷键

2.1 vim的几种模式

vim总共有四种模式,首次打开处于正常模式中。

  • 正常模式(Normal-mode)
    启动vim后默认处于正常模式。不论位于什么模式,按下esc键(有时需要按两下)都会进入正常模式。

  • 插入模式(Insert-mode)
    在正常模式中按下i,I,a,A等键,会进入插入模式。现在只用记住按i键会进行插入模式。在插入模式中,击键时会写入相应的字符。

  • 命令模式(Command-mode)
    在正常模式中,按下:(英文冒号)键,会进入命令模式。在命令模式中可以执行一些输入并执行一些vim或插件提供的指令,就像在shell里一样。这些指令包括设置环境、文件操作、调用某个功能等等。

常用的命令有::q(退出)、:q!(强制退出不保存)、:w(保存)、:wq(保存并退出)。

  • 可视模式(Visual-mode)
    在正常模式中按下v, V, Ctrl+v,可以进入可视模式。可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。

我们比较常用的一般是在正常模式,插入模式,命令模式中切换,可视模式其实用到的比较少的。

2.2 Vim快捷键

2.2.1 启动vim命令(test为文件)

命令描述举例
vim -r file恢复上次异常退出的文件vim -r test
vim -R file以只读的方式打开文件,但可以强制保存vim -R test
vim -M file以只读的方式打开文件,不可以强制保存vim -M test
vim + file从文件的末尾开始vim + test
vim +num file从第num行开始vim +4 test
vim +/string file打开file,并将光标停留在第一个找到的string的行首vim +/string file

2.2.2 文档操作命令

命令描述
:set nu显示行号
:set nonu不显示行号
:q退出,如果有修改不能退出
:q!强制退出,但不保存
:w保存
:wqZZ:x保存并退出
:saveas newfile.txt另存为新的文件newfile.txt
:fcontrol +g显示文档名,是否修改,和光标处于第几行
:e重新加载当前文档,如果有修改则失败,必须保存或丢弃
:e!重新加载当前文档,并丢弃已做的改动

2.2.3 光标移动(所有操作命令都是在正常模式下)

命令描述
hBackspace左移一个字符 可配合数字使用 如: 2h
lspace右移一个字符 可配合数字使用 如: 3l
j下移一行
k上移一行
gj移动到一段内的下一行
gk移动到一段内的上一行
+Enter把光标移至下一行第一个非空白字符
-把光标移至上一行第一个非空白字符
w前移一个单词,光标停在下一个单词开头
e前移一个单词,光标停在下一个单词末尾
W移动下一个单词开头,但忽略一些标点
E移动到下一个单词末尾,如果词尾有标点,则移动到标点
b后移一个单词,光标停在上一个单词开头
B移动到上一个单词开头,忽略一些标点
ge后移一个单词,光标停在上一个单词末尾
gEge ,不过单词包含单词相邻的标点
({向前移动到段落开头
)}向后移动到段落末尾
0移动到行首
g0移到光标所在屏幕行行首,针对一行太长的情况
^移动到本行第一个非空白字符
g^移动到当前屏幕行第一个非空字符处,针对一行太长的情况
$移动到行尾
g$移动光标所在屏幕行行尾
H把光标移到屏幕最顶端一行
M把光标移到屏幕中间一行
L把光标移到屏幕最底端一行
gg移动到文件头部
G移动到文件尾部
nG移动到文件第n行

2.2.4 翻页

命令描述
ctrl + f下翻一屏
ctrl + b上翻一屏
ctrl + d下翻半屏
ctrl + u上翻半屏
ctrl + e向下滚动一行
ctrl + y向上滚动一行
n%到文件n%的位置
zz将当前行移动到屏幕中央
zt将当前行移动到屏幕顶端
zb将当前行移动到屏幕底端

2.2.5 查找

命令描述
/内容在后面的文本中查找内容n向后查找下一个,N向前查找下一个
?内容在前面的文本中查找内容n向后查找下一个,N向前查找下一个
/内容/+number将光标停在包含内容的行后面第number行上,n向后查找下一个,N向前查找下一个
/内容/-number将光标停在包含内容的行前面第number行上,n向后查找下一个,N向前查找下一个

2.2.6 替换

命令描述
:s/old/new用new替换当前行第一个old
:s/old/new/g用new替换当前行所有的old
:n1,n2s/old/new/g用new替换文件n1行到n2行所有的old
:%s/old/new/g用new替换文件中所有的old
:%s/^/xxx/g在每一行的行首插入xxx,^表示行首
:%s/$/xxx/g在每一行的行尾插入xxx,$表示行尾

所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。

2.2.7 撤销/重做

命令描述
[n] u取消一(n)个改动
:undo 5撤销5个改变
:undolist你的撤销历史
ctrl + r重做最后的改动
U取消当前行中所有的改动
:earlier 5m回到5分钟前
:later 30s前进30秒

2.2.8 剪切/复制/粘贴

命令描述
[n]x剪切光标右边n个字符,相当于d[n]l
[n]X剪切光标左边n个字符,相当于d[n]h
yyY复制整行文本
y[n]w复制一(n)个词
y[n]l复制光标右边1(n)个字符
y[n]h复制光标左边1(n)个字符
y$从光标当前位置复制到行尾
y0从光标当前位置复制到行首
y1Gygg复制光标以上的所有行
yG复制光标以下的所有行
yawyas复制一个词和复制一个句子,即使光标不在词首和句首也没关系
d删除(剪切)在可视模式下选中的文本。
d$D删除(剪切)当前位置到行尾的内容。
d[n]w删除(剪切)1(n)个单词
d[n]l删除(剪切)光标右边1(n)个字符。
d[n]h删除(剪切)光标左边1(n)个字符。
d0删除(剪切)当前位置到行首的内容
[n] dd删除(剪切)1(n)行。
d1Gdgg剪切光标以上的所有行。
dG剪切光标以下的所有行。
dawdas剪切一个词和剪切一个句子,即使光标不在词首和句首也没关系。
p在光标之后粘贴。
P在光标之前粘贴

3. 结语

如果能够熟练掌握以上命令,我相信在使用 vim 编辑文件时的效率至少能提升 5 倍以上。真的不是夸大其词。如果是经常使用 linux 那么 vim 基本命令将是不可或缺的。等你熟练运用的时候就会知道我所言非虚。

加油吧。

天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值