zoukankan      html  css  js  c++  java
  • vi 文字处理器

    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 啊!

  • 相关阅读:
    python模块--time模块
    python模块--如何相互调用自己写的模块
    Animating Views Using Scenes and Transitions
    fragment 切换
    android textview 设置text 字体
    android intent 5.1
    android EditView ime
    animation of android (4)
    animation of android (3)
    animation of android (2)
  • 原文地址:https://www.cnblogs.com/WebLinuxStudy/p/5107879.html
Copyright © 2011-2022 走看看