在Linux中,对文件内容的编辑莫过去vi命令了,它是每个发布版本中的标配。并且功能强大。

在vi中一共有三种模式,一般模式(命令参照),编辑模式(命令参照)与命令模式(命令参照)。

◇一般模式:当我们用vi打开一个文档的时候,就是一般模式了,这个时候,我们可以删除字符,删除行,也可以用上下左右来操作光标。也可以复制粘贴。

◇编辑模式:当在一般模式下按下【i, I, o, O, a, A, r, R】的时候,就进入编辑模式了。这个时候屏幕的最下方会出现【-- 插入 --】【-- 替换 --】(语言根据系统的设置可能会不一样)的提示信息。这个时候就可以编辑文本的内容了。按下[Esc]键即可以退出编辑模式。

◇命令模式:在一般模式下按下【:/?】三个字符中的任意一个,光标就会移动到最后一行,这就进入了命令模式。可以进行一些保存,退出,搜索,替换等等功能。

三种关系可以用下图来表示:

          (图片来自鸟哥的私房菜)

接下来就是体验一番吧。

通过 vi 文件名 的方式我们可以进入编辑该文件。如果该文件存在,则打开编辑,如果不存在则新建一个。

进入后,在最后一行提示,新文件表示,这是在新建一个文件。这个时候,我们就是处于一般模式。

但是由于文件中暂时还没有内容,所以,我们还不能移动光标到别的地方,或者删除行或者删除字符。

那,我们就先按[i],进入编辑模式。

可以看到,进入编辑模式后,最下面一行显示了[-- 插入 --]的提示信息。接下来就输入信息。(按回车键可以换行)。

输入完成之后,我们按[Esc]键回到一般模式。

这样我们就回到了一般模式,我们可以通过上下左右来移动光标,也可以试着用[x]键来删除字符。或者双击[d]键来删除行。

编辑完之后,接下来我们就应该要保存退出了。

这个时候我们就需要进入到命令模式,使用[:wq]来进入命令模式,并保存退出。

然后,回车,我们就可以保存退出了。

退出之后,我们用[ll]命令来查看,发现改文档已经建立起来了。

经过上面的一番体验之后,相信你是不是对vi的编辑已经略懂了呢,

是不是迫切的想知道还有什么命令呢?

别急,听我慢慢道来。

◇一般模式

[h]或[←]:光标向左移动一个字符

[j]或[↓]:光标向下移动一个字符

[k]或[↑]:光标向上移动一个字符

[l]或[→]:光标向右移动一个字符

但是一个一个的移动貌似有点效率非常的低,这时候我们可以使用【数字加命令】的方式来移动。

比如:30j:向下移动30行   10→:向右移动10个字符

[Ctrl] + [f] :屏幕向下移动一页,相当于[Page Down]

[Ctrl] + [b]:屏幕上移动一页,相当于[Page UP]

[Ctrl] + [d]:屏幕向下移动半页

[Ctrl] + [u]:屏幕向上移动半页

[+]:光标移动到非空格符的下一列

[-]:光标移动到非空格符的上一列

n<space>:n代表数字,按下数字后,在按空格,光标会向右移动到这一行的n个字符。

0或[home]:这个是数字0,表示移动到这一行的最前面字符处。

$或[End]:移动到这一行的最后面字符处。

[H]:光标移动到这个屏幕的最上方那一行的第一个字符。

[M]:光标移动到这个屏幕的中央那一行的第一个字符

[L]:光标移动到这个屏幕的最下方那一行的第一个字符。

[G]:移动光标到这个文件的最后一行。

[nG]:你表示数字,移动到这个文档的第n行

[gg]:移动到这个当好的第一行,相当于[1G]

[n<Enter>]:n表示数字,光标向下移动n行

□检索与替换命令

[/word]:向光标之下寻找一个名称为world的字符串

[?word]:向光标智商寻找一个名称为word的字符串

[n]:这个n是英文按键,代表重复前一个搜寻的动作,假如说你用[/name]来搜寻name之后,可以按[n]来继续查找下一个

[N]:这个和[n]相反,是用来查找上一个

[:n1,n2s/word1/word2/g]:n1和n2为两个数字,表示在n1和n2行之间寻找word1这个字符串,并将该字符串替换为word2

[:1,$s/word1/word2/g]:从第一行到最后一行寻找word1字符串,并替换为word2

[:1,$s/word1/word2/gc]:从第一行到最后一行寻找word1字符串,并替换为word2,且在替换之前显示提示字符,让用户来确认是否要替换。

□删除复制命令

[x,X]:在一行当中,[x]表示向后删除一个字符,相当于[del],[X]表示向前删除一个字符,相当于[backspace]

[nx]:n为数字,表示向后连续删除n个字符

[nX]:n为数字,表示向前连续删除n个字符

[dd]:删除游标所在的那一整行。

[ndd]:n为数字,删除光标所在的行向下n行

[d1G]:删除光标所在的行到第一行的所有数据(1G表示第一行)

[dG]:删除光标所在行到最后一行的所有数据

[d$]:删除光标所在处到改行的最后一个字符

[d0]:这个是数字0,删除光标所在处到该行的最前面一个字符

[yy]:复制游标所在的那一行

[nyy]:n为数字。复制光标所在行向下n行

[y1G]:复制游标所在行到第一行的所有数据

[yG]:复制游标所在行到最后一行的所有数据

[y0]:复制光标所在字符到行首的所有数据

[y$]:复制光标所在字符到行尾的所有数据

[p,P]:p为将已复制的数据在光标下一行贴上,P为贴在光标的上一行,

[J]:将光标所在行与下一行的数据结合成一行

[c]:重复删除多个数据,例如乡下删除10行[10cj]

[u]:复原前一个动作

