• 1、命令模式(command mode)—执行命令

      在该模式中,可以输入命令来执行许多种功能。控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

      2、输入模式(Insert mode)—输入文本

      vi被运行时,通常处在命令模式下,键入以下命令 可以使vi退出命令模式,进入输入模式:I(i)、A(a)、O(o)。

      3、末行模式(last line mode)—执行待定命令

      将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。不过一般我们在使用时把vi简化成两个模式,就是将末行模式(last line mode)也算入命令行模式command mode)。

vi编辑器的启动与退出

  •   1. vi的启动

      输入vi命令后,便进入全屏幕编辑环境,此时的状态为命令模式。

      (1) vi

      进入vi的一个临时缓冲区,光标定位在该缓冲区第1行第1列的位置上。

      (2) vi file1

      如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在该缓冲区第1行第1列的位置上。

      (3) vi + file1

      如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在文件最后1行第1列的位置上。

      (4) vi +N file1(N:为数字)

      如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在文件第N行第1列的位置上。

      (5) vi +/string file1

      如果file1文件不存在将建立此文件;如该文件存在则将其拷贝到一个临时缓冲区。光标定位在文件中第一次出现字符串string的行首位置。

      2. 退出vi(末行模式(last line mode))

      建议在退出vi前,先按ESC键,以确保当前vi的状态为命令方式,然后再键入“:”(冒号),输入下列命令,退出vi。

      (1) :w

      将编辑缓冲区的内容写入文件,则新的内容就替代了原始文件。这时并没有退出vi,必须进一步输入下述命令才能退出vi:

      :w filename(存入指定文件)

      :q

      (2) :wq

      即将上面的两步操作可以合成一步来完成,先执行w,后执行q。

      (3) :x和ZZ(注意: ZZ前面没有“:”)

      功能与(2)等价。

      (4) :q!(或:quit)

      强行退出vi,使被更新的内容不写回文件中。仅键入命令:q时,如vi发现文本内容已被更改,将提示用户使用“:quit”命令退出。

vi编辑器常用命令

  •   1、在文件中移动光标

      h:向左移动一个字符

      l:向右移动一个字符

      j:向下移动一行

      k:向上移动一行

      ^(即Shift+6):移动到当前行的开头处

      $(即Shift+4):移动到当前行的结尾处

      H(大写):使光标移动到屏幕的顶部

      M(大写):使光标移动到屏幕的中间

      L(大写):使光标移动到屏幕的底部

      Ctrl+b:上滚一屏。

      Ctrl+f:下滚一屏。

      Ctrl+d:下滚半屏。

      Ctrl+u: 上滚半屏。

      2、插入文本

      (1)添加:

      ●输入a后,在光标的右边插入文本

      ●输入A,在一行的结尾处添加文本

      (2)插入:

      ●通过在命令模式下输入i,在光标的左边插入文本

      ●通过在命令模式下输入I,在行首插入文本

      (3)插入新行:

      ●输入o,在当前光标位置下面打开一行

      ●输入O,在当前光标位置上面打开一行

      3、撤消更改

      (1)撤消前一个命令:在最后一个命令之后立即输入u来撤消该命令

      (2)重复某个命令:“.”

      (3)撤消对一行的更改:输入U来撤消你对一行所做的所有更改,这个命令只有在你没将光标移动到该行以外时才生效。

      4、删除文本

      (1)删除一个字符:

      ●为删除一个字符,需将光标放置在要删除的字符上并输入x

      ●为删除光标之前(其左边)的一个字符,需输入X

      (2)删除一个词或词的部分内容:

      ●为删除一个词,需将光标放置到该词的开头并输入dw

      ●为删除词的部分内容,需将光标放置到该词要保存部分的右边。输入dw来删除该词余下的部分

      (3)删除一行:将光标放置到该行的任意处并输入dd

      (4)删除多行:ndd

      (5)删除行的部分内容:将光标放置到该行要保存部分的右边,并输入D。为删除光标左边的所有内容,须将光标放置到该行要删除部分的右边,并输入d0(d-零)。

      (6)删除到文件的结尾:为删除从当前行到文件结尾的所有内容,需输入dG

      5、复制和移动文本

      ●复制一行命令:yy

      ●粘贴命令:p

      ●移动文本:先将要移动的部分用删除命令删除,然后再粘贴就可以了

      ●复制指定文件的内容

      : r filename

      6、查找一个字符串

      ●输入/,并在/后面输入要查找的串,然后按下回车

      ●输入“n”跳转到该串的下一个出现处

      ●输入“N”跳转到该串的上一个出现处

      7、替换一个字符串

      ●在一行内替换头一个字符串old为新的字符串new

      :s/old/new

      ●在一行内替换所有的字符串old为新的字符串new

      :s/old/new/g

      ●在两行内替换所有的字符串old为新的字符串new

      :#,#s/old/new/g

      ●在文件内替换所有的字符串old为新的字符串new

      :%s/old/new/g

      ●进行全文替换时询问用户确认每个替换需添加c选项

      :%s/old/new/gc

      8、设置vi

      ●显示行号

      :set number

      ●取消行号显示

      :set nonumber

      ●设置显示用户模式

      :set showmode

      ●设置文件只读

      :set readonly

