前言
在Linux 平台经常会遇到需要在平台里面编辑文件,甚至是写代码的需求,本文介绍VI编辑器的常用用法,应用工具更加快捷方便。
一、VI编辑器和VIM编辑器
vi(Visual Editor):
是 Unix/Linux 系统自带的 经典文本编辑器,诞生于 1976 年(Bill Joy 开发)。功能简单,是早期系统的标配。
Vim(Vi IMproved):
是 vi 的 增强版,由 Bram Moolenaar 在 1991 年开发,继承了 vi 的操作方式,但扩展了大量功能(如语法高亮、多窗口、插件系统等)。
注意:由于VI编辑器是系统自带的工具,本文主要针对VI编辑器功能说明,VI的操作和VIM是一样的,VI有的功能VIM也有。
二、使用说明
1. 三种工作模式
Vi 工具有三种工作模式,在这三种工作模式里面包含了Vi的所有用法。
- 插入模型(编辑模式):在此模式可以对文本编辑
- 命令行模式(默认模式):不可编辑,但是可以复制粘贴,进入编辑模式后按ESC键回到命令行模式
- 底行模式:光标在底行,通常通过:+ 命令,可以进行文本的搜索,保存,退出。‘
2. 常见使用场景
- 编辑模式
- i : 推荐使用,在光标位置开始编辑
- I : 在光标位置所有的一行,第一个位置开始编辑
- a: 推荐使用,在光标位置后退一个位置开始编辑
- A:在光标位置所有行最后一个位置开始编辑
- O:在光标位置前面一行开始编辑
- o :推荐使用,在光标位置下一行开始编辑
注意:通常 i 进入编辑模式就已经够了,然后 o 进入光标新起一行开始编辑也是比较实用的。
- 命令行模式
通常默认就是命令行模式,推荐习惯性的使用命令行模式先按下ESC键,它的特点是输入即使生效,不用回车。然后开始执行如下命令
- dd : 删除当前光标所在行
- x: 删除光标后的字符
- 5x: 删除光标后的5个字符(数字可以变)
- D :删除光标后的所有字符
- 5dd: 删除 5 行 (数字可以变,从光标以下开始删除)
- u: 撤销(undo)
- yy: 复制当前行
- 5yy: 复制5行,同样数字可以变得。
- p: 粘贴(从光标下一行开始粘贴)
- O/o: 在上面或下方插入新空行(会进入编辑模式)
- h/j/k/l :上下左右移动光标
- w/b : 在一行里面按单词左右移动,提高移动光标的效率
- 0/ $ : 数字0跳到行首,$ 跳到行尾
- gg/G : 跳到整篇代码的行首和最后一行
- 18gg : 跳到第18行(在debug错行比较实用)
- Ctrl + u / Ctrl + d : 上翻页和下翻业
- J : 合并当前行和下一行
- 底行模式
底行模式在命令模式通过:
字符输入命令,通常命令更加复杂一些。
文件操作:
- :!+ linux命令 :这个用来编辑的同时和系统交互,同时查看系统信息
- :w 保存文件
- :q 退出
- :w!/q! 强制保存,强制退出(在只读权限时候使用)
- :wq (或者:x)保存退出,这个较为常用,编辑完成后保存退出
- :wq! 强制保存退出
- :w <文件名> 另存为新的文件
- :e <文件名> 打开新文件编辑
- :e! 重新加载,重置,放弃更改
工具和复制:
- :n 跳转到第n行。
- :$ 跳转到最后一行
- :set number (set nu) 显示行号
- :set nonu 隐藏行号
- :m,n co k 将m 到第n行 复制到第 k行后
- :m,n d删除第m到第n行
- :%d 删除全部内容
- :%y 复制全部,通过p粘贴
搜索和替换:
- :/words 向下搜索(n 跳转到下一个)
- :?words 向上搜索
- :%s/old/new/gc 全局替换,old为new, 替换时候询问
- :%s/old/new/g 将old替换为new, 不询问
总结
以上用法已经基本满足平时对vi编辑器的使用了,如果用vi来写代码,可能需要修改缩进问题。
编辑 ~/.vimrc 文件(没有则新建):
" 通用缩进设置
set tabstop=4 " Tab 显示为 4 个空格
set shiftwidth=4 " 自动缩进宽度为 4
set expandtab " Tab 转空格
set autoindent " 自动继承缩进
set smartindent " 智能缩进
" 文件类型特定缩进(可选)
autocmd FileType python setlocal tabstop=4 shiftwidth=4 expandtab
autocmd FileType javascript setlocal tabstop=2 shiftwidth=2 expandtab