vi 的使用
基本上 vi 共分为三种模式,分别是『一般模式』、 『编辑模式』与『指令列命令模式』三种!
这三种模式的作用是:

一般模式: 以 vi 处理一个档案的时后,一进入该档案就是一般模式了。在这个模式中, 你可以使用『上下左右』按键来移动光标,您可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理您的文件数据。

编辑模式: 在一般模式中可以处理删除、复制、贴上等等的动作,但是却无法编辑的! 要等到您按下『i, I, o, O, a, A, r,
R』等字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下上述的字母时,在画面的左下方会出现『 INSERT 或 REPLACE
』的字样,才可以输入任何字来输入到您的档案中!而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。

指令列命令模式: 在一般模式当中,输入『 : 或 / 或 ? 』就可以将光标移动到最底下那一行,在这个模式当中,
可以提供您『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号 等等的动作则是在此模式中达成的!

简易执行范例
我们怎么使用 vi 建立一个档名为 test.txt 的资料呢?也是很简单的啦, 整个步骤可以是这样:
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] 按钮回到一般模式; 好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下 [Esc] 这个按钮即可!马上你就会发现画面左下角的 – INSERT – 不见了!

4. 在一般模式中按下 :wq 储存后离开 vi ! OK,我们要存档了,存盘并离开的指令很简单,输入『:wq』即可存档离开!(注意了,按下 :
该光标就会移动到最底下一行去!)这时你在提示字符后面输入『 ls -l 』即可看到我们刚刚建立的 test.txt 档案啦!

如此一来,您的档案 test.txt 就已经建立起来啰!很简单吧!需要注意的是,如果您的档案权限不对,例如为 -r--r--r--
时,那么可能会无法写入,那么可以使用『强制写入』的方式吗?可以!使用『:wq!』
多加一个惊叹号即可!不过,需要特别注意呦!那个是在『您的权限可以改变』的情况下才能成立的! 关于权限的概念,请参考一下 Linux
的档案权限概念 啰!

命令列内容说明
如前所述,所谓的命令列或命令模式,就是在最下面一行没有显示 『--INSERT--』或者『--REPLACE--』 字样的时候。通常在命令列中的指令有下面几种:(注意,当按下 『:』 时,光标会自动移动到屏幕的最下面一行!)

一般模式: 移动光标的方法
h 或 向左方向键(←)  光标向左移动一个字符
j 或 向下方向键(↓)  光标向下移动一个字符
k 或 向上方向键(↑)  光标向上移动一个字符
l 或 向右方向键(→)  光标向右移动一个字符
如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
[Ctrl] + [f]  屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b]  屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]  屏幕『向下』移动半页
[Ctrl] + [u]  屏幕『向上』移动半页
+  光标移动到非空格符的下一列
-  光标移动到非空格符的上一列
n<space>  那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离。
0  这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$  移动到这一行的最后面字符处(常用)
H  光标移动到这个屏幕的最上方那一行
M  光标移动到这个屏幕的中央那一行
L  光标移动到这个屏幕的最下方那一行
G  移动到这个档案的最后一行(常用)
nG  n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg  移动到这个档案的第一行,相当于 1G 啊! (常用)
n<Enter>  n 为数字。光标向下移动 n 行(常用)

一般模式: 搜寻与取代
/word  向光标之下寻找一个字符串名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word  向光标之上寻找一个字符串名称为 word 的字符串。
n  这个 n 是英文按键。代表『重复前一个搜寻的动作』的意思。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird
这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n
则会向上继续搜寻名称为 vbird 的字符串!
N  这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
:n1,n2s/word1/word2/g  n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1
这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:
『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g  从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给使用者确认 (conform) 是否需要取代!(常用)

一般模式: 删除、复制与贴上
x, X  在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nx  n 为数字,连续向后删除 n 个字符。举例来说,我要连续向后删除 10 个字符, 『10x』。
nX  n 为数字,连续向前删除 n 个字符。举例来说,我要连续向前删除 10 个字符, 『10X』。
dd  删除游标所在的那一整列(常用)
ndd  n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (常用)
d1G  删除光标所在到第一行的所有数据
dG  删除光标所在到最后一行的所有数据
d$  删除游标所在处,到该行的最后一个字符
d0  那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy  复制游标所在的那一行(常用)
nyy  n 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用)
y1G  复制光标所在列到第一列的所有数据
yG  复制光标所在列到最后一列的所有数据
y0  复制光标所在的那个字符到该行行首的所有数据
y$  复制光标所在的那个字符到该行行尾的所有数据
p, P  p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10
行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20
行会被推到变成 30 行。 (常用)
J  将光标所在列与下一列的数据结合成同一列
c  重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u  撤销,复原前一个动作。(常用)
[Ctrl]+r  重做上一个动作。(常用)
这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,您的编辑,嘿嘿!很快乐的啦!
.  不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果您想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)

进入编辑模式
i, I  插入:在目前的光标所在处插入输入之文字,已存在的文字会向后退; 其中, i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。 (常用)
a, A  a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』。(常用)
o, O  这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处插入新的一行』; O 为在目前光标所在处的上一行插入新的一行!(常用)
r, R  取代:r 会取代光标所在的那一个字符;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。
由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT/REPLACE
才能输入喔!
Esc  退出编辑模式,回到一般模式中(常用)

指令列命令模式
:w  将编辑的数据写入硬盘档案中(常用)
:w!  若档案属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟您对该档案的档案权限有关啊!
:q  离开 vi (常用)
:q!  若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
: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 相反,为取消行号!

