Linux vi/vim 学习笔记
vim 简介
- 文本编辑器
- vim由vi发展而来
- 程序开发工具
安装指令:
sudo apt install vim
打开指令:vim hjx.txt
为什么要学习vi/vim编辑器
vi与vim的区别:
- vim是vi的升级版本,兼容vi
- vi按 u只能撤消上次命令,而在vim里可以无限制的撤消
- vi只能运行于类unix系统中,而vim不仅可以运行于unix,windows ,mac等多操作平台
- vim可以用不同的颜色来高亮代码
- 可通过vimrc文件配置更加高级的功能
vi/vim 的使用
三种模式 : 命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
模式切换指令:
注:输入模式与底线命令模式不能直接切换,要通过命令模式衔接
- 刚启动时为命令模式
- 命令模式 to 输入模式:
i
- 命令模式 to 底线命令模式:
:
- 切换到命令模式:
ESC
模式切换关系图:
一般模式、命令模式
- 刚启动的模式
vim runoob.txt
:使用 vi 来建立一个名为 runoob.txt 的文件
- 此模式的键盘动作被识别为命令而非字符输入
- 常用的几个命令:
i
切换到输入模式x
删除光标所在位置的字符:
切换到底线命令模式,从而在最底下一行输入命令:wq
:存档后,离开vi注 :命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令
输入模式
- 命令模式
i
进到输入模式- 输入模式可以使用以下按键:(很正常的逻辑)
字符按键以及Shift组合
,输入字符ENTER
,换行BACK SPACE
,删除光标前的一个字符DEL
,删除光标后的一个字符方向键
,文本中移动光标HOME/END
,移动光标到行首/行尾Page Up / Page Down
,上/下翻页Insert
,切换光标为输入/替换模式,光标将变成竖线/下划线ESC
,退出输入模式,切换到命令模式
- 左下角状态栏出现
--INSERT--
或者--插入--
底线命令模式
- 命令模式
:
进到底线命令模式- 该模式可用的命令非常多
- 基本命令有(已省略了冒号):
q
,退出程序
w
,保存文件
ESC
,随时退出底线命令模式
vi/vim 使用实例
- 创建一个 xiaohuang.txt 文件(一般模式)
vim xiaohuang.txt
- 按下
i
进入输入模式进行编辑(输入模式) - 输入完毕后,按下
ESC
(一般模式) - 按下
:wq
,保存并离开 - xiaohuang.txt 创建完毕
vi/vim 按键说明
除了i, Esc, :wq 之外, vim 还有非常多的按键
更加详细的按键说明可以看菜鸟教程
以下来自于野火Linux开发板资料:
进入/退出插入模式快捷键
快捷键 | 功能描述 |
---|---|
i | 在当前光标所在位置插入文本 |
a | 在当前光标所在位置的下一个字符插入文本 |
o | 在光标所在位置后插入新行 |
r | 替换当前光标所在位置的字符 |
R | 可以替换当前光标所在位置之后的字符,按下”Esc”则退出 |
ESC | 退出插入模式 |
一般模式快捷键
快捷键 | 功能描述 | |
---|---|---|
光标移动 | k / ↑ | 光标向上移动 |
j / ↓ | 光标向下移动 | |
h / ← | 光标向左移动 | |
l / → | 光标向右移动 | |
PageUp | 向上翻页 | |
PageDown | 向下翻页 | |
n+shift+g | 跳转到第n行 | |
shift+g | 跳转到最末行 | |
gg | 跳转到第一行 | |
文本查找与替换 | /word | 在文件中搜索关键字word |
n | 查找下一个关键字 | |
N | 查找上一个关键字 | |
撤销重做 | u | 撤销上一步的操作,等价于Windows的Ctrl+Z |
Ctrl+r | 重做上一步的操作。 | |
删除、剪切、复制、粘贴 | dw | 删除一个单词 |
dd | 删除当前行 | |
ndd | 删除光标后n行 | |
x | 剪切光标选中的字符 | |
y | 复制光标所选的内容 | |
yy | 复制当前行 | |
nyy | 复制当前行后n行 | |
p | 将复制的数据粘贴在当前行的下一行 | |
P | 将复制的数据粘贴在当前行的上一行 | |
区块操作 | v | 选择多个字符 |
V | 可以选择多行 |
命令行模式快捷键
快捷键 | 功能描述 |
---|---|
w | 保存文档 |
w | 另存为以为文件名的文档 |
r | 读取文件名为filename的文档 |
q | 直接退出软件,前提是文档未做任何修改 |
q! | 不保存修改,直接退出软件 |
wq | 保存文档,并退出软件。 |
set nu | 在行首加入行号 |
set nonu | 不显示行号 |
set hlsearch | 搜索结果高亮显示 |
! command | 回到终端窗口,执行command命令,按回车键可切回vim。 |
特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。
举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。