linux杂记(⑨)vi使用说明
基本上vi共分为三种模式,分别是【一般模式】】、【编辑模式】与【指令列命令模式】。
这三种模式的作用是:
- 一般模式:以vi处理一个档案的时候,一进来该档案就是一般模式。在这个模式中,你可以使用【上下左右】按键来移动光标,你可以使用【删除字符】或【删除整行】来处理档案内容,也可以使用【复制】粘贴】来处理你的文件数据
- 编辑模式:在一般模式中可以处理删除、复制、粘贴等等的动作,但却无法编辑。要等你按下[i、I、o、O、a、A、r、R]等字母之后才会进入编辑模式。通常在linux中,按下上述的字母时,在画面的左下方会出现[INSERT或REPLACE]的字样,才可以输入任何字来输入的你的档案中。而如果要回到一般模式,则要按下[Esc]这个按键即可退出编辑模式。
- 指令列命令模式:在一般模式中,输入[:或/或?]就可以将光标移动到最底下那行,在这个模式当中,可以提供给你【搜寻资料】的动作,而读取、存盘、大量取代字符、离开vi、显示行号等等的动作则是在此模式中达成的!
首先先来一个简易执行范例
1.使用vi进入一般模式
[root@linux ~]# vi test.txt

直接输入【vi 档名】即可进入vi。如上所示,左下角会显示这个档案目前的状态。如果是新建档案会显示[New File],如果是已经存在的档案,则会显示目前的文件名、行数与字符数,例如:["/etc/man.config"145L,4614C]
2.按下i进入编辑模式
在一般模式中,只要按下I,o,a等字符,就可以进入编辑模式。在编辑模式下,你可以发现左下角会出现-- INSERT --的提示符。如下图,

