VIM 编辑器的使用

VIM 编辑器的使用

欢迎来到 来到大浪涛天的博客

VIM 编辑器的使用

1. vim:模式化的编辑

2. 基本模式:

  • 编辑模式

  • 命令模式

  • 输入模式

  • 末行模式:

  • 内置的命令行接口

3. 模式转换:

3.1 编辑模式 --> 输入模式

  • i: insert, 在光标所在处输入;
  • a: append, 在光标所在处后面输入;
  • o: 在当前光标所在行的下方打开一个新行;
  • I:在当前光标所在行的行首输入;
  • A:在当前光标所在行的行尾输入;
  • O:在当前光标所在行的上方打开一个新行;

3.2 输入模式 --> 编辑模式

  • ESC

3.3 关闭文件:

  • :q 退出
  • :q! 强制退出,丢弃做出的修改;
  • :wq 保存退出
  • :x 保存退出
  • :w /PATH/TO/SOMEWHERE
  • ZZ: 保存退出;

4. 打开文件:

vim [OPTION]... FILE...
+#: 打开文件后,直接让光标处于第#行的行首;
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
vim +/^fi /tmp/grub2.cfg

5. 字符跳转:

  • 字符间跳转:
    h(左), j(下), k(上), l(右)
    COMMAND:跳转由#指定的个数的字符;注意是先按数字再按向哪个方向跳转的方向键来完成。
  • 单词间跳转:
    w:下一个单词的词首
    e:当前或下一单词的词尾
    b:当前或前一个单词的词首
    COMMAND:由#指定一次跳转的单词数
  • 行首行尾跳转:
    ^: 跳转至行首的第一个非空白字符;
    0: 跳转至行首;
    $: 跳转至行尾;
  • 行间移动:
    #G:跳转至由#指定行;
    G:最后一行;
    1G, gg: 第一行;

6. vi 编辑命令

字符编辑:

  • x: 删除光标处的字符;
    #x: 删除光标处起始的#个字符;
    xp: 交换光标所在处的字符及其后面字符的位置;
  • 替换命令(r, replace)
    r: 替换光标所在处的字符
  • 删除命令
    d: 删除命令,可结合光标跳转字符,实现范围删除;
    d$: 删除光标到行尾的所有字符
    d^: 删除光标到行首(行首第一个非空白字符)的所有字符
    d0: 删除光标到行首的所有字符
    dw:删除光标都下一个单词的词首
    de:删除到下一个单词的词尾
    db:删除到上一个单词的词首
    #COMMAND
    dd: 删除光标所在的行;
    #dd:多行删除;
  • 粘贴命令(p, put, paste):
    p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面;
    P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面;
  • 复制命令(y, yank):
    y: 复制,工作行为相似于d命令;
    y$ :复制内容到行尾
    y0:复制内容到行首
    y^:复制内容到行首
    ye:复制内容到下一个单词的词尾
    yw:复制到下一个单词
    yb:复制到下一个单词
    #COMMAND
    yy:复制行
    #yy: 复制多行;
  • 改变命令(c, change)
    c: 修改
  • 编辑模式 --> 输入模式
    c$: 删除光标到词尾内容并转为输入模式
    c^:删除光标到词首(非空白字符)的内容并转为输入模式
    c0:删除光标到词首的内容并转为输入模式
    cb:删除光标到上一个单词的词首并转为输入模式
    ce:删除到下一个单词的词尾并转为输入模式
    cw:删除到下一个单词的词首并转为输入模式
    #COMMAND
    cc:删除并输入新内容
    #cc:
  • 可视化模式:
    v: 按字符选定
    V:按行行定
    Note:经常结合编辑命令;
    d, c, y
    撤消此前的编辑:
    u(undo):撤消此前的操作;
    #u: 撤消指定次数的操作;10u撤销前 10步的操作
    .:重复此前的操作
    撤消此前的撤消:
    Ctrl+r
    重复前一个编辑操作:.
  • 翻屏操作:
    Ctrl+f: 向文件尾部翻一屏;
    Ctrl+b: 向文件首部翻一屏;
    Ctrl+d: 向文件尾部翻半屏;
    Ctrl+u:向文件首部翻半屏;
  • vim中的末行模式,内建的命令行接口
    1 . 地址定界
:start_pos,end_pos
#: 具体第#行,例如2表示第2行;
#,#: 从左侧#表示行起始,到右侧#表示行结尾;后可以直接加命令(y,d,p,r插入),不要加空格,表示选定的行用该命令进行处理
#,+#: 从左侧#表示的行起始,加上右侧#表示的行数;
.: 当前行
$: 最后一行
.,$-1
%:全文, 相当于1,$
/pat1/,/pat2/:
从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束;
(数字),/pat/
/pat/,$
pat为标准的正则表达式
使用方式:
后跟一个编辑命令
d 删除
y 复制
w /PATH/TO/SOMEWHERE: 将范围内的行另存至指定文件中;
r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容;
  1. 查找
    /PATTERN:从当前光标所在处向文件尾部查找;
    例如 /<r..t>
    ?PATTERN:从当前光标所在处向文件首部查找;
    n:与命令同方向;
    N:与命令反方向;
  2. 查找并替换
    s: 在末行模式下完成查找替换操作
    s/要查找的内容/替换为的内容/修饰符
    要查找的内容:可使用模式
    替换为的内容:不能使用模式,但可以使用1, 2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容;
eg :.,$s/root/ROOT/g
eg 1,$s/R(..)T/r1t/g

修饰符:
i: 忽略大小写
g: 全局替换;默认情况下,每一行只替换第一次出现;
&:可以引用前面匹配到的所有内容
eg %s/l...x/&er/g
查找替换中的分隔符/可替换为其它字符,例如

s@@@
eg %s//etc//var/g
还可以这样 %s#/etc#/var#g
原文地址:https://www.cnblogs.com/chacha51/p/13764859.html