首页 > 其他分享 >vi与vim的区别以及常用命令***

vi与vim的区别以及常用命令***

时间:2024-04-11 22:45:35浏览次数:24  
标签:vi 模式 vim 命令 输入 常用命令 光标

 

 

 

vi与vim的区别以及常用命令

发布于 2020-03-25 09:54:20 1.1K0 举报 文章被收录于专栏:挨踢小子部落阁

一、vi与vim的区别

1、多级撤消

在vi编辑器中,按u只能撤消上次命令,而在vim里可以无限制的撤消。

2、易用性

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

3、语法加亮

vim可以用不同的颜色来加亮你的代码。 如下两图对比: vi main.c

在这里插入图片描述vim main.c

在这里插入图片描述

4、可视化操作

vim不仅可以在终端运行,也可以运行于windows、 mac os、 windows。

5、对vi完全兼容

可以把vim当成vi来使用。

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

二、VI模式
1、命令行模式 (command mode/一般模式)

任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式;我们在shell环境(提示符为$)下输入启动vi命令,进入编辑器时,也是处于该模式下。 在该模式下,用户可以输入各种合法的vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,vi会响铃报警。

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

在命令模式下输入插入命令i(insert)、附加命令a (append)、打开命令o(open)、修改命令c(change)、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令行模式下,按”ESC”键即可。

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

末行模式也称转义模式。

vi和Ex编辑器的功能是相同的,二者主要区别是用户界面。在vi中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。

在命令模式下,用户按“:”键即可进入末行模式下,此时vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,vi自动回到命令模式。

三、VIM模式
1、正常模式 (Normal-mode)

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

2、插入模式 (Insert-mode)

在正常模式中按下i, a, o, I,A,O键,会进入插入模式。现在只用记住按i键会进行插入模式。在插入模式中,击键时会写入相应的字符。

3、命令模式 (Command-mode)

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

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

4、可视模式 (Visual-mode)

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

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

四、VI与VIM的常用命令

注:由于VI与VIM在命令上几乎相同,所以这里那VIM为例。

1、模式转换

正常-->输入:以下这几个参数实现的功能都是转为输入模式,只不过转换后的光标所在的位置不同(感兴趣可以试一试,虽然意义不大!)

i:在当前光标所在字符的前面,转为输入模式;
a:在当前光标所在字符的后面,转为输入模式;
o:在当前光标所在行的下方,新建一行,并转为输入模式;
I:在当前光标所在行的行首,转为输入模式;
A:在当前光标所在行的行尾,转为输入模式;
O:在当前光标所在行的上方,新建一行,并转为输入模式;
输入-->正常:
ESC
正常-->末行:
:(英文冒号)
末行-->正常:
ESC,ESC

注意:输入模式和末行模式之间不能直接切换。

2、关闭文件(末行模式)
:q        退出;
:q!        不保存退出;
:w        保存;
:w!        强行保存;
:wq        保存退出
:wq!        强制保存并退出 

注意:在正常模式下按组合键shift zz可以保存并退出

3、移动光标(正常模式)
1)逐字符移动:
        h: 左;

        l: 右;

        j: 下;

        k: 上;

        #h: 移动#个字符

2)以单词为单位移动
        w: 移至下一个单词的词首;

        e: 跳至当前或下一个单词的词尾;

        b: 跳至当前或前一个单词的词首;

        #w: 移动#个单词

3)行内跳转:
        0: 绝对行首;

        ^: 行首的第一个非空白字符;

        $: 绝对行尾

4)行间跳转
        #G:跳转至第#行;

        gg: 第一行;

        G:最后一行

5)末行模式
        .: 表示当前行;

        $: 最后一行;

        #:第#行;
        +#: 向下的#行 
4、翻屏(正常模式)
Ctrl+f: 向下翻一屏;
Ctrl+b: 向上翻一屏;
Ctrl+d: 向下翻半屏;
Ctrl+u: 向上翻半屏
5、复制字符
 1)正常模式

        复制:

        yy:复制当前行
        nyy:复制当前行至下面的n行

        粘贴:

        p:粘贴到光标的后面
        P:粘贴到光标的前面

2)可视模式

        复制:

        y:复制当前行
        ny:复制当前行至下面的n行

        粘贴:

        p:粘贴到光标的后面
        P:粘贴到光标的前面 
6、删除字符(正常模式)
x: 删除光标所在处的单个字符;
#x: 删除光标所在处及向后的共#个字符;
d$或D:从当前光标处删除至行尾;
d^:从当前光标处删除之行首;
dd: 删除当前光标所在行;
#dd: 删除包括当前光标所在行在内的#行; 

注:dd相当于剪切操作,如果你dd之后按p或者P可以进行粘贴。

7、替换字符
r:替换单个字符(按完r在按你要替换的字符即可)

R:替换多个字符(从你要替换的位置开始替换,直至你退出正常模式)
8、撤销编辑操作:u
u:撤消前一次的编辑操作;

#u:直接撤消最近#次编辑操作;

温馨提示:连续u命令可撤消此前的n次编辑操作;
9、将另外一个文件(/path/sunhui.txt)的内容填充在当前文件夹中
 :r   /path/sunhui.txt :填充到当前文件所在光标的后面

