VIM编辑器
VIM重点是光标的移动,模式的切换,删除,查找,替换,复制,粘贴,撤销命令的使用。
VIM的三种模式:
-
命令模式(不能对文件编辑)【默认】
-
编辑模式(输入模式)
-
末行模式(尾行模式)
#vim 路径
#vim +1 路径
#vim +/关键字 路径 【关键字高亮显示】
命令模式:
1.光标移动:
- 光标移动到行首 按键:shift+6 或 ^(字母上的一行数)
- 光标移动到行尾 按键:shift+4 或 $
- 移动到首行 按键:gg(good game)
- 移动到末行 按键:G
- 向上翻屏 按键:ctrl+b 【before】 或 pgup键
- 向下翻屏 按键:ctrl+f 【after】 或 pgdn键
2.复制操作:
- 复制光标所在行 按键:yy 【复制】 p【粘贴】
- 以光标所在行为准,向下复制指定的行数 按键:数字yy【包含光标所在的一行】
- 可视化复制 按键:ctrl+v 选中后按下yy 粘贴p
3.剪切、删除操作:
- 剪切/删除光标所在行 按键:dd【删除,严格上为剪切命令】 p【粘贴】
- 剪切/删除光标所在行为准,向下删除/剪切指定所在行 按键:数字 dd【包含当前行】
- 剪切/删除光标所在行,下一行不上移 按键:D【删除后当前行变为空白行】
4.撤销、回复(window下为ctrl+z,ctrl+y)
撤销指令 输入:u【小写 undo不做】
恢复指令 ctrl+r 【recover】
5.扩展
- 将光标移动到行: 按键:数字G
- 以当前光标为准,向上/下移动多行: 按键:(上 )数字↑ (下)数字↓ 左右同理
- 末行模式下移动到指定行 按键:输入英文“:”,后输入行数数字,按下回车
末行切换
命令模式进入末行模式:进入 按下:
退出 按一下ESC或者两下ESC 或清空末行中的全部命令
1.保存操作(write)
- 保存:“w”
- 另存:“w 路径”
2.退出操作(quit)
- 输入:“:q“ 回车
3.保存并退出
- 输入:“:wq”
4.强制:
- 输入:“:q!" 对刚才的修改
5.外部命令(了解)
- 输入:“:!命令” 当外部命令执行结束后按下任意键回到VIM命令
6.搜索/查找
- 输入:“/关键词”
- 在搜索结果切换 N/n 【next】
- 取消高亮:“:nohl” 【nohightlight不要高亮】
7.替换(g global全局) %表示整个文件
- : s/搜索的关键词/新的内容 替换光标所在行第一个符合条件的 str replace 【str:string】
- : s/搜索的关键词/新的内容/g 替换光标所在行全部符合条件的
- :%s/搜索关键词/新的内容 替换所有行的第一个符合条件的内容
8.显示行号 :set nu【临时显示】 取消输入:“set nonu”
9.扩展:使用vim打开多个文件,同时切换文件
- #vim 文件1 文件2
- 查看当前已经打开的文件“:files”
- %a 的位置有两种可能 %a=active【表示正在打开的文件】 #:【表示上一个打开的文件】
切换文件的方式:
- 指定切换文件的名称,输入“:open 文件名”
- 通过命令切换上一个命令/下一个命令 “:bn” “:bp” 【back next/previous】
编辑模式
进入方式:
- i:在光标所在字符前开始插入
- a:在光标所在字符后开始插入
退出方式:ESC
实用功能
1.代码着色【默认显示】 “:syntax【语法】 off/on”
2.vim中计算器的使用【vim自身集成一个简易的计算器】
- 进入编辑模式
- 按下ctr+r 输入“=”号,光标会移动到最后一行
扩展
1.vim的配置(重点)
vim有三种情况:
- 末行模式下输入配置是临时的
- 个人配置文件(~/.vimrc) 【个人配置文件级别高于全局配置】
- 新建个人配置文件进行配置
- 在配置文件进行配置
- 全局配置文件(vim自带,/etc/vimrc)
异常退出
编辑文件后没有正常wq退出,而是直接关闭终端或者断电的情况,显示下面的效果,称为异常退出
解决办法:将交换文件【编辑过程中产生的临时文件】删除掉
#rm -f .出错的文件名.swp
别名机制
作用:相当于创建一些属于自己的指令
别名机制依靠一个别名映射文件【简单理解连线】:~/.bashrc
鲜艳的——》花朵
蓝蓝的——》 天空
eg:
- 进入.bashrc文件
- 写入别名
- 生效需重新登录当前账号
退出方式
vim中“:q" “:wq”
vim还支持另一个更高级的自动识别保存并退出":x"【小写推荐】
:X【是对文件进行加密】加密后:wq 解密:进入文件设置密码为空,保存【这时的保存要用:wq】
说明:
- “:x" 文件没修改直接退出,文件修改后保存并退出
- 如果文件没有被修改,使用“:wq",则文件时间会被更新【会混淆用户对文件修改时间的认定】,而“:x"不会