vi / vim 简介及常用命令总结

vim

Vim 是从 vi 发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器。

vi 简介

vi 是 Unix 和 Linux 操作系统使用的终端文本编辑器,任何一台安装了 Unix 或 Linux 的机器都会提供这套软件,它是系统管理员手中的得力工具。vim 是 vi 的升级版,它不仅兼容 vi 的所有指令(命令),而且还具有一些新特性。

vi 的操作模式

vi 有三种操作状态:

  • 命令模式(command mode)
  • 插入模式(insert mode)
  • 末行模式(last line mode)

它们的功能如下:

(1) 命令模式:当执行 vi 后,首先会进入命令模式(指令模式),此时输入的任何字符都被视为命令。命令模式用于控制屏幕光标的移动,文本的删除,移动复制某区段,进入插入模式下,或者进入末行模式。

(2) 插入模式:在命令模式下输入相应的插入命令进入该模式。只有在插入模式下,才可做文字数据输入和其它编辑操作,按 ESC 键可回到命令模式。

(3) 末行模式:在命令模式输入某些特殊字符,如 “/”、"?" 和 “:”,可进入末行模式。在该模式下可存储文件或离开编辑器,也可以设置编辑环境,如寻找字符串、列出行号等。

vi 三种工作模式的转换如图:

vi操作模式

vi 的进入与退出

进入 vi

若要编辑文件 myfile,执行如下执行即可:

$vi myfile

终端显示 vi 的编辑窗口,进入命令模式。也可以直接输入 vi 创建一个新文件,然后在退出时保存文件或者丢弃。

退出 vi

如果在插入模式下,则先利用 ESC 键返回命令模式,然后可选用下列指令退出 vi。

  • :q! 离开 vi,并放弃刚才的修改。
  • :wq 保存退出。
  • :ZZ 保存退出。
  • :x:wq
  • :w 保存但不退出。
  • :q 退出 vi,若文件被修改过,则会被要求确认是否放弃修改。此指令可以 w 配合使用。

注意:如果不知道当前处于何种模式,可以多按几次 ESC 键,以便确认进入命令模式。

vi/vim 常用命令

命令模式的常用命令

在命令模式下可以进行文本的编辑工作。使用下列命令,配合一般键盘上的功能键,如方向键、Insert 键、Delete 键等,就可以利用 vi 来处理文本数据了。

光标的移动

命令说明功能键
h向左移一个字符 ← \leftarrow
l向右移一个字符 → \rightarrow
j向上移一个字符 ↑ \uparrow
k向下移一个字符 ↓ \downarrow
0移至该行之首Home
$移至该行之末End
^移至该行的第一个非空白字符处
H移至窗口的第一行
M移至窗口的中间那行
L移至窗口的最后一行
G移至该文件的最后一行
nG移至该文件的第 n 行
gg移至该文件的第一行
w跳到下一个单词
b跳到上一个单词
{按段移动,上移
}按段移动,下移

翻屏与滚屏

命令说明功能键
Ctrl+f向后翻一屏PageDown
Ctrl+b向前翻一屏PageUp
Ctrl+d向后翻半屏
Ctrl+u向前翻半屏
zt光标所在行移动到窗口顶端
zz光标所在行移动到窗口中间
zb光标所在行移动到窗口底部

删除(剪切)与修改

命令说明功能键
x删除光标所在的字符Delete
X删除光标的前一个字符
dd删除光标所在的行
ndd删除包括光标所在行的 n 行文本
d0删除从光标前一个字符开始一直到行首的文本
dw删除从光标开始的一个单词
D删除从光标开始一直到行末的文本
s删除光标所在字符并进入插入模式
S删除光标所在行并进入插入模式
r替换光标所在字符
R进入替换状态,替换光标所在字符及以后的字符,按 ESC 退出替换状态

复制粘贴

命令说明
yyY复制光标所在行
nyynY复制包括光标所在行开始的 n 行
p (小写)粘贴到光标的下一行
P (大写)粘贴到光标的上一行

撤销与反撤销

命令说明
u撤销
Ctrl+r反撤销

可视模式

命令说明
v选中文本(按字符移动)
V选中文本(按行移动)

可视模式可以配合 dy 实现对文本块的删除(剪切),复制。

vim 下还支持配合 <> 实现对文本块的左右移动,首先使用 vV 选择要移动的部分,然后按 Ctrl+v 选中该文本块,接着可根据需要左移 < 或 右移 >

文本行移动(缩进)

命令说明
>>向右移动(缩进)
<<向左移动(缩进)
> (vim 支持)向右移动(缩进)
< (vim 支持)向左移动(缩进)

重复命令

命令说明
.重复执行上一次的命令

退出命令

命令说明
ZZ退出保存,相当于末行模式下的 :wq

插入模式

所有以下命令都能从命令模式进入插入模式。

命令说明
i从光标所在字符前面开始插入字符
I从光标所在行的行首开始插入字符
a从光标所在字符后面开始插入字符
A从光标所在行的行末开始插入字符
o光标所在行向下新增一行
O光标所在行向上新增一行

末行模式

查找命令

命令说明
/exp往前查找字符串 exp,n 下一个,N 上一个
?exp往后查找字符串 exp,n 下一个,N 上一个

替换命令

命令说明
:%s/abc/123/g将当前文件中所有的 abc 替换成 123
:1,10s/abc/123/g将 1 到 10 行的 abc 全部替换成 123

退出命令

命令说明
:q退出程序
:q!强制退出,不保存修改
:w保存修改
:w filename将编辑内容存为名为 filename 的文件
:wq保存退出
:x若有修改保存,退出程序

:wq 强制性 写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。

:x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。

其它命令

命令说明
:set nu显示行号
:set nonu不显示行号
:set ff查看文件格式
:set ff=unix修改文件格式为 unix
:noh取消搜索结果高亮

vi/vim 键盘图

vi/vim键盘图

vi/vim cheat sheet

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值