10、修改vim配置文件

vim   ~/.vimrc:修改当前用户的vim配置文件
vim    /etc/vimrc:修改所有用户的vim配置文件
例:在当前用户的vim配置文件中添加显示行数的命令
vim    ~/.vimrc:在末行添加 set nu 即可
11、拓展(末行模式)
1)显示或取消显示行号
:set    nu            //显示
:set    number    //显示
:set    nonu        //取消

2)设置语法高亮
:syntax    on    //开启
:syntax    off    //关闭

3)分屏
:vsp xxx.x    //将两个文件垂直分屏
:ctrl+w w   //切屏

注:该特性当前有效,如果想要永久有效需修改配置文件

END

 

https://cloud.tencent.com/developer/article/1604110

标签:vi,模式,vim,命令,输入,常用命令,光标
From: https://www.cnblogs.com/pengmn/p/18130177

相关文章

  • vite+xlsx-style表格导出样式设置报错
    项目是vite+vue3,前端表格导出,使用xlsx可以导出基本表格,但是想要设置表格样式,引入xlsx-style,安装依赖,后引入报错引用import { utils } from "xlsx"import { write } from "xlsx-style"Couldnotresolve"./cptable"node_modules/xlsx-style/dist/cpexce......
  • 【论文随笔】多行为序列Transformer推荐(Multi-Behavior Sequential Transformer Reco
    前言今天读的论文为一篇于2022年7月发表在第45届国际计算机学会信息检索会议(SIGIR'22)的论文,文章主要为推荐系统领域提供了一个新的视角,特别是在处理用户多行为序列数据方面,提出了一种有效的Transformer模型框架。要引用这篇论文,请使用以下格式:[1]Yuan,Enming,etal."Multi......
  • vim 用户相关
     vim#yuminstallvim-y#普通模式、编辑模式、命令模式#普通模式:-上下翻-yy复制一行-p粘贴-dd剪切-p把上面剪切的粘贴上#编辑模式-i:insert插入-a:append追加-o:换行-正常写就可以了-esc回到普通模式#......
  • 读论文-新闻推荐系统:近期进展、挑战与机遇的评述(News recommender system_ a review
    前言今天读的论文为一篇于2022年发表在"人工智能评论"(ArtificialIntelligenceReview)的论文,文章主要强调了NRS面临的主要挑战,并从现有技术中确定了可能的解决方案。引用这篇论文:[1]Raza,Shaina,andChenDing."Newsrecommendersystem:areviewofrecentprogress,c......
  • vue插件 vue-virtual-scroll-list解决数据量太大问题
    项目中数据量有时候过于庞大,使用elementui的Select组件时,会导致下拉框加载速度慢卡顿甚至于卡死,为解决这个问题,使用vue-virtual-scroll-list插件,模拟虚拟滚动。vue-virtual-scroll-list是vue的一个虚拟滚动组件,通过不渲染可视区域以外的内容,显示虚拟的滚动条来提升页面性能首先......
  • 关于git的上传远程仓库的常用命令总结
    我一般上传的步骤:(注意在那个文件夹下打开你要传送的项目)(1)gitinit(2)gitadd.(3)gitcommit-m"上传的项目"(4)与你需要的仓库建立连接gitremoteaddorigin(SSH/HTTPS)(5)gitpush-uoriginmaster/main出现发现远程仓库需要删除的文件下如何进行修改.........
  • Microsoft Wi-Fi Direct Virtual Adapter 是 Windows 操作系统中的一个虚拟网络适配器
    MicrosoftWi-FiDirectVirtualAdapter是Windows操作系统中的一个虚拟网络适配器,用于支持Wi-FiDirect功能。Wi-FiDirect是一种无需基础设施的连接技术,允许支持Wi-Fi的设备之间直接进行点对点连接,无需通过传统的Wi-Fi路由器或接入点。作用:直连功能: MicrosoftWi-......
  • 无监督多视角行人检测 Unsupervised Multi-view Pedestrian Detection
    无监督多视角行人检测UnsupervisedMulti-viewPedestrianDetection论文url:https://arxiv.org/abs/2305.12457论文简述该论文提出了一种名为UnsupervisedMulti-viewPedestrianDetection(UMPD)的新方法,旨在通过多视角视频监控数据准确地定位行人,而无需依赖于人工标注的视......
  • 常用命令
    maven安装jar包到本地库mvninstall:install-file-Dfile=swagger-codegen-2.4.20-SNAPSHOT.jar-DgroupId=io.swagger-DartifactId=swagger-codegen-Dversion=lyl-Dpackaging=jarjava打包为exeD:\Java\jdk-17.0.2\bin\jpackage-i./-nnote-book--type"msi"--......
  • CH582/CH592_EVT中RF_Device(从机)例程详解
    依旧以CH582例程做讲解,CH592与CH582接口部分一致,其他地方大同小异。RF_Device例程路径: 1、main函数初始化配置 2、RF参数初始化 3、上电后启动绑定回连任务  4、RF_DMA初始化  5、RF绑定回调任务  6、数据发送接口 7、定时器测试发送数据到对......