Linux下vi与vim命令使用与区别

简介: Linux下vi与vim命令使用与区别

【1】VI与VIM区别

它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。


vim的这些优势主要体现在以下几个方面:


① 多级撤消


我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。


② 易用性


vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。


③ 语法加亮


vim可以用不同的颜色来加亮你的代码。


④ 可视化操作


就是说vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。


⑤ 对vi的完全兼容


某些情况下,你可以把vim当成vi来使用。


vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本。vi使用于文本编辑,但是vim更适用于coding。


【2】VI命令

vi有3个模式


  • 命令行模式 (command mode/一般模式)
  • 文本输入模式 (input mode/编辑模式)
  • 末行模式 (last line mode/指令列命令模式)。

① 命令行模式 (command mode/一般模式)


任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式。我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。

 

在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。

② 文本输入模式 (input mode/编辑模式)

在命令模式下输入插入命令i(insert)、附加命令a(append)、打开命令o(open)、修改命令c(change)、取代命令r或替换命令s都可以进入文本输入模式。


在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按"ESC"键即可。

③ 末行模式 (last line mode/指令列命令模式)

末行模式也称ex转义模式。


Vi和Ex编辑器的功能是相同的,二者主要区别是用户界面。


在Vi中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。Vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。


在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。


多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。


【3】VIM命令

vim一共有4个模式:


  1. 正常模式 (Normal-mode)
  2. 插入模式 (Insert-mode)
  3. 命令模式 (Command-mode)
  4. 可视模式 (Visual-mode)


① 正常模式

启动vim后默认处于正常模式。不论位于什么模式,按下键(有时需要按两下)都会进入正常模式。


② 插入模式

在正常模式中按下i, I, a, A等键,会进入插入模式。

现在只用记住按i键会进行插入模式。在插入模式中,击键时会写入相应的字符。


③ 命令模式

在正常模式中,按下:(英文冒号)键,会进入命令模式。


在命令模式中可以执行一些输入并执行一些vim或插件提供的指令,就像在shell里一样。这些指令包括设置环境、文件操作、调用某个功能等等。

常用的命令有:q(退出)、q!(强制退出)、w(保存)、wq(保存并退出)。

④ 可视模式

在正常模式中按下v, V, +v,可以进入可视模式。

可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。

打开文件、保存、关闭文件(vim命令模式下使用)

命令的使用请先按ESC进入命令模式!

vim filename        //打开filename文件 
:w                  //保存文件 
:w vpser.net       //保存至vpser.net文件 
:q                //退出编辑器,如果文件已修改请使用下面的命令 
:q!              //退出编辑器,且不保存 
:wq            //退出编辑器,且保存文件 
:x        //退出编辑器,且保存文件 

插入文本或行(vim命令模式下使用,执行下面命令后将进入插入模式,按ESC键可退出插入模式)

a        //在当前光标位置的右边添加文本 
i       //在当前光标位置的左边添加文本 
A       //在当前行的末尾位置添加文本 
I      //在当前行的开始处添加文本(非空字符的行首) 
O      //在当前行的上面新建一行 
o     //在当前行的下面新建一行 
R     //替换(覆盖)当前光标位置及后面的若干文本 
J    //合并光标所在行及下一行为一行(依然在命令模式) 

⑤ VIM下解决文本格式问题

脚本文件保存时使用了DOS格式,Linux中可能会看到这样的错误:/bin/sh^M:损坏的解释器: 没有那个文件或目录


使用VIM命令,进入命令行模式,执行如下操作即可。

:set ff=unix
:wq

【4】VIM快捷键使用

① 删除光标当前行

正常模式下使用dd命令。

其他快捷键操作参考如下:

Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
Esc:从编辑模式切换到命令模式;
ZZ:命令模式下保存当前文件所做的修改后退出vi;
:行号:光标跳转到指定行的行首;
:$:光标跳转到最后一行的行首;
x或X:删除一个字符,x删除光标后的,而X删除光标前的;
D:删除从当前光标到光标所在行尾的全部字符;
dd:删除光标行正行内容;
ndd:删除当前行及其后n-1行;
nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;
p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;
?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;
a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;
a:在当前字符后添加文本;
A:在行末添加文本;
i:在当前字符前插入文本;
I:在行首插入文本;
o:在当前行后面插入一空行;
O:在当前行前面插入一空行;
:wq:在命令模式下,执行存盘退出操作;
:w:在命令模式下,执行存盘操作;
:w!:在命令模式下,执行强制存盘操作;
:q:在命令模式下,执行退出vi操作;
:q!:在命令模式下,执行强制退出vi操作;
:e文件名:在命令模式下,打开并编辑指定名称的文件;
:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
:set number:在命令模式下,用于在最左端显示行号;
:set nonumber:在命令模式下,用于在最左端不显示行号;

② vim快速替换文本

语法如下:

:[addr]s/源字符串/目的字符串/[option]

全局替换命令:

:%s/源字符串/目的字符串/g

s 表示替换操作,[addr] 表示检索范围,省略时表示当前行,如下实例:

"1,20" :表示从第1行到20行;
"%":表示整个文件,同"1,$";
". ,$" :从当前行到文件尾;

[option] : 表示操作类型:

g 表示全局替换; 
c 表示进行确认
p 表示替代结果逐行显示(Ctrl + L恢复屏幕);

省略option时仅对每行第一个匹配串进行替换;如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义 如 \t。


③ 撤销与恢复

撤销快捷键为u,在窗口模式下按u则会撤销上一步操作。

恢复撤销:Ctrl + r

④ 搜索与取消高亮


正常模式下,使用/会对输入的字符进行全局搜索并高亮显示:

这时使用n会跳到下一个匹配的字符处。但是关闭文件重新打开仍旧提示高亮,如何取消呢?命令模式下使用:noh命令,如下所示:



vim显示行号

命令行模式下(esc进入命令行模式),使用如下命令,然后回车

:set number


目录
相关文章
|
4天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
19 3
|
4天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
16 2
|
4天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
19 3
|
7天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
31 6
|
8天前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
21 7
|
8天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
21 4
|
7天前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
11 2
|
6月前
|
Linux Shell 开发工具
【linux】Linux编辑器-vim
【linux】Linux编辑器-vim
103 0
|
Linux 开发工具 数据安全/隐私保护
【Linux】软件包管理器yum和编辑器vim的使用(下)
【Linux】软件包管理器yum和编辑器vim的使用(下)
|
5月前
|
缓存 人工智能 Linux
【Linux】--- 详解Linux软件包管理器yum和编辑器vim
【Linux】--- 详解Linux软件包管理器yum和编辑器vim
90 0