vi编辑器的三种模式的更多相关文章

  1. 文本编辑器vim——三种模式、显示行号、插入命令、行快速定位、行内定位

    1.vim的三种工作模式: (1)利用vim命令新建文件: 点击entre键执行命令后,开始向文本中输入想要写入的内容: (2)命令行模式(ESC): 不管用户处于何种模式,只要单击Esc键,即可进入 ...

  2. LINUX中,Vi编辑器的几种模式及保存、退出等命令

    vi编辑器有三种模式: 命令模式,编辑模式,末行模式 打开vi后首先是命令模式,用i,o,a等进入编辑模式,按esc退出编辑模式,回到命令模式. 在命令模式下输入:wq表示保存退出,:wq!强制保存退 ...

  3. Linux之vi三种模式常用操作

    vi的三种模式:命令模式.编辑模式.尾行模式 一.命令模式 1.光标移动 a.字符级 左(h) 下(j) 上(k) 右(l) b.单词级 w word移动到下个单词首字母 b before上个单词首字 ...

  4. vi/vim 三种模式的操作

    来源:http://www.runoob.com/linux/linux-vim.html ps:刚刚进入vi/vim 是命令模式 一.命令模式 i 切换到输入模式,以输入字符. x 删除当前光标所在 ...

  5. vi三种模式的切换

    基础上vi/vim共分为三种模式,分别是命令模式,输入模式和底线命令模式. 一.命令模式 用户刚刚启动vi/vim,便进入了命令模式. 在此状态下敲击键盘动作会被vim识别为命令,而非输入字符.比如我 ...

  6. vim(vi)下的三种模式及其相关命令

    vim(vi)下的三种模式1.命令行模式 2.末行模式 3.插入模式 三种模式的联系及其相互转换 在我们输入vi命令进入编写程序的页面后,我们看到的是命令行模式,在我们输入“a”.“i”.“o”.“O ...

  7. linux中vim编辑器三种模式及常用命令的使用

    Linux命令经常使用才会烂熟于心 命令行模式: 移动光标: 向下左右箭头可以移动光标: 将光标移动到行尾:$; 将光标移动到行头:^: 将光标移动到页尾:shift+g; 将光标移动到页头:1+sh ...

  8. 辛星跟您玩转vim第一节之vim的下载与三种模式

    首先值得一提的是,我的vim教程pdf版本号已经写完了,大家能够去下载,这里是csdn的下载地址:点此下载 ,假设左边的下载地址挂掉了,也能够自行在浏览器以下输入例如以下地址进行下载:http://d ...

  9. VIM 三种模式和常用命令

    引言 大数据开发工作中,周围的同事不是用 VIM 就是 Emacs,你要是用 UltraEdit 或 notepad++ 都不好意思跟人家打招呼...什么插件呀.语法高亮呀.拼写检查呀,能给它开的都给 ...

随机推荐

  1. UITableViewCell 高度计算从混沌初始到天地交泰

    [原创]UITableViewCell 高度计算从混沌初始到天地交泰 本文主要基予iOS UITableViewCell 高度自适应计算问题展开陈述,废话少说直入正题: UITableView控件可能 ...

  2. Java多线程同步代码块

    /*多线程的安全问题1.为什么会出现安全问题?因为程序在运行时,会出现一个线程在判断条件满足后,具备了执行资格,但没有运行代码后一个线程也判断了条件,也具备了执行资格,后一个线程运行了代码,但这时候, ...

  3. 懒人记录 Hadoop2.7.1 集群搭建过程

    懒人记录 Hadoop2.7.1 集群搭建过程 2016-07-02 13:15:45 总结 除了配置hosts ,和免密码互连之外,先在一台机器上装好所有东西 配置好之后,拷贝虚拟机,配置hosts ...

  4. hibernate的dao操作不能提交到数据库问题的解决

    刚学的时候总是各种错误,解决方法也无厘头的很 将UserDAO里面的的save方法修改try { getSession().save(transientInstance); log.debug(&qu ...

  5. 虚拟机单一网卡设置两个IP

    一.在虚拟机里修改虚拟网卡配置 cd /ect/sysconfig/network-scripts/ vi ifcfg-eth0 改BOOTPROTO=static cp ifcfg-eth0 ifc ...

  6. Shell/Bash 变量/variable 循环/loop

    如何在bash脚本里面进行循环 #!/bin/bash n=9999 for(( i =1; i<=100;i++)) do /root/testProgram $n sleep 5 n=$(( ...

  7. hdu 1063 Exponentiation (高精度小数乘法)

    //大数继续,额,要吐了. Problem Description Problems involving the computation of exact values of very large m ...

  8. 关于JSON对象,以及联合数组,eval函数的使用参考

    关于JSON对象,以及联合数组,eval函数的使用参考 var json="{persons:[{name:'Zhangsan',sex:'male'},{name:'Lisi',sex:' ...

  9. SQL 字符替换

    --匹配所有字符替换 )),'被替换','替换') --匹配给定位子替换 update 表名 set 列=stuff(列名,从一开始数位数,往后数几位,替换)

  10. Javascript中setTimeout和setInterval的区别和使用

    在javascript中,window对象有两个主要的定时方法,分别是setTimeout 和 setInterval,其语法基本上相同,但是完成的功能取有区别. setTimeout方法是定时程序, ...