linux(五)之vi编译器

前面介绍了linux的常用命令和对文本的操作,接下来我将对大家领略一下vi编译器的强大功能。 希望大家觉得写的还不错的话可以点个“推荐”哦!

一、vim/vi编译器简介

Vim/Vi是一个功能强大的全屏幕文本编译器(Full Screen Text Editor),是Linux平台上最常用的文本编译器

用于建立、编辑、显示文本文件(linux平台下的编程平台)主要用来进行一些脚本程序的编写

二、vim/vi的三种工作模式

1.1、编辑模式(命令模式)

Vi在初始启动后首先进入编辑模式,这时用户可以利用一些预先定义的按键来移动光标、删除文字、复制或粘贴文字等。这些按键均是普通的字符,

  例如l是向右移动光标,相当于向右箭头键,k是向下移动光标,相当于向下箭头键。在编辑模式下,用户还可以利用一些特殊按键选定文字,然后再进行删除、或复制等操作。

1.2、插入模式(输入模式)

  当用户在编辑模式下键入i/a/o等命令之后,可进入插入模式。在该模式下,用户随后输入的,除Esc之外的任何字符均将被看成是插入到编辑缓冲区中的字符。按Esc之后,从插入模式切换到编辑模式。

1.3、命令模式(底线命令模式)

  在插入模式下,键入":"可进入命令模式。在命令模式,Vi将把光标挪到屏幕的最下方,并在第一个字符的位置显示一个“:”(冒号)。这时,用户就可以键入一些命令。

  这些命令可用来保存文件、读取文件内容、执行 Shell 命令、设置Vi参数、以正则表达式的方式查找字符串或替换字符串等。

三、vim/vi编译器的简单使用

3.1、vi启动

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

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

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

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

 3.2、退出vi  

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

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

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

:x和ZZ(注意:ZZ前面没有“:”)功能与“:wq”等价。

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

四、Vi编译器常用的命令

 3.1、在文件中移动光标

  • h:向左移动一个字符
  • l:向右移动一个字符
  • k:向上移动一行
  • j:向下移动一行
  • ^(即Shift+6):移动到当前行的开头处
  • $(即Shift+4):移动到当前行的结尾处
  • H(大写):使光标移动到屏幕的顶部
  • M(大写):使光标移动到屏幕的中间
  • L(大写):使光标移动到屏幕的底部
  • Ctrl+b:上滚一屏。
  • Ctrl+f:下滚一屏。
  • Ctrl+d:下滚半屏。
  • Ctrl+u: 上滚半屏。

3.2、插入文本

3.2.1、添加  

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

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

 3.2.2、插入

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

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

3.2.3、插入新行

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

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

3.3、撤销更改

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

    重复某个命令:“.”

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

3.4、删除文本

3.4.1、删除一个字符

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

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

 3.4.2、删除一个词或词的部分内容

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

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

    3.4.3、删除1行

      将光标放置到该行的任意处并输入dd;删除多行:ndd

    3.4.4、删除行的部分内容

      光标放置到该行要保存部分的右边,并输入D。

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

    3.4.5、删除到文件的结尾

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

 3.5、复制和移动文本

  • 复制一行命令:yy
  • 粘贴命令:p
  • 移动文本:先将要移动的部分用删除命令删除,然后再粘贴就可以了
  • 复制指定文件的内容(使用底行模式)::r filename

  3.6、查抄一个字符串

  • 输入/,并在/后面输入要查找的串,然后按下回车
  • 输入“n”跳转到该串的下一个出现处
  • 输入“N”跳转到该串的上一个出现处

 3.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(需按两次回车)

 3.8、设置vi

  • 显示行号:set number(nu)
  • 取消行号显示:set nonumber(nonu)
  • 设置文件只读:set readonly

更多关于vi编辑器的内容,请参见:http://www.dwz.cn/6pTuTA

觉得 小编还不错的话,点个“推荐”哦!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术

关闭Eclipse的控制台console自动跳出

  但我们在做开发的时候,默认情况下eclipse的控制台如果有东西输出时,会默认由最小化跳出来,有时候会感觉很烦人,怎么解决这个问题呢?

1003
来自专栏WeaponZhi

Python爬虫入门(二)

上一篇文章大概的讲解了 Python 爬虫的基础架构,我们对 Python 爬虫内部运行流程有了一定的理解了,我们这节将用一些简单的 Python 代码实现Py...

4136
来自专栏喵了个咪的博客空间

[Golang软件推荐] Golang通用连接池

连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrif...

46413
来自专栏琦小虾的Binary

程序生成之编译、链接、加载浅析

程序生成之编译、链接、加载浅析 最近笔者看论文烦得慌,便又重新拾起之前没有完全完成的交叉编译,准备在网上找资料,好好研究一下。 讲道理,笔者其实对编译链接的...

2916
来自专栏Golang语言社区

Golang通用连接池

连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrif...

1464
来自专栏破晓之歌

JS中各种对象数据的读写格式(含vue例子)待整理

1.Javascript 对象(object)合并:https://www.cnblogs.com/yes-V-can/p/5631645.html

661
来自专栏叁金大数据

自学Python四 爬虫基础知识储备

  首先,推荐两个关于python爬虫不错的博客:Python爬虫入门教程专栏   和 Python爬虫学习系列教程 。写的都非常不错,我学习到了很多东西!在此...

1071
来自专栏DHUtoBUAA

【持续更新】.Net 开发中给自己埋下的坑!

1、文件“XXX”正在由另一进程使用,因此该进程无法访问此文件。 原因剖析:文件在主线程操作,在子线程中读写操作文件,刚开始没有意识到程序的问题所在,总是在Fi...

2974
来自专栏前端儿

Node.js起步 -- (1)

  我们知道JavaScript是运行在浏览器中的,浏览器为它提供了一个上下文(context),从而让JavaScript得以解析执行。

1622
来自专栏ytkah

laravel项目thinksns-plus安装出现RuntimeException Symlink from * to * failed错误

  今天ytkah安装thinksns-plus的laravel项目时出现了一个错误,提示如下,这个可能跟php函数被禁用有关,查看了一下安装文档,有一项php...

611

扫码关注云+社区

领取腾讯云代金券