文章目录
01. `vi` 简介1.1 `vi` 的作用1.2 vi 和 vimvi`vim`查询软连接命令(知道)02. 打开和新建文件2.1 打开文件并且定位行2.2 异常处理03. 三种工作模式末行模式命令04. 常用命令命令线路图学习提示4.1 移动(基本)1) 上、下、左、右2) 行内移动3) 行数移动4) 屏幕移动4.2 移动(程序)1) 段落移动2) 括号切换3) 标记4.3 选中文本(可视模式)4.4 撤销和恢复撤销4.5 删除文本4.6 复制、粘贴4.7 替换4.8 缩排和重复执行4.9 查找常规查找单词快速匹配4.10 查找并替换1) 全局替换2) 可视区域替换3) 确认替换4.11 插入命令演练 1 —— 编辑命令和数字连用演练 2 —— 利用 可视块 给多行代码增加注释05. 分屏命令5.1 末行命令扩展5.2 分屏命令1) 切换分屏窗口2) 调整窗口大小06. 常用命令速查图vimrc01.vi
简介
在没有图形界面的环境下,要编辑文件,vi
是最佳选择!每一个要使用 Linux 的程序员,都应该或多或少的学习一些vi
的常用命令
1.1vi
的作用
在工作中,如果要对服务器上的文件进行简单的修改,但是如果对vi的使用不熟悉就麻烦了这里笔者按照自己的学习过程和资料进行分享。这时候可以使用ssh
远程登录到服务器上,并且使用vi
进行快速的编辑即可。常见需要修改的文件包括:源程序配置文件,例如ssh
的配置文件~/.ssh/config
1.2 vi 和 vim
在很多Linux
发行版中,直接把vi
做成vim
的软连接vi
vi
是Visual interface
的简称,是Linux
中最经典的文本编辑器vi
的核心设计思想 ——让程序员的手指始终保持在键盘的核心区域,就能完成所有的编辑操作vi
的特点:没有图形界面的功能强大的编辑器只能是编辑文本内容,不能对字体、段落进行排版不支持鼠标操作没有菜单只有命令vi
编辑器在系统管理、服务器管理编辑文件时,其功能永远不是图形界面的编辑器能比拟的
vim
vim = vi improved
vim
是从vi
发展出来的一个文本编辑器,支持代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,被称为编辑器之神
查询软连接命令(知道)
在很多Linux
发行版中直接把vi
做成vim
的软连接# 查找 vi 的运行文件$ which vi$ ls -l /usr/bin/vi$ ls -l /etc/alternatives/vi$ ls -l /usr/bin/vim.basic# 查找 vim 的运行文件$ which vim$ ls -l /usr/bin/vim$ ls -l /etc/alternatives/vim$ ls -l /usr/bin/vim.basic
02. 打开和新建文件
在终端中输入vi
在后面跟上文件名即可$ vi 文件名
如果文件已经存在,会直接打开该文件如果文件不存在,会新建一个文件
2.1 打开文件并且定位行
在日常工作中,有可能会遇到打开一个文件,并定位到指定行的情况
例如:在开发时,知道某一行代码有错误,可以快速定位到出错代码的位置
这个时候,可以使用以下命令打开文件
$ vi 文件名 +行数
提示:如果只带上
+
而不指定行号,会直接定位到文件末尾
2.2 异常处理
如果vi
异常退出,在磁盘上可能会保存有````交换文件下次再使用vi
编辑该文件时,会看到以下屏幕信息,按下字母d
可以删除交换文件即可提示:按下键盘时,注意关闭输入法
03. 三种工作模式
vi
有三种基本工作模式:
命令模式打开文件首先进入命令模式,是使用vi
的入口通过命令对文件进行常规的编辑操作,例如:定位、翻页、复制、粘贴、删除……在其他图形编辑器下,通过快捷键或者鼠标实现的操作,都在命令模式下实现末行模式—— 执行保存、退出等操作 要退出vi
返回到控制台,需要在末行模式下输入命令末行模式是vi
的出口编辑模式—— 正常的编辑文字
提示:在
Touch Bar
的 Mac 电脑上 ,按ESC
不方便,可以使用CTRL + [
替代
末行模式命令
04. 常用命令
命令线路图
重复次数 在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行指定次数移动和选择(多练)vi
之所以快,关键在于能够快速定位到要编辑的代码行移动命令能够 和编辑操作命令组合使用编辑操作删除、复制、粘贴、替换、缩排撤销和重复查找替换编辑学习提示
vi
的命令较多,不要期望一下子全部记住,个别命令忘记了,只是会影响编辑速度而已在使用vi
命令时,注意关闭中文输入法4.1 移动(基本)
要熟练使用vi
,首先应该学会怎么在命令模式下样快速移动光标编辑操作命令,能够和移动命令结合在一起使用1) 上、下、左、右
2) 行内移动
3) 行数移动
4) 屏幕移动
4.2 移动(程序)
1) 段落移动
vi
中使用 空行 来区分段落在程序开发时,通常一段功能相关的代码会写在一起—— 之间没有空行2) 括号切换
在程序世界中,()
、[]
、{}
使用频率很高,而且都是成对出现的3) 标记
在开发时,某一块代码可能需要稍后处理,例如:编辑、查看此时先使用m
增加一个标记,这样可以在需要时快速地跳转回来或者执行其他编辑操作标记名称可以是a~z
或者A~Z
之间的任意一个字母添加了标记的行如果被删除,标记同时被删除如果在其他行添加了相同名称的标记,之前添加的标记也会被替换掉4.3 选中文本(可视模式)
学习复制
命令前,应该先学会怎么样选中 要复制的代码在vi
中要选择文本,需要先使用Visual
命令切换到可视模式vi
中提供了三种可视模式,可以方便程序员选择选中文本的方式按ESC
可以放弃选中,返回到命令模式可视模式下,可以和移动命令连用,例如:ggVG
能够选中所有内容4.4 撤销和恢复撤销
在学习编辑命令之前,先要知道怎样撤销之前一次错误的编辑动作!4.5 删除文本
删除命令可以和移动命令连用,以下是常见的组合命令:提示:如果使用可视模式已经选中了一段文本,那么无论使用
d
还是x
,都可以删除选中文本
* dw # 从光标位置删除到单词末尾* d0 # 从光标位置删除到一行的起始位置* d} # 从光标位置删除到段落结尾* ndd # 从光标位置向下连续删除 n 行* d代码行G # 从光标所在行 删除到 指定代码行 之间的所有代码* d'a # 从光标所在行 删除到 标记a 之间的所有代码
4.6 复制、粘贴
vi
中提供有一个被复制文本的缓冲区复制命令会将选中的文字保存在缓冲区删除命令删除的文字会被保存在缓冲区在需要的位置,使用粘贴命令可以将缓冲区的文字插入到光标所在位置提示
命令d
、x
类似于图形界面的剪切操作——CTRL + X
命令y
类似于图形界面的复制操作——CTRL + C
命令p
类似于图形界面的粘贴操作——CTRL + V
vi
中的文本缓冲区同样只有一个,如果后续做过复制、剪切操作,之前缓冲区中的内容会被替换
注意
vi
中的文本缓冲区和系统的剪贴板不是同一个所以在其他软件中使用CTRL + C
复制的内容,不能在vi
中通过P
命令粘贴可以在编辑模式下使用鼠标右键粘贴
4.7 替换
R
命令可以进入替换模式,替换完成后,按下ESC
可以回到命令模式替换命令的作用就是不用进入编辑模式,对文件进行轻量级的修改4.8 缩排和重复执行
缩排命令在开发程序时,统一增加代码的缩进比较有用! 一次性在选中代码前增加 4 个空格,就叫做增加缩进一次性在选中代码前删除 4 个空格,就叫做减少缩进在可视模式下,缩排命令只需要使用一个>
或者<
在程序中,缩进通常用来表示代码的归属关系
前面空格越少,代码的级别越高前面空格越多,代码的级别越低
4.9 查找
常规查找
查找到指定内容之后,使用Next
查找下一个出现的位置:n
: 查找下一个N
: 查找上一个 如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可单词快速匹配
在开发中,通过单词快速匹配,可以快速看到这个单词在其他什么位置使用过4.10 查找并替换
在vi
中查找和替换命令需要在末行模式下执行记忆命令格式::%s///g
1) 全局替换
一次性替换文件中的所有出现的旧文本命令格式如下::%s/旧文本/新文本/g
2) 可视区域替换
先选中要替换文字的范围命令格式如下::s/旧文本/新文本/g
3) 确认替换
如果把末尾的g
改成gc
在替换的时候,会有提示!推荐使用!:%s/旧文本/新文本/gc
y
-yes
替换n
-no
不替换a
-all
替换所有q
-quit
退出替换l
-last
最后一个,并把光标移动到行首^E
向下滚屏^Y
向上滚屏
4.11 插入命令
在vi
中除了常用的i
进入编辑模式外,还提供了以下命令同样可以进入编辑模式:演练 1 —— 编辑命令和数字连用
在开发中,可能会遇到连续输入N
个同样的字符例如:在
Python
中有简单的方法,但是其他语言中通常需要自己输入
**********
连续 10 个星号要实现这个效果可以在命令模式下
输入10
,表示要重复 10 次输入i
进入编辑模式输入*
也就是重复的文字按下ESC
返回到命令模式,返回之后vi
就会把第2、3
两步的操作重复10
次
提示:正常开发时,在进入编辑模式之前,不要按数字
演练 2 —— 利用 可视块 给多行代码增加注释
在开发中,可能会遇到一次性给多行代码增加注释的情况在
Python
中,要给代码增加注释,可以在代码前增加一个#
要实现这个效果可以在命令模式下
移动到要添加注释的第 1 行代码,按^
来到行首按CTRL + v
进入可视块模式使用j
向下连续选中要添加的代码行输入I
进入编辑模式,并在行首插入,注意:一定要使用I输入#
也就是注释符号按下ESC
返回到命令模式,返回之后vi
会在之前选中的每一行代码前插入#
05. 分屏命令
属于vi
的高级命令 —— 可以同时编辑和查看多个文件5.1 末行命令扩展
末行命令主要是针对文件进行操作的:保存、退出、保存&退出、搜索&替换、另存、新建、浏览文件
已经学习过的末行命令:提示:切换文件之前,必须保证当前这个文件已经被保存!
在实际开发中,可以使用
w
命令阶段性的备份代码
5.2 分屏命令
使用分屏命令,可以同时编辑和查看多个文件1) 切换分屏窗口
分屏窗口都是基于
CTRL + W
这个快捷键的,w
对应的英文单词是window
2) 调整窗口大小
分屏窗口都是基于
CTRL + W
这个快捷键的,w
对应的英文单词是window
调整窗口宽高的命令可以和数字连用,例如:
5 CTRL + W +
连续 5 次增加高度
06. 常用命令速查图
vimrc
vimrc
是vim
的配置文件,可以设置 vim 的配置,包括:热键、配色、语法高亮、插件等Linux
中vimrc
有两个位置,家目录下的配置文件优先级更高/etc/vim/vimrc~/.vimrc
常用的插件有: 代码补全代码折叠搜索Git 集成…… 针对vimrc
文件的配置及说明,这里笔者给大家提供了笔者使用的配置《vi编辑器——linux、mac环境中vimrc的位置及常用配置小记》。