vi

vi文本编辑

介绍

  • vim三种状态模式

vim状态模式

命令总结

启动和退出

启动和退出
vi vi filename打开文件
:q 退出

文件操作

文件操作
:w 保存对 vi 编辑器中已打开文件的修改
:w myfile 将 vi 编辑器中的内容另存为指定文件名
:wq 对 vi 编辑器中的文件进行保存并退出 vi 编辑器
:q! 放弃对文件内容的修改,并退出 vi 编辑器

光标操作

光标移动

光标移动
h 向左移动光标
l 向右移动光标
k 向上移动光标
j 向下移动光标

翻页

翻页
Ctrl + f 向下翻整页
Ctrl + b 向上翻整页
Ctrl + u 向上翻半页
Ctrl + d 向下翻半页

行内移动光标

行内移动光标
^ 将光标快速跳转到本行的行首字符
$ 将光标快速跳转到本行的行尾字符

文件内跳转

文件内跳转
:set nu 在编辑器中显示行号
:set nonu 取消编辑器中的行号显示
1G(gg) 跳转到文件的首行
G 跳转到文件的末尾行
#G 跳转到文件中的第#行

编辑操作

进入输入模式

进入输入模式
i 在当前光标处进入插入状态
a 在当前光标后进入插入状态
o 在当前行的下面插入新行,光标移动到新行的行首,进入插入状态
O 在当前行的上面插入新行,光标移动到新行的行首,进入插入状态
c(n)w 删除当前光标到所在单词尾部的字符,并进入插入状态
c$ 删除当前光标到行尾的字符,并进入插入状态
c^ 命令删除当前光标之前(不包括光标上的字符)到行首的字符,并进入插入状态

删除操作

删除操作
x 删除光标处的单个字符
(n)dd 删除光标所 n 行
:3,5 d 删除从第 3 行到第 5 行的内容
dw 删除当前字符到单词尾(包括空格)的所有字符
de 删除当前字符到单词尾(不包括单词尾部的空格)的所有字符
d$ 删除当前字符到行尾的所有字符
d^ 删除当前字符到行首的所有字符
J(大写) 删除光标所在行行尾的换行符,相当于合并当前行和下一行的内容

拷贝和粘贴

拷贝和粘贴
(n)yy 复制当前行整行的内容到 vi 缓冲区
:3,6 co(m) 12 复制(剪切)3-6 行,到第 12 行处
p 读取 vi 缓冲区中的内容,并粘贴到光标当前的位置(不覆盖文件已有的内容)

撤销与恢复

撤销与恢复
u 取消最近一次的操作,并恢复操作结果可以多次使用 u 命令恢复已进行的多步操作
U 取消对当前整行进行的所有操作
Ctrl + r 对使用 u 命令撤销的操作进行恢复

查找与替换操作

查找

查找
/word 从上而下在文件中查找字符串“word”
?word 从下而上在文件中查找字符串“word” n 定位下一个匹配的被查找字符串
N 定位上一个匹配的被查找字符串

替换

替换
:s/old/new 将当前行中查找到的第一个字符“old” 串替换为“new”
:s/old/new/g 将当前行中查找到的所有字符串“old” 替换为“new”
:#,#s/old/new/g 在行号“#,#”范围内替换所有的字串“old”为 “new”
:%s/old/new/g 在整个文件范围内替换所有的字串“old”为 “new

最简易配置

  • 输入 vim ~/.vimrc(本用户)或 vim /etc/[vim/]vimrc(全局用户),该文件是一个隐藏文件,如果没有则创建它,该文件中保存一些,vim 的常用配置。
命令 语义 缩写
set number 代码显示行号 set nu
set nonumber set nonu
syntax on 关键词高亮显示
set cindent c 语法自动缩进 set ci
set autoindent 新行自动缩进 set ai
set shiftwidth=4 缩进宽度 4 set sw=4
set tabstop=4 tab 键宽度 4 set ts=4
set softtabstop=4 制表符宽度4 set st=4
set nobackup 不备份 set nb

学习工具 vimtutor

  • 在命令行中输入 vimtutor 默认是英文版的,可以使用中文版 vimtutor -g zh。