zoukankan      html  css  js  c++  java
  • Linux每日一题——(2)vi文本编辑器

    Vi简介

    vi 文本编辑器有三种模式:命令模式、插入模式和末行模式(底线命令模式)。

    命令模式:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入插入模式下,活着到末行模式。

    编辑模式:在编辑模式下,可以使用键盘输入文本,按Esc退出编辑模式返回到命令模式。

    末行模式:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。

    启动vi文本编辑器:进入命令模式

    vi <filename>

    如果filename文件存在则打开该文件。

    如果filename文件不存在则创建一个新文件。

    命令模式

    移动光标:

    h 或 向左方向键(←)  光标向左移动一个字符

    j 或 向下方向键(↓)  光标向下移动一个字符

    k 或 向上方向键(↑)  光标向上移动一个字符

    l 或 向右方向键(→)  光标向右移动一个字符

    注意 : Unix 系统不支持上, 下, 左, 右四个方向键, Linux 系统为方便用户,在 vi 中支持上述方向键

    在一行中移动

    0(数字):使光标移动到当前行的开头

    $:使光标移动到当前行的末尾

    w:向前移动一个单词(光标定位在单词的开头)

    b:向后移动一个单词(光标定位在单词的开头)

    e:光标定位到单词的末尾

    从一行移动到另一行

    k:向上移动一行

    j:向下移动一行

    Ctrl+u:向上翻一页

    Ctrl+d:向下翻一页

    gg:使光标移动到文档第一行的第一个字符处

    G:使光标移动到文档最后一行的第一个字符处

    编辑模式

    进入编辑模式

    从命令模式输入命令: a, A, i, I进入到编辑模式。

    i(insert):在当前光标位置的前面进入到编辑模式

    a(append):在当前光标位置的后面进入到编辑模式I:在当前行的开头进入到编辑模式

    A:在当前行的末尾进入到编辑模式

    o:在当前行之后插入一个新行,并进入到编辑模式O:在当前行之前插入一个新行,并进入到编辑模式

    r:替换单个字符,光标放置在要替换的字符上,按r之后vi自动进入编辑状态,输入一个需要的字符后,vi自动返回命令模式(不需要按Esc返回),非常方便。

    cw:(change word)替换整个单词(光标在单词的第一个字符上),如果光标在单词的中间位置将替换光标到单词结尾之间的所有字符

    删除文本

    lx, X : 删除当前光标所在字符 / 前一个字符

    lnx, nX : 删除从当前光标位置开始后 n 个字符 (包括当前字符) / 前 n 个字符(不包括当前字符)

    lD : 删除当前光标位置开始后的该行所有字符(包括当前字符)

    ldd, ndd : 删除当前光标所在行 / 当前光标所在行l开始的后 n 行

    复制

    yy, nyy : 复制光标所在当前行 / 光标所在当前行开始的后 n 行 (包括当前行)

    yw : 复制光标位置到单词结束的字符

    y$:复制光标位置到行尾的所有字符

    粘贴

    p (paste ): 在当前光标后粘贴

    P(大写): 在当前光标前粘贴

    dd+p:剪切并粘贴一行——首先dd删除当前行,把光标移动到需要粘贴的位置按p进行粘贴。

    x+p:剪切并粘贴一个字符

    dw+p:剪切并粘贴一个单词

    d$+p:剪切并粘贴光标到行尾的所有字符

    退出编辑模式

    按Esc键退出编辑模式,返回到命令模式。

    末行模式

    在命令模式下,可输入  /,  ?,  :,  ! 等头的操作指令,完成相应的功能

    /  向前查找字符串

    ?  向后查找字符串

    :  执行文件相关操作命令

    !  启动一个 shell 指令

    保存文件

    :w  将编辑的数据写入硬盘文件中(常用)

    :w!强制写入该文件。

    :q  退出编辑(常用)

    :q!不保存强制退出

    :wq  写入并退出

    :wq! 强制写入并推出(常用)

    :x 写入并退出(与wq区别:当文件没有修改时,x不更新修改时间,wq刷新文件,更新修改时间)

    :e!打开新文件到vi编辑器,并放弃对当前文件的修改

    ZZ 写入并退出(不加“:”,命令模式下)

    保存文件(另存)

    :w [filename]  将编辑的数据储存成另一个文件(类似另存新文件)

    :r [filename]  在编辑的数据中,读入另一个文件的数据。亦即将【filename】这个文件内容加到游标所在行后面

    :n1,n2 w [filename]  将n1到n2行的内容储存成 filename 这个文件。

    显示与取消显示行号

    :set nu  显示行号,设定之后,会在每一行的前缀显示该行的行号

    :set nonu  与 set nu 相反,为取消行号

    :! Command  暂时离开 vi 到指令列模式下执行command 的显示结果

      例如 【:! ls /home】即可在 vi 当中察看 /home 底下以 ls 输出的文件信息

    搜索

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

    ?word  向光标之上寻找一个字符串名称为 word 的字符串

    n  重复前一个搜寻的动作

    N  为反向进行前一个搜寻动作,与n相反

    :s/word1/word2 在当前行搜索word1,并将第一个word1替换为word2

    :n1,n2 s/word1/word2/g

      在第 n1 与 n2 行之间寻找 word1 这个字符串,并将所有word1取代为 word2 ,g(global)代表全局

      举例来说,在 100 到 200 行之间搜寻 test 并取代为 TEST 则:【:100,200s/test/TEST/g】(常用)

    :1,$ s/word1/word2/gc

      从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2!且在取代前显示提示字符给使用者确认 (conform) 是否需要取代!(常用)

    vi中的撤销undo和重做redo

    u(undo):撤销

    Ctrl+r(redo):重新执行

    vi重复执行上次命令

    .(句号):再次执行上一条vi命令

  • 相关阅读:
    蓝牙低功耗(Bluetooth Low Energy)
    Android 蓝牙(概述)
    Android 学习笔记之 Activity 简介
    Android 学习笔记之常用控件
    Android 学习笔记之界面布局
    委托和事件(C#)
    Java 资源汇总
    如何阅读英文原版教材
    Combobox 控件绑定数据
    《将博客搬至CSDN》
  • 原文地址:https://www.cnblogs.com/downpour/p/2853701.html
Copyright © 2011-2022 走看看