zoukankan      html  css  js  c++  java
  • Linux学习笔记07Vim文本编辑器

    1.Vim概述

    Linux 系统中“一切皆文件”,因此当我们在命令行下更改文件内容时,不可避免地要用到文本编辑器。

    Vim文本编辑器,是由 vi 发展演变过来的文本编辑器,因其具有使用简单、功能强大、是 Linux 众多发行版的默认文本编辑器等特点。

    2.Vim基本操作

    2.1 打开文件

    使用 Vim 打开文件很简单,例如在命令行模式下打开一个自己编写的文件 lucky95/helloworld,打开方法如下:

    [lucky@localhost ~]$ vim lucky95/helloworld
    [lucky@localhost ~]$ 

     除此之外,我们还可以利用下表中打开文件的命令格式,针对特定情形使用适当的打开方式,可以大大提高我们的效率。

    表 2 Vim 打开文件的快捷方法
    Vi 使用的选项说 明
    vim filename 打开或新建一个文件,并将光标置于第一行的首部
    vim -r filename 恢复上次 vim 打开时崩溃的文件
    vim -R filename 把指定的文件以只读方式放入 Vim 编辑器中
    vim + filename 打开文件,并将光标置于最后一行的首部
    vi +n filename 打开文件,并将光标置于第 n 行的首部
    vi +/pattern filename 打幵文件,并将光标置于第一个与 pattern 匹配的位置
    vi -c command filename 在对文件进行编辑前,先执行指定的命令

     案例1:

    [lucky@localhost ~]$ ls
    1202 Desktop Downloads lucky3344.tar movie Pictures Templates Videos
    1202.tar.gz Documents lucky3344 lucky95 Music Public test1
    [lucky@localhost ~]$ cd lucky95
    [lucky@localhost lucky95]$ ls
    helloQQ helloworld helloworld~ lucky3344 movie test01
    [lucky@localhost lucky95]$ vim + helloworld

    效果图:

     2.2 Vim 插入文本

    从命令模式进入输入模式进行编辑,可以按下 I、i、O、o、A、a 等键来完成,使用不同的键,光标所处的位置不同,如表 3 所示。

    表 3 插入文本
    快捷键功能描述
    i 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
    I 在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令
    o 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
    O(大写) 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
    a 在当前光标所在位置之后插入随后输入的文本
    A 在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行 a 命令

     案例1:按i进入编辑状态,退出编辑状态可按esc键

     2.3 Vim 查找文本

    表 4 Vim 查找目标文本
    快捷键功能描述
    /abc 从光标所在位置向前查找字符串 abc
    /^abc 查找以 abc 为行首的行
    /abc$ 查找以 abc 为行尾的行
    ?abc 从光标所在为主向后查找字符串 abc
    n 向同一方向重复上次的查找指令
    N 向相反方向重复上次的查找指定

    案例1:从光标所在位置向前查找字符串 

     案例2:

     2.4 Vim 替换文本

    表 7 Vim替换文本
    快捷键功能描述
    r 替换光标所在位置的字符
    R 从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束
    :s/a1/a2/g 将当前光标所在行中的所有 a1 用 a2 替换
    :n1,n2s/a1/a2/g 将文件中 n1 到 n2 行中所有 a1 都用 a2 替换

    例如,要将某文件中所有的 "lucky" 替换为 "pang",则有两种输入命令,分别为:

    :%s/lucky/pang/g     

     如果刚才的命令变成 :10,20 s/lucky/pang/g,则只替换从第 10 行到第 20 行的 "lucky"。

    2.5 Vim删除文本

    表 8 Vim 删除文本快捷键
    快捷键功能描述
    x 删除光标所在位置的字符
    dd 删除光标所在行
    ndd 删除当前行(包括此行)后 n 行文本
    dG 删除光标所在行一直到文件末尾的所有内容
    D 删除光标位置到行尾的内容
    :a1,a2d 函数从 a1 行到 a2 行的文本内容

     注意,被删除的内容并没有真正删除,都放在了剪贴板中。将光标移动到指定位置处,按下 "p" 键,就可以将刚才删除的内容又粘贴到此处。

    2.6 Vim复制和粘贴文本

    表 9 Vim 复制文本
    快捷键功能描述
    p 将剪贴板中的内容粘贴到光标后
    P(大写) 将剪贴板中的内容粘贴到光标前
    y 复制已选中的文本到剪贴板
    yy 将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行
    yw 将光标位置的单词复制到剪贴板

    2.7 Vim 保存退出文本

    Vim 的保存和退出是在编辑模式中进行的,其常用命令如下表所示。

    注意:vim 进入文件后,就进入编辑模式中。

    表 11 Vim 常用保存退出命令
    命令功能描述
    :wq 保存并退出 Vim 编辑器
    :wq! 保存并强制退出 Vim 编辑器
    :q 不保存就退出 Vim 编辑器
    :q! 不保存,且强制退出 Vim 编辑器
    :w 保存但是不退出 Vim 编辑器
    :w! 强制保存文本
    :w filename 另存到 filename 文件
    x! 保存文本,并退出 Vim 编辑器,更通用的一个 vim 命令
    ZZ 直接退出 Vim 编辑器

    2.8 编辑报错解决

    swap file "*.swp" already exists!

    [O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

    解决方案:按D进行删除,再重新保存。

    2.9 Vim撤销和恢复撤销快捷键

    表 1 Linux Vim 撤销和恢复撤销快捷键
    快捷键功能
    u(小写) undo 的第 1 个字母,功能是撤销最近一次对文本做的修改操作。
    Ctrl+R Redo 的第 1 个字母,功能是恢复最近一次所做的撤销操作。
    U(大写) 第一次会撤销对一行文本(光标所在行)做过的全部操作,第二次使用该命令会恢复对该行文本做过的所有操作。

    案例:

    下面通过一个例子来演示以上 3 个命令的具体用法。首先,我们新建一个 demo.txt 文件并打开,键入一行内容,例如:

    http://c.biancheng.net

    然后按“Esc”键,使 Vim 由输入模式转为命令模式,并使用 yy 命令将这一行文本复制到剪贴板中,如此我们就可以在文本任意位置通过键入 p(或大写的 P)命令将复制的内容粘贴到光标所在的位置。

    假设我们将光标调整到第一行最后一个字符处,连续按两次 p 命令(粘贴 2 次),则此时文本中的内容变为:

    http://c.biancheng.net
    http://c.biancheng.net
    http://c.biancheng.net

    在此基础上,通过 u(小写)命令就可以使文本内容恢复到上一次做粘贴操作之前的样子,其中“上一次”的含义是,恢复操作是可以叠加的,即按一次就会在现有基础上做一次恢复操作。

    比如,继续操作 demo.txt 文件,按一次 u,会发现其文本内容变为:

    http://c.biancheng.net
    http://c.biancheng.net

    再按一次 u,文本内容继续恢复为:

    http://c.biancheng.net

    同样,恢复撤销的操作和撤销操作是相对应的,通过按 Ctrl+R 组合键,可以撤销之前所做的一次恢复操作。例如,继续操作 demo.txt 文件,按一次 Ctrl+R,会发现其文本内容恢复为:

    http://c.biancheng.net
    http://c.biancheng.net

    再按一次 Ctrl+R,文本内容又恢复为:

    http://c.biancheng.net
    http://c.biancheng.net
    http://c.biancheng.net
  • 相关阅读:
    nethogs命令执行报异常的解决方法
    性能监控
    Linux图形化监控网络流量:speedometer查看流量
    JMeter监控Slave机器是否执行
    安全测试robots
    在ASP.NET MVC4中实现同页面增删改查,无弹出框02,增删改查界面设计
    在ASP.NET MVC4中实现同页面增删改查,无弹出框01,Repository的搭建
    报错:非介入式客户端验证规则中的验证类型名称必须唯一。下列验证类型出现重复
    ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
    在ASP.NET MVC中使用Knockout实践09,自定义绑定
  • 原文地址:https://www.cnblogs.com/luckyplj/p/15634859.html
Copyright © 2011-2022 走看看