在这个时候,键盘上除了[Esc]按键之外,其它按键都可以视为一般的输入按钮。(注:在vi里面,[tab]这个按钮所得到的结果与空格符所得到的结果是不同的!)
3.按下[Esc]回到一般模式
4.在一般模式中按下:wq储存后离开vi
输入[:wq]即可存档离开。(注意,按下:该光标就会移动到最底下一行。)这是你在提示符后面输入[ls -l]即可看到我们刚刚建立的test.txt档案。
如此一来,test.txt已经建立起来了。需要注意的是,如果档案权限不对,例如是-r--r--r--时,那么可能无法写入。可是这时候可以使用[:wq!]强制写入的方式。不过要特别注意的是,那个是在[你的权限可以改变]的情况下才能成立。
| 一般模式:移动光标的方法 | |
| h 或←(方向键) | 光标向左移动一个字符 |
| j 或↓(方向键) | 光标向下移动一个字符 |
| k 或↑(方向键) | 光标向上移动一个字符 |
| l 或→(方向键) | 光标向右移动一个字符 |
| 如果想要进行多次移动,例如向下移动30行,可以使用"30j"或"30↓"的组合按键 | |
| [Ctrl]+[f] | 屏幕【向下】移动一页,相当于[Page Down]按键 |
| [Ctrl]+[b] | 屏幕【向上】移动一页,相当于[Page Up]按键 |
| [Ctrl]+[d] | 屏幕【向下】移动半页 |
| [Ctrl]+[u] | 屏幕【向上】移动半页 |
| + | 光标移动到非空格符的下一列 |
| - | 光标移动到非空格符的上一列 |
| n<space> | 那个n表示【数字】,按下数字后再按空格,光标会向右移动这一行的n个字符 |
| 0 | 这是数字[0]:移动到这行最前面字符处 |
| $ | 移动到这个屏幕最后面字符处 |
| H | 移动到这个屏幕最上方那一行 |
| M | 移动到这个屏幕的中央那行 |
| L | 移动到这个屏幕的最下方那一行 |
| G | 移动到这个档案的最后一行 |
| nG | n为数字。移动到这个档案的第n行。(可配合:set nu) |
| gg | 移动到这个档案的第一行,相当于1G |
| n<Enter> | n为数字。光标向下移动n行 |
| 一般模式:搜寻与取代 | |
| /word | 向光标之下寻找一个字符串名称为word |
| ?word | 向光标之上寻找一个字符串名为word |
| n | 英文按键n。代表【重复前一个搜寻的动作】 |
| 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 | 同上,另在取代前显示提示字符给user确认(conform)是否需要取代 |
| 一般模式:删除、复制与粘贴 | |
| x,X | 在一行字中,x为向后删除一个字符 |
| nx | n为数字,连续向后删除n个字符 |
| dd | 删除游标所在的那一整列 |
| ndd | n为数字。删除光标所在的向下n列 |
| d1G | 删除光标所在到第一行的所有数据 |
| dG | 删除光标所在最后一行的所有数据 |
| d$ | 删除光标所在处,到该行的最后一个字符 |
| d0 | 数字[0],删除游标所在处,到该行的最前面一个字符 |
| yy | 复制光标所在的那一行 |
| nyy | n为数字。复制光标所在的向下n列 |
| y1G | 复制光标所在列到第一列的所有数据 |
| yG | 复制光标所在列到最后一列的所有数据 |
| y0 | 复制光标所在的那个字符到该行行首的所有数据 |
| y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
| p,P | p为将已复制的数据在光标下一行贴上,P则为贴在游标上一行 |
| J | 将光标所在列与下一列的数据结合成同一列 |
| c | 重复删除多个数据 |
| u | 复原前一个动作 |
| [Ctrl]+[r] | 重做上一个动作 |
| . | 额...这就是小数点....意思是重复前一个动作的意思 |
| 进入编辑模式 | |
| i,I | 插入:在目前的光标所在处插入文字,已存在的文字会向后退;其中i为【从目前光标所在处插入】,I为【在目前所在行的第一个非空格符处开始插入】 |
| a,A | a为【从目前光标所在的下一个字符处开始插入】,A为【从光标所在行的最后一个字符处开始插入】 |
| o,O | 这是英文字母o大小写。o 为【在目前光标所在的下一行处插入新的一行】;O为在目前光标所在处的上一行插入新的一行 |
| r,R | 取代:r会取代光标所在的那一个字符;R会一直取代光标所在的文字,直到按下ESC为止 |
| ESC | 退出编辑模式,回到一般模式中 |
| 指令列命令模式 | |
| :w | 将编辑的数据写入硬盘档案中 |
| :w! | 若硬盘属性为【只读】时,强制写入档案。不过具体能不能写入,还是跟你对该档案权限有关 |
| :q | 离开vi |
| :q! | 若曾修改过档案,又不想储存,使用!为强制离开不储存 |
| :wq | 储存后离开,若为:wq!则为强制储存后离开 |
| :e! | 将档案还原到最原始的状态 |
| ZZ | 若档案没有更动,则不储存离开,若档案已经经过更动,则储存后离开 |
| :w [filename] | 将编辑的数据储存成另一个档案 |
| :r [filename] | 在编辑的数据中,读入另一个档案的数据,即将[filename]这个档案内容加到游标所在行后面 |
| :n1,n2 w [filename] | 将n1到n2 的内容储存成filename这个档案 |
| :! command | 暂时离开vi到指令列模式下执行command的显示结果。例如[:! ls /home]即可在vi当中查看/home底下以ls输出的档案信息 |
| :set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
| :set nonu | 与set nu相反,为取消行号 |
linux杂记(⑨)vi使用说明的更多相关文章
- Linux cp命令使用说明
Linux cp命令使用说明 --功能说明:复制目录或文件 --命令格式:cp [参数] <文件或目录> <文件或目录> --常用参数: -R 复制目录 -i 覆盖文件之 ...
- Linux下TC使用说明
Linux下TC使用说明 一.TC原理介绍 Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制. ...
- Linux/Unix 指令使用说明的格式介绍(the Bash Command 'Usage' Syntax)
Linux/Unix 指令使用说明的格式介绍(the Bash Command 'Usage' Syntax) 摘自 金马的Blog 原文 http://www.lijinma.com/blo ...
- linux backtrace()详细使用说明,分析Segmentation fault
linux backtrace()详细使用说明,分析Segmentation fault 在此之前,开发eCos应用程序时,经常碰到程序挂掉后,串口打印输出一大串让人看不懂的数据.今天才明白,原来这些 ...
- linux杂记(十)what is BASH Shell
first,what is shell?其实只要是碰过计算机的,对于OS(Operation System操作系统,不管是linux.unix.windows)有点概念的人大多都听过这个名词,因为只要 ...
- linux backtrace()详细使用说明,分析Segmentation fault【转】
转自:http://velep.com/archives/1032.html 在此之前,开发eCos应用程序时,经常碰到程序挂掉后,串口打印输出一大串让人看不懂的数据.今天才明白,原来这些数据是程序挂 ...
- linux 杂类
1.linux 下替换windows换行符命令 set ff=unix(命令行)
- Linux下TC使用说明 & 使用备注 ZZ
一.TC原理介绍 Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制. Linux流量控制的基本原理如 ...
- linux下syslog使用说明
转自:http://blog.chinaunix.net/uid-25120309-id-3359929.html syslog 系统日志应用 1) 概述 syslog是Linux系统默 ...
随机推荐
- java中文乱码解决之道(一)—–认识字符集
原文出处:http://cmsblogs.com/?p=1395 沉寂了许久(大概有三个多月了吧),LZ“按捺不住”开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要 ...
- excel中匹配数据
=VLOOKUP(E6,BC:BD,2,0) E6就是要对应的那一列的一个单元格,BC就是对应的那一列,BD就是要取值的那一列
- SQL常用函数
SQL中常用的函数有类型转换函数.字符串函数和日期使用函数.更多具体的函数用法参见DBMS中的帮助文档. 类型转换函数 cast(值 as 类型) update 表名 set 列1=列1+cast(列 ...
- 说说VS 2015 RC最新开发工具的体验
有两个我感觉是提高效率的地方: 1.智能提示的改进,鼠标只要移动到代码上面的类型.字段,就会显示相应的提示,这大大提高我们开发时候需要按F12才能看到定义的内容.下面上图,给大家形象化: 2.管理Nu ...
- APP-SQLAP-10771
用户在匹配 PO时,其中一张AP INVOICE不管进行何种更新操作,总是报:APP-SQLAP-10771:Could not reserve record(不能保留记录) 错误. 而且这个发票问题 ...
- centos安装中文支持(转)
安装中文支持包. yum install fonts-chineseyum install fonts-ISO8859-2 -------- 一.安装中文支持方法1.在安装光盘中找到一下包进行安装.r ...
- PHP MySql数据库访问
PHP MySql数据库访问 计应134 凌豪 1.MySql数据库的连接 要操作MySql数据库,首先必须与MySQl数据库建立连接,连接MySQL服务器的语句如下: <?php$link ...
- 組裝工廠設置IQC的目的
在電子組裝工廠的組織裡,一般都會有 IQC (Incoming Quality Control) 這個單位,台灣稱之為「入(進)料管控」,大陸稱之為「來料管控」,其最主要目的在攔檢所有買進材料是否符合 ...
- Android系统Recovery工作原理之使用update.zip升级过程---updater-script脚本语法简介以及执行流程(转)
目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制. 一.update-script脚本语法简介: 我们顺着所生成的脚本 ...
- InputStream、OutputStream、String的相互转换(转)
//1.字符串转inputStream String string; //...... InputStream is = new ByteArrayInputStream(string.getByte ...