• vim文件编辑器


    Vim 是 Vi 的增强版(在 Vi 的基础上增加了正则表达式的查找、多窗口的编辑等功能),使用 Vim 进行程序开发会更加方便。

    想深入了解 Vi 和 Vim 的区别,可以在 Vim 命令模式下输入 :help vi_diff,即可看到关于两者区别的摘要。

    1、安装

    yum install vim

    你想省略手动输入“y”的过程,希望全自动安装,可以使用如下这条命令:yum -y install vim

    当命令行中输入“Vim”显示如图 1 所示的画面时,视为 Vim 安装成功。

    2、工作模式

    使用 Vim 编辑文件时,存在 3 种工作模式,分别是命令模式、输入模式和编辑模式,这 3 种工作模式可随意切换:

    使用vim或vi进入命令模式,输入一下命令,实现不同功能:

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

    编辑模式

    编辑模式用于对文件中的指定内容执行保存、查找或替换等操作。

    使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。

    指令执行后 Vim 会自动返回命令模式。如想直接返回命令模式,按 Esc 即可。

    3、基本操作

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

    插入文本

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

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

    查找文本

    /abc    从光标所在位置向前查找字符串 abc
    /^abc    查找以 abc 为行首的行
    /abc$    查找以 abc 为行尾的行
    ?abc    从光标所在为主向后查找字符串 abc
    n    向同一方向重复上次的查找指令
    N    向相反方向重复上次的查找指定

    查找时如果想忽略大小写,输入命令“:set ic”,调整回来输入命令“:set noic”

    如果在字符串中出现特殊符号,则需要加上转义字符 ""。常见的特殊符号有 、*、?、$ 等。如果出现这些字符,例如,要查找字符串 "10$",则需要在命令模式中输入 "/10$"。

    替换文本

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

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

    :1, $s/root/liudehua/g
    或
    :%s/root/liudehua/g

    表示的是从第一行到最后一行,即全文查找 "root",然后替换成 "liudehua"。

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

    删除文本

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

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

    复制文本

    p 将剪贴板中的内容复制到光标后
    P    将剪贴板中的内容复制到光标前
    yy    将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行
    yw    将光标位置的单词复制到剪贴板

    其他快捷键

    把两行进行连接,比如说,下面的文件中有两行文本,现在需要将其合并成一行(实际上就是将两行间的换行符去掉)。可以直接在命令模式中按下 "J" 键。

    如果不小心误删除了文件内容,则可以通过 "u" 键来撤销刚才执行的命令。如果要撤销刚才的多次操作,可以多按几次 "u" 键

    保存退出文本

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

    需要注意的是,"w!" 和 "wq!" 等类似的指令,通常用于对文件没有写权限的时候(显示 readonly,如图 12 所示),但如果你是文件的所有者或者 root 用户,就可以强制执行。

    4、光标移动

    表中所有的快捷键都在命令模式(默认状态)下直接使用。

    Vim快捷方向键

    • h 光标向左移动一位
    • j 光标向下移动一行(以回车为换行符),也就是光标向下移动
    • k 光标向上移动一行(也就是向上移动)
    • l 光标向右移动一位

    Vim光标以单词为单位移动

    某些情形下,可能需要光标迅速移动至一行中的某个位置,将光标以单词为单位进行移动就会很方便。

    • w 或 W 光标移动至下一个单词的单词首
    • b 或 B 光标移动至上一个单词的单词首
    • e 或 E 光标移动至下一个单词的单词尾
    • nw 或 nW n 为数字,表示光标向右移动 n 个单词
    • nb 或 nB n 为数字,表示光标向左移动 n 个单词

    Vim光标移动至行首或行尾

    • 0 或 ^ 光标移动至当前行的行首
    • $ 光标移动至当前行的行尾
    • n$ 光标移动至当前行只有 n 行的行尾,n为数字

    Vim光标移动至指定字符

    一行中,如果需要将光标移动到当前行的某个特点字符,则可以使用表 4 中的快捷键。

    • fx 光标移动至当前行中下一个 x 字符处
    • Fx 光标移动至当前行中下一个 x 字符处

    Vim光标移动到指定行

    • gg 光标移动到文件开头
    • G 光标移动至文件末尾
    • nG 光标移动到第 n 行,n 为数字
    • :n 编辑模式下使用的快捷键,可以将光标快速定义到指定行的行首

    Vim光标移动到匹配的括号处

    程序员在编辑程序时,经常会为将光标移动到与一个 "(" 匹配的 ")" (对于 [] 和 {} 也是一样的)处而感到头疼。Vim 里面提供了一个非常方便地査找匹配括号的命令,这就是 "%"。

    比如,在 /etc/init.d/sshd 脚本文件中(最好还是复制后练习,小心驶得万年船),想迅速地将光标定位到与第 49 行的 "{" 相对应的 "}" 处,则可以将光标先定位在 "{" 处,然后再使用 "%" 命令,使之定位在 "}" 处,如图 6 所示。

    使用"%"命令定位括号
  • 相关阅读:
    [quote]HowTo Format Date For Display or Use In a Shell Script
    [quote] standard Input and Output Redirection
    [quote] Re: [ECOS] printf and diag_printf go to nowhere 2
    [quote] Re: [ECOS] printf and diag_printf go to nowhere
    [quote] DMA engine in Linux Kernel
    [linux]How to set PATH in shell script, and keep it avaiable even after it exits
    use AWK to extract some lines according to some patterns in file
    [Reprinted] Howto Use Linux Watchdog
    Hadoop 1 ecosystem
    Java Comparable & Comparator
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11482875.html
Copyright © 2020-2023  润新知