vi命令

来源:互联网 发布:剑灵动漫人物捏脸数据 编辑:程序博客网 时间:2024/06/05 08:18
  1. 移动命令(光标定位)
    • h j k l  左下上右移动光标
    • H        跳到屏幕上的第一行
    • M        跳到屏幕的中间行
    • L        跳到屏幕上的最后一行
    • w        光标以单词向前移动至单词第一个字母
    • b        与w相反,向后移动至单词的第一个字母
    • %:       移动到与制匹配的括号上去(),{},[],<>等
    • CTRL+G  得到当前光标在文件中的位置
    • CTRL+d  向下移动半屏        CTRL+u        向上移动半屏        CTRL+f  向下移动一屏      CTRL+b   向上移动一屏
    • Ctrl-w h,Ctrl-w j,Ctrl-w k,Ctrl-w l 切换到左下上右窗口
    • $        当前行的末尾         ^        当前行第一个字母
    • gg       文件头        G        文件尾
    • ``      回到光标跳转前的位置        `. -- 此命令相当强大, 它移动光标到上一次的修改点.
    • 行号+G   跳转到指定行        :set 10    跳转到指定行10行处
    • zj       移动到下一个折叠的开始处       zk      移动支折叠的结束处
    • zz       移动屏幕,将光标所在的位置移动到中间行
    • fx      向右跳到本行字符x处(x可以是任意字符)        Fx        向左跳到本行字符x处输入;   表示继续住下找  输入,表示反方向找

      [separator]

  2. 删除、复制、修改
    • dd        删除一行    dw        删除一个单词(光标在词首)    daw        同dw,光标在单词的任意处    d$        删除到行尾       
    • shift+j      删除行尾的换行符    x       删除单个字符        D       同d$,但比d$更简捷
    • yy        复制一行     yw        复制一个单词(同上)          yaw        同上y$        ...               
    • cc        修改...        cw        修改....                              caw        修改...                                c$        修改....            cl             修改当前字符
    • (、[、{、}、]、)内数据选择
      daB 删除{}及其内的内容 (在非v可视模式下)
      diB 删除{}中的内容
      ab 选择()中的内容
      ib 选择()中的内容( 不含() )

      aB 选择{}中的内容
      iB 选择{}中的内容( 不含{} )
  3. 自动补齐
    • CTRL+p        向上查找匹配单词       CTRL+n        向下查找匹配单词(其次还匹配文件名,匹配行,但不常用,这里就不罗列)        不断输入此命令则循环查找
    • 关于ctags,在源文件中方便的跳转搜索类和函数的功能,现在还不熟悉,在以后的更新中,会加入这部份内容。
    • <C-X><C-L> 行自动完成(超级有用)
    • 补充内容:
      ctags -f /usr/share/vim/vim63/funcs.tags -R /opt/j2sdk/src /usr/src/kernels/2.6.9-5.EL-i686
      ^p 自动补齐上下文已有相近项
      ^n 自动补齐~/.tags中的相近函数
      ^[ 显示~/.tags中的光标下的函数的原型,
      按^t退出函数
      :pta 函数名预览窗口快速打开相应函数所在文件,并将光标定位在对应函数的开头
      K 显示光标下的C函数的man说明手册
  4. 多文件操作(虽不常用,但很实用)
    • :ls :buffers     显示buffer列表
    • :bn                  转到下一个buffer        :bp                  转到上一个buffer
    • :b 3                 转到编号为 3buffer
    • :sp(:vsp)                        横、竖分割打开新文件
    • :e 文件名             vim 将在原窗口中打开新的文件, 若旧文件编辑过, 会要求保存.
    • :set diff            此命令用于比较两个文件(很实用的东东,但要求是在同一窗口中打开的两个文件,最好用vsp打开)
    • 补充内容:
      :%!xxd 按十六进制查看当前文件
      :%!xxd -r 从十六进制返回正常模式

      :n1,n2 co n3 将 n1 行到 n2 行之间的内容拷贝到第 n3 行下。
      :n1,n2 m m3 将 n1 行到 n2 行之间的内容移至第 n3 行下。
      :n1,n2 d 将 n1 行到 n2 行之间的内容删除。
      :n1,n2 w filename 将 n1 行到 n2 行之间的内容保存到文件 filename 中
      :n1,n2 w! Command 将文件中n1行到n2行的内容作为 Command的输入并执行之,
      若不指定 n1、n2,则将整个文件内容作为 Command 的输入。
      :r! Command 将命令 Command 的输出结果放到当前行。
      :nr <文件> 把<文件>插入到第n行
      :so <文件> 读取<文件>,再执行文件里面的命令(文件中的命令应该都是一些ex命令)
      :l1,l2w <文件> 把第l1和第l2行之间的文本写到<文件>中去
      :w >> <文件> 添加到<文件>末尾. 也可以使用行号
      :e! 重新编辑当前文件,忽略所有的修改
  5. 查找、替换
    • /        向下查找        ?       向上查找        *        表示查找光标所停留的单词   n        跳转到下一匹配结果        N        跳转到上一匹配结果
    • %s/aa/bb/g 将文档中出现的所有包含 aa 的字符串中的 aa 替换为 bb(较常用)
  6. 寄存器的使用(较有用)
    • 在复制前可以先指定一个寄存器,方法是在双引号后跟一个字母,例如"a指定了寄存器a,"B指定了寄存器B。
    • "ayy把当前行放进了寄存器a,以后就可以用"ap来粘贴寄存器a里的内容了。
    • 使用:reg来查看当前寄存器中的内容。
    • Vim提供了一个很有用的特殊寄存器"+,它的内容就是系统剪贴板的内容。可以在Vim里用"+p粘贴出来。
  7. 其它常用命令
    • :x=> 保存并退出,:q!=>强行退出,:e!=>放弃修改文件内容,重新载入该文件,ZZ =>同:x命令,:only =>在一个窗口显示多个文件的情况下,仅保留一个文件
    • CTRL+z    挂起文件        shell下jobs        显示挂起文件夹的编号
    • :set number(:set nu)        显示行号        :set
    • :set nonu                         取消显示的行号
    • :eaho $LANG        显示编码
    • :set enc=utf-8         设置文字编码
    • 按v进入“选择模式”        选中要编辑的文字,按“+”符号可自动对齐
    • zc        折叠   zr(zR)打开所有折叠        zm(zM)关闭所有折叠
    • TAB 制表符        >>(<<)       输入此命令则光标所在行向右(向左)移动一个TAB(符号前可加数字)
    • u        撤消命令        ctrl+r        恢复命令
原创粉丝点击