区块选择(Visual Block)
区块选择的按键意义
v  字符选择,会将光标经过的地方反白选择!
V  行选择,会将光标经过的行反白选择!
[Ctrl]+v  区块选择,可以用长方形的方式选择资料
y  将反白的地方复制起来
d  将反白的地方删除掉

多档案编辑
多档案编辑的按键
:n  编辑下一个档案
:N  编辑上一个档案
:files  列出目前这个 vim 的开启的所有档案

多窗口情况下的按键功能
:sp [filename]  开启一个新窗口,如果有加 filename, 表示在新窗口开启一个新档案,否则表示两个窗口为同一个档案内容(同步显示)。
[ctrl]+wj  按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j ,则光标可移动到下方的窗口。
[ctrl]+wk  同上,不过光标移动到上面的窗口。
[ctrl]+wq  其实就是 :q 结束离开啦! 举例来说,如果我想要结束下方的窗口,那么利用[ctrl]+wj 移动到下方窗口后,按下 :q 即可离开, 也可以按下 [ctrl]+wq 啊!

vi 文字处理器的更多相关文章

  1. vi文字处理器

    http://blog.csdn.net/wangloveall/article/details/22649331 摘要:vi是类UNIX命令行接口的标准文字处理软件,也是进行shell脚本程序编写与 ...

  2. Word文字处理器发展演变

    随着信息技术的不断发展,以前书面化的信笺,笔记,书籍以及作业演变成现在不断更新的电子化Word文档. Word是目前世界上最流行.最常用的文字编辑,排版软件,使用它不仅可以提高文档的编辑效率,在修改时 ...

  3. python实现一个加密的文字处理器

    这是一个类似于记事本的文字处理器.与正常的记事本不同的是,它会将文本文档进行加密,确保无法被常规的程序打开. 由于本人是一位业余编程爱好者,对于"python之禅"之类的规则比较不 ...

  4. vi/vim 文字处理器常用命令

    目录 vi 与vim vi 的三种模式 vi 光标移动 vi 搜索与替换 vi 删除 vi 复制 vi 粘贴 vi 其他 vi 进入编辑模式 vi 命令行命令 vim 附加功能 vi 与vim vi是 ...

  5. 鸟哥的Linux私房菜-----9、vi文本处理器

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVrZXdhbmd6aQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  6. linux(4) vi编辑/删除、复制、粘贴 /bash shell 环境变量设置/数据流重定向 | 的用法

    一.vi文字处理器1.vi与vimvi:文字处理器vim:程序开发工具2.vi介绍三种模式:一般模式(vi刚进入的,不可编辑),编辑模式(按i后,左下方是insert)和命令行模式(按esc退出,:w ...

  7. linux vim,vi编辑器的基础

    在之前我也不知道为什么要学vim和vi编辑器,仅仅是听过别人说这个对与linux非常重要. 先说一下为什么要学习这个编辑器.个人的看书理解. 系统管理员的重要工作就是參与与设置某些重要软件的配置文件, ...

  8. Linux常用命令速查备忘

    Linux常用命令速查备忘   PS:备忘而已,详细的命令参数说明自己man 一. 启动,关机,登入,登出相关命令 [login] 登录 [logout] 登出 [exit] 登出 [shutdown ...

  9. Vim入门学习之Vim解析

    Vim解析... ----------------------- 首先你要会从官网上下载你想要的Vim版本:   官网: http://www.vim.org/==================== ...

随机推荐

  1. ASP.NET Razor——Razor 简介

    ASP.NET Razor - 标记 Razor 不是一种编程语言.它是服务器端的标记语言. 什么是 Razor? Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 ...

  2. 线段树(segment tree)

    线段树在一些acm题目中经常见到,这种数据结构主要应用在计算几何和地理信息系统中.下图就为一个线段树: (PS:可能你见过线段树的不同表示方式,但是都大同小异,根据自己的需要来建就行.) 1.线段树基 ...

  3. Spring源码学习之:ClassLoader学习(1)

    转载:http://longdick.iteye.com/blog/442213 java应用环境中不同的class分别由不同的ClassLoader负责加载. 一个jvm中默认的classloade ...

  4. c语言多线程队列读写

    最近用c语言写了个简单的队列服务,记录一下,文件结构为 main.c queue.c queue.h,代码如下: 主函数 #define NUM_THREADS 200 #include <st ...

  5. SocketTcpServer

    自定义SocketTcpServer,虽然现在有很多这样的组件,但是有时候还是需要把它集成在你的框架或者产品中,不需要特别强大的功能,根据需求定制.最基本的一个问题是判断数据包的结束,没有像super ...

  6. bootstrap初接触

    Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架.(主要是结合HTML5 CSS3的样式, 基于jquery+Bootstrap 自带 12 种 jQuery 插件,扩展了功能,可以 ...

  7. 2016中国VR开发者论坛第一期

    由VR界网和暴风魔镜联合举办的2016中国VR开发者论坛第一期已于3月2日下午5点在吉林动画学院圆满落幕,本次论坛云集了VR相关领域的精英,邀请了VR社交<极乐王国>.暴风魔镜.南京睿悦. ...

  8. 使用 Sublime、WebStorm 开发 Jade

    Sublime.WebStorm (PhpStorm) 是前端开发者的得力工具,开发 Jade 也不例外. 在配置这些软件的 Jade 开发环境前,请先在系统中安装 Node.js 和 Jade : ...

  9. oracle的char和varchar类型

    源地址:https://zhidao.baidu.com/question/140310197.html varchar与char的区别就在于是否可变长度.char(5)就是定义一个5个字符长度的字符 ...

  10. yield个人理解及简明示例

    1.写法有2种:yield return <expression>和yield breakyield用于在迭代中返回一个值,并将值带入下一次迭代中.yield break则意味着停止迭代. ...