[Ctrl + r]:重复上一个动作

[.]:这是个小数点,表示重复前一个动作  

◇编辑模式

在一般模式下按下面这些键就可以进入编辑模式。

[i,I]:进入插入模式,[i]为从光标所在处插入。[I]为在目前所在行的第一个非空格处开始插入

[a,A]:进入插入模式,[a]为从光标所在的下一个字符处开始插入,[A]为从光标所在行的最后一个字符处开始插入。

[o,O]:进入插入模式,[o]表示在目前光标所在的下一行处插入新的一行,[O]表示在目前光标所在处的上一行插入新的一行

[r,R]:进入替换模式,[r]表示取代光标所在的那一个字符一次,[R]会一直取代光标所在的文字,知道按下[Esc]为止。

[Esc]:退出编辑模式

◇命令模式

[:w]:保存,不退出

[:w!]:强制保存,即使权限是只读的时候,也写入

[:q]:退出vi

[:q!]:强制退出,比如有时我们修改了文档,又不想保存

[:wq]:保存并退出,[:wq!]表示强制保存并退出

[ZZ]:表似乎档案没有变动,则不储存离开,变动了,则存储离开

[:w filename]:将编辑的数据储存为另一个新的文档

[:r filename]:在编辑的数据中,读入另一个文档的数据,内容加到游标所在行的后面

[:n1,n2 w filename]:将n1到n2的内容储存到filename这个档案

[:! command]:暂时离开vi到指令列模式下执行command的显示结果。例如:[:! ls /home] 即可在vi中查看/home地下 ls的输出结果

[:set nu]:显示行号

[:set nonu]:取消显示行号

Centos常用命令之:VI的更多相关文章

  1. CentOS 常用命令大全

    下面,就给大家介绍这些CentOS常用命令. 一:使用CentOS常用命令查看cpu more /proc/cpuinfo | grep "model name" grep &qu ...

  2. CentOS常用命令备忘

    1. 查看进程 ps -a 杀掉进程 kill PID 2. 添加计划任务crontab -e 例如:30 21 * * * service httpd restart 每天21:30重启apache ...

  3. 第3章 CentOS常用命令

    一.CentOS常用命令 1.1 文件和目录 # cd /home                        进入 '/home' 目录 # cd ..                       ...

  4. centos常用命令

    应用程序->附件->终端 一:使用CentOS常用命令查看cpumore /proc/cpuinfo | grep "model name"   grep " ...

  5. CentOS常用命令大全

    一:使用CentOS常用命令查看cpumore /proc/cpuinfo | grep "model name" grep "model name" /pro ...

  6. CentOS 常用命令及快捷键整理

    常用命令: 文件和目录: # cd /home                        进入 '/home' 目录 # cd ..                                ...

  7. CentOS常用命令、快照、克隆大揭秘

    不多说,直接上干货! cat是查看文件内容, cp –cp是连目录及件文件都拷贝 cp是拷贝文件 a.txt里的内容是,   abc   def   ghi cat a.txt |grep –v gh ...

  8. Centos 常用命令[持续积累中...]

    CentOS常用到的查看系统命令 uname -a cat /etc/issue /sbin/ifconfig # 查看内核/操作系统/CPU信息 head -n 1 /etc/issue # 查看操 ...

  9. CentOS 常用命令大全(2)

    系统 # uname -a               # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue   # 查看操作系统版本 # cat /proc/cpuinf ...

随机推荐

  1. LeetCode-101.对称二叉树

    链接:https://leetcode-cn.com/problems/symmetric-tree/description/ 给定一个二叉树,检查它是否是它自己的镜像(即,围绕它的中心对称). 例如 ...

  2. 基于bootstrap的表格数据展示

    一.导入bootstrap文件 二.前端html代码 对应的是前台条件查询和js数据获取 js数据获取部分在第四段 三.后台数据 total为集合总数  int类型 rows为前台需要展示的数据集合 ...

  3. Python中安装模块的方法

    1.*nix系统上有一个地方专门有一个地方来放置安装的Python模块 比如在Mac上,这个目录的路径为: /usr/lib/python2.7 将要安装的文件拷贝到这里即可 2.下载模块包,解压后, ...

  4. 第七周PTA作业

    第一题: #include<stdio.h> int main() { ; ; ){ sum=sum+i; i++; } printf("sum = %d\n",sum ...

  5. 20162320刘先润第三周Bag类测试

    前言 以下内容是本周Bag代码的课后作业,要求是完成伪代码.产品代码和测试代码,为了书写方便我将伪代码以注释的形式写在了产品代码的后面 测试步骤 1.首先对Bag类引用BagInterface的代码进 ...

  6. Alpha冲刺第十一天

    Alpha冲刺第十一天 站立式会议 项目进展 项目进入尾声,主要测设工作完成过半,项目总结也开始进行. 问题困难 项目的困难现阶段主要是测试过程中存在一些"盲点"很难发现或者发现后 ...

  7. 详谈C++虚函数表那回事(一般继承关系)

    沿途总是会出现关于C++虚函数表的问题,今天做一总结: 1.什么是虚函数表: 虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的.简称为V-Table. ...

  8. 20145237 实验五《Java网络编程》

    20145237 实验五<Java网络编程> 一.实验内容 •1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: •2.利用加解密代码包,编译运行代码,一人加密,一人解密: •3 ...

  9. javabean 是什么?

    JavaBean规范 Bean的中文含义是“豆子”,顾名思义,JavaBean是指一段特殊的Java类, 就是有默然构造方法,只有get,set的方法的java类的对象. 专业点解释是: JavaBe ...

  10. 顺企网 爬取16W数据保存到Mongodb

    import requests from bs4 import BeautifulSoup import pymongo from multiprocessing.dummy import Pool ...