【Linux学习07】vim的三种模式
文章目录
Vim存在三种模式:命令模式,编辑模式,末行模式
1 vim打开文件的方式
-
# vim 文件路径
:打开指定的文件(先按shift+:
再按q
退出) -
# vim +数字 文件的路径
:打开指定的文件,并且将光标移动到指定行 -
# vim +/关键字 文件路径
:打开指定的文件,并且高亮显示关键字 -
# vim 文件路径1 文件路径2 文件路径3
:同时打开多个文件
先复制一个etc/passwd文件到家目录下:
2 命令模式
注意:该模式是打开文件后进入的模式
2.1 光标的移动
- 光标移动到行首:按键
shift+6
- 光标移动到行尾:按键
shift+4
或$
- 光标移动到首行:按键
gg
- 光标移动到末行:按键
G
- 翻屏:向上翻(
ctrl+b
)或者pgup
向下翻(ctrl+f
)或pgdn
2.2 复制操作
- 复制光标所在行:
yy
粘贴:在想要粘贴的地方:p
- 以光标所在行为准(包含当前行),向下复制指定的行数:
数字+yy
- 可视化复制:按键
ctrl+v
,然后按方向键选中需要复制的区块,按键yy
进行复制,按键p
粘贴。
2.3 剪切操作
- 剪切/删除光标所在行:按键
dd
(删除之后下一行上移) - 以光标所在行为准(包含当前行),向下剪切指定的行数:
数字+dd
- 剪切/删除光标所在行:按键
D
(光标不上移,当前行会变成空白行)
2.4 撤销/恢复
- 撤销:按键
u
- 恢复:按键
ctrl+r
2.5 光标的快速移动
- 快速将光标移动到指定的行:按键
数字+G
- 以当前光标为准,向上或者向下移动指定的行:按键
数字+上下方向键
- 以当前光标为准,向左或者向右移动指定的行:按键
数字+左右方向键
- 末行模式下:输入英文
:
,其后输入行数字
,然后回车
3 模式之间的切换
4 末行模式
4.1 保存退出操作
- 保存:输入
: w
- 另存:输入
: w 路径
- 退出 :输入
: q
- 保存并退出:输入
: wq
- 强制退出:输入
: q!
(不保存)
4.2 搜索和替换
- 搜索:输入
/关键词
,在搜索结果中切换上一个或下一个结果N/n - 取消高亮:输入:
: nohl
(no highlight) - 替换:
: s/搜索的关键词/新的内容
(替换光标所在行的第一处符合条件的内容) - 替换:
: s/搜索的关键词/新的内容/g
(替换光标所在行的全部符合条件的内容global) - 替换:
: %s/搜索的关键词/新的内容
(替换整个文档的的第一处符合条件的内容) - 替换:
: %s/搜索的关键词/新的内容/g
(替换整个文档的的全部符合条件的内容) - 显示行号:
: set nu
- 取消显示行号:
: set nonu
- 使用vim打开并切换多个文件
查看当前打开的文件:: files
切换文件的方式:指定切换文件的名称:: open 已经打开的文件名称
通过命令切换上一个文件:bp (切换到上一个文件)
back prev
通过命令切换下一个文件:bn(切换到下一个文件)
back next
5 编辑模式
必须在命令模式下进入编辑模式
6 实用功能
6.1 代码着色
进入文件vim hello.java并编写代码:
着色显示:syntax on
着色关闭:syntax off
7 扩展内容
7.1 vim的配置
vim配置有三种情况:
- 在文件打开的时候在末行模式下输入的配置(临时的)
- 个人配置文件(~/.vimrc,如果没有可以自行新建)
- 全局配置文件(vim自带,/etc/vimrc)
- 配置个人配置文件:
新建好个人配置文件后
进入编辑模式:按键i
在编辑模式中输入:set nu
(假如说配置显示行号功能)
按键esc,退出编辑模式
进入末行模式,输入wq
保存并退出
配置好以后,vim打开的所有文件以后都会显示行号 - 如果某个配置项,在个人配置文件和全局配置文件产生冲突的时候应该以谁为准?
测试步骤:在两个配置文件中针对同一个配置项设置不同的值
在全局的配置文件中设置不显示行号,在个人的配置文件中显示行号
如果个人中没有配置,就会以全局配置文件为准。
7.2 异常退出
异常退出:在编辑文件之后并没有正常的保存退出,就会导致异常退出
解决方法:
点击回车,删除交换文件选择D
直接使用命令删除,rm -rf .passwd.swp
7.3 别名机制
作用:相当于创建一些属于自己的自定义命令
别名机制需要依赖一个别名配置文件:~/.bashrc
如果想创建的命令生效,需要重新登录当前用户
7.4 退出方式
vim退出编辑的文件可以使用:: q
,: wq
除了这个语法之外,还有另一个语法:: x
在文件没有修改的情况下表示直接退出
在文件修改的情况下表示保存并退出
如果文件没有修改,使用: wq
,会更新文件修改时间
如果文件没有修改,使用: x
,不会更新文件修改时间