zoukankan      html  css  js  c++  java
  • vi/vim命令

    #

    vim【vi】有三种常见的模式:Normal Mode(命令模式)Insert Mode(输入模式)Visual Mode(视图模式)

    文件操作

    vim【vi    // 打开一个空文件

    vim【vi】 a.txt  // 打开当前目录中的a.txt文件;若文件不存在则创建一个名为a.txt的文件(指定保存位置为当前目录)

    vim【vi】 e:\a.txt // 打开e盘目录中的a.txt文件;若文件不存在则创建一个名为a.txt的文件(指定保存位置为e:\)

    vim【vi】 + a.txt  // 打开当前目录中的a.txt文件,并定位到文件末尾;若文件不存在则创建一个名为a.txt的文件(指定保存位置为当前目录)

    vimvi】 +/Hello a.txt    // 打开当前目录中的a.txt文件,并将光标置于第一个与Hello匹配的串处

    vim【vi】 +25 e:\a.txt  // 打开e盘目录中的a.txt文件,并定位到文件的25行首

    vim【vi】 + e:\a.txt // 打开e盘目录中的a.txt文件,并定位到文件末尾;若文件不存在则创建一个名为a.txt的文件(指定保存位置为e:\)

    vim【vi】 a.txt b.txt c.txt  // 打开当前目录中的a.txt,b.txt,c.txt文件;若文件不存在则创建一个名为a.txt,b.txt,c.txt的文件(指定保存位置为当前目录) 

    :w  // 保存文件

    :w!  // 强制保存文件(文件为只读类型也会被保存)

    :w e:\a.txt  // 保存到e:\a.txt

    :w! e:\a.txt  // 强制保存到e:\a.txt

    :x:wq// 保存并退出

    :x:wqe:\a.txt   // 保存到e:\a.txt,并退出

    :q  // 退出(如果未保存,则会退出失败)

    :q!  // 不保存,强制退出

    :open  e:\b.txt  // 在新缓冲区中打开e:\b.txt文件

    :e d:\test.txt  // 在新缓冲区中打开d:\test.txt文件

    :set fileformat?    // 查看当前格式 - unix/dos

    :set fileformat=unix  // 将当前文件设置成unix格式

    :set termencoding=gbk  // 将文件内容使用gbk编码显示到SecureCRT等终端上

    多文件

    :bn  // 切换到下一个缓冲区

    :bd  // 删除当前缓冲区(关闭文件)

    :sp test.txt   // 在新的缓冲区中打开文件,并分割窗体

    ctrl+w,ctrl+s  // 分割窗体

    ctrl+w,ctrl+w  // 切换到不同的窗体

    ctrl+w,ctrl+q  // 关闭当前窗体

    ctrl+w,ctrl+v  // 垂直分割窗体

    :tabe test.txt  // 在新标签页中编辑文件

    gt  // 下一个标签

    gT  // 前一个标签

    :tabr  // 切换到第一个标签

    :tabl  // 切换到最后一个标签

    :tabm 3  // 切换到当前标签后的第3个标签

    :xa:wqa// 保存所有标签并退出

    :qa  // 退出所有标签(如果未保存,则会退出失败)

    :qa!  // 不保存,强制退出所有标签

    命令历史记录

    q:  // 打开历史编辑窗口,按k和j来上下选择命令

         // 选择任何一个命令,按回车即可输入该命令并关闭历史编辑窗口(注:最下面一个为空命令)

    ctrl+c  // 退出历史编辑(但此时历史编辑窗口不关闭),再按esc即可关闭历史编辑窗口

    光标移动

    h  j  k  l  // 左 下 上 右

    ctrl + e     // 向下滚动一行

    ctrl + y     // 向上滚动一行

    ctrl + d     // 向下滚动半屏

    ctrl + u     // 向上滚动半

    ctrl + f  // 下一页

    ctrl + b  // 上一页

    ctrl + g  // 移动到文件末尾

    %  // 括号匹配 - 小括号/中括号/大括号

    w  // 跳到下一个单词的起始处(使用非字母、数字及下划线的字符作为分隔符号)

    W  // 跳到下一个单词的起始处(仅使用空格、Tab、回车作为分隔符号)

      // 跳到上一个单词的起始处(使用非字母、数字及下划线的字符作为分隔符号)

    B  // 跳到上一个单词的起始处(仅使用空格、Tab、回车作为分隔符号)

    e  // 跳到当前单词的末尾(使用非字母、数字及下划线的字符作为分隔符号)

    E  // 跳到当前单词的末尾(仅使用空格、Tab、回车作为分隔符号)

    0    //    跳到当前行行首

    ^      // 跳到当前行最前字符的位置

    $   // 跳到当前行行末

    gg  // 跳到第一行最前字符的位置

    gd  // 跳转当前光标处变量或函数的定义处

    G  // 跳到当前文件最后一行的最前字符的位置

    5G【:5  // 跳转到第5行最前字符的位置

    fx  // 在当前行中向后查找字符x

    Fx  //在当前行中向前查找字符x 

    ;  // 重复上一次的f或F命令

    ,  // 执行f或F命令时,向前查找字符x

    *  // 向后查找当前光标下的单词

    #  // 向前查找当前光标下的单词

    ·.  // Tab上面的字符+句号   回到上一次编辑所在的行首

    H  // 到当前屏幕的最上一行

    M  // 到当前屏幕的中间一行

    L  // 到当前屏幕的最下一行

    插入模式

    i  // 从当前光标位置插入

    I  // 从当前行起始处插入

    a  // 在光标之后插入

    A  // 在当前行末插入

    o  // 在当前行下一行插入一个新行

    O  // 在当前行上一行插入一个新行

    ctrl + n // 下一个提示匹配

    ctrl + p // 上一个提示匹配

    esc  // 退出编辑模式

    可视模式(用于选中文本)

    v  // 启动可视模式,移动光标选中字符

    V  // 启动行可视模式,移动光标选中行

    ctrl + v // 启动块可视模式

    o  // 移动到选择块的另外一端

    U  // 将当前选择块转成大写

    O  // 移动到选择块的另外一对角上

    aw  // 选中一个单词

    ab  // 选中一个匹配块(如:小括号/中括号/大括号等)

    aB  // 选中一个括号匹配块

    ib  // 选中小括号中的内容

    iB  // 选中大括号中的内容

    >  // 右移

    <  // 左移

    y  // 复制

    d  // 删除

    ~  // 将当前选择块内容大小写切换

    编辑

    cc  // 删除当前行内容(并切换到插入模式)

    cw  // 删除当前光标到所在单词末间的内容(并切换到插入模式)

    caw    // 删除当前单词(并切换到插入模式)

    c$  // 删除当前光标到行末的内容(并切换到插入模式)

    s  // 删除当前光标字符(并切换到插入模式)

    S  // 删除当前行内容(并切换到插入模式)

    J  // 将下一行挪到当前行结尾

    r      // 替换光标所在处一个字符

    rx  // 将当前光标处字符替换为字符x

    R      // 相当于按了insert键,直到按ESC键退出

    u  // 撤销

    ctrl + r  // 重做

    .  // 句号   重复上次命令

    ~  // 当前光标下字符的大小写转换

    g~iw  // 当前光标下单词的大小写转换

    gUiw  // 转换当前光标下单词为大写

    guiw  // 转换当前光标下单词为小写

    <<  // 左缩进

    >>  // 右缩进

    ==  // 自动缩进对齐

    剪切、复制和粘贴

    dd  // 剪切当前行

    ndd  // 剪切从当前行起的n行内容

    dw  // 剪切到下一个单词开头

    de      // 剪切当前光标到本单词末尾

    dE     // 剪切当前光标到本单词末尾包括标点在内

    db     // 剪切当前光标到前一个单词

    dB     // 剪切当前光标到前一个单词包括标点在内

    daw   // 剪切当前单词

    x    // 剪切当前字符

    nx     // 剪切当前的n个字符

    X  // 剪切当前光标的前一个字符

    D  // 剪切当前光标到行尾

    dG    // 剪切当前光标到文件末尾的所有内容

    d0    // 剪切当前光标到本行行首的所有内容

    d$    // 剪切当前光标到本行行尾的所有内容

    d^  // 剪切当前光标到本行首间的内容

    :1,100d  // 剪切1~100

    :100d    // 剪切第100行

    :1,100 mo $ // 将1~100行的内容移动到最后一行

    yy  // 复制当前行

    nyy  // 复制从当前行起的n行内容

    yaw     // 复制当前光标下的单词

    yw  // 复制当前光标到所在单词末间的内容

    y$  // 复制当前光标到行末间的内容

    y^  // 复制当前光标到行首间的内容

    yG  // 复制当前光标到文件末尾间的内容

    p  // 在当前光标后插入复制的内容

    P  // 在当前光标前插入复制的内容

    ]p  // 以恰当的缩进插入复制的内容

    :1,100 co 200 // 将1~100的内容复制到第200行

    :100,102 co $  // 将100~102行的内容复制到最后一行

    搜索和替换

    :set hlsearch  // 开启匹配字符串的高亮显示

    :nohlsearch  // 关闭匹配字符串的高亮显示

    * 键可以向后搜索光标所在位置的单词,# 键可以向前搜索光标所在位置的单词

    /Hello   // 搜索Hello字符串

    ?Hello   // 向前搜索Hello字符串

    /Hello\c  // 搜索Hello字符串(忽略大小写)

    ?Hello\c   // 向前搜索Hello字符串(忽略大小写)

    n  // 向正方向搜索下一个字符串

    N  // 向反方向搜索下一个字符串

    :%s/Hello/Test/g  // 全局替换当前文件中所有的Hello为Test

    :%s/Hello/Test/gc  // 全局替换当前文件中所有的Hello为Test(需要逐个确认)

    :%s/Hello/Test/gci  // 全局替换当前文件中所有的Hello(忽略大小写)为Test(需要逐个确认)

    参考

    简明 Vim 练级攻略 

    Eclipse和Vim快捷键桌面

    Vim命令速查卡

    给程序员的VIM速查卡

    Vim的分屏功能

    游戏:VIM大冒险 

  • 相关阅读:
    手把手教你写vue插件并发布(一)
    npm 换源
    ajax上传文件显示进度
    angularjs的表单验证
    利用公钥认证登录远程服务器
    centos 搭建 leanote
    读书笔记-JavaScript高级程序设计(1)
    C++读写TXT文件中的string或者int型数据以及string流的用法
    不相交集ADT--链表实现
    不相交集ADT--数组实现
  • 原文地址:https://www.cnblogs.com/kekec/p/2932751.html
Copyright © 2011-2022 走看看