VIM 必知必会12大类型操作

VIM 必知必会12大类型操作 - Claire_level的个人页面 - 开源中国社区

     VIM 必知必会12大类型操作
    

    vi 基本操作

    1、插入

    i 在光标前插入

    I 在行首插入

    a 在光标后插入

    A 在行末插入

    o 在下一行插入

    O 在上一行插入

    r 输入替换光标位置字符

    R 进入输入替换模式,输入时替换光标后字符

    u 撤销上一步,在没有保存文件时一直有用

    ESC 退出编辑模式

    2、保存

    :wq/ZZ 保存退出

    :w 保存

    :w! 强制保存

    :w filename 文件另存为 filename

    :n1,n2 w filename 将n1行到n2行的数据另存为filename

    3、退出

    :q 退出

    :q! 强制不保存退出

    :qw! 强制保存退出

    :x 保存退出

    4、光标移动

    h、j、k、l 进行移动

    H 定位到屏幕上面

    L 定位到屏幕下面

    M 定位到屏幕中间

    $ 光标到行尾

    0 光标到行首

    G 光标到文档最后一行

    gg 光标到文档第一行

    /n 光标到文档第n行

    nG 光标到文档第n行

    :n 光标到文档第n行

    n<enter>向下移动n行

    n<space> 向后移动n字符

    pageup | ctrl+b  向上翻页

    pagedown | ctrl+f 向下翻页

    5、复制/粘贴/删除

    yy、Y 复制当前行

    nyy、nY 复制从当前行开始的n行

    p 粘贴到下一行

    P 粘贴到上一行

    dd 剪切当前行

    ndd 剪切n行

    p 粘贴到下一行

    D 当前光标开始删除到行尾

    dd 删除当前行

    ndd 从当前行开始向后删除n行

    d1G 删除第1行到当前行的数据

    dnG 删除第n行到当前行的数据

    dG 删除当前行到最后一行的数据

    x 向后删除1个字符/删除光标所在字符

    nx 向后删除n个字符/删除光标后n个字符

    X 向前删除1个字符

    :n1,n2G 删除指定范围的行

    6、搜索

    :set ic 设置搜索时不区分大小写

    :set noic 设置关闭搜索时不区分大小写

    /str 从光标位置向下搜索str

    ?str 从光标位置向上搜索str

    n 找下一个

    N 找上一个

    7、替换

    :%s/abc/123/g 把abc全部替换成123

    :%s/abc/123/gc 同上,但需要用户一个个的确认替换

    :n1,n2s/abc/123/g 把n1到n2行中abc全部替换成123

    8、撤销

    u 退回前一个动作

    ctrl+r 重复前一个动作

    :e! 文档还原到最原始状态

    9、块操作

    v字符选择 光标经过的字符被选中

    V行选择 光标经过的行被选中

    ctrl+v块选择 矩阵式选中

    y 复制被选中的数据

    d 删除被选中的数据

    10、多文件编辑

    vim file1 file2 同时编辑两个文件file1和file2

    :files 列出vim当前打开的文件列表

    :n 编辑下一个文件

    :N 编辑上一个文件

    11、多窗口操作

    :sp file2 在打开一个文件后,用:sp在新窗口中打开另一个文件file2

    ctrl+w -->j 窗口向下切换。先按ctrl+w,打开,再按j

    ctrl+w -->k 窗口向上切换。先按ctrl+w,打开,再按k

    12、定义快捷键

    :map 定义快捷键

    ctrl+v ctrl+p  获得快捷键,p是要设置的快捷键位

    ctrl+v+p 获得快捷键

    :map ^p I#<ESC> 定义ctrl+p快捷键,实现进入插入模式,在光标所在行行首添加#注释,并退回到命令模式

    :map ^e Iaabbcc 定义ctrl+e快捷键,在光标前插入aabbcc

    :map ^b 0x 定义ctrl+b快捷键,删除光标所在行前的#

    :ab myname claire 自动替换,输入myname后自动替换为claire

    :unab myname claire 取消自动替换,输入myname后自动替换为claire

    13、连续行注释

    n1,n2s/^、#/g 将n1至n2行前加#号

    n1,n2s/^//g 去掉n1至n2行前的#号

    n1,n2s/^#//g 去掉n1至n2行前的#号

    n1,n2s/^/\/\//g 去掉n1至n2行前的//号

    14、其它操作

    set nu 显示行号(nu=number)

    set nonu 取消等号(nonu= no number)

    :r filename 把filename文件里的内容插入到当前光标所在的位置下

    :!command 暂时离开vim,去执行command命令。 如(:!df -h)

    :r !date 把当前系统时间导入到文件末尾
原文地址:https://www.cnblogs.com/lexus/p/2766516.html