zoukankan      html  css  js  c++  java
  • VI常用命令集合

    VI常用命令集合

    转载自:http://blog.chinaunix.net/uid-20769502-id-112737.html

     

    1、移动及跳转:
    :n 跳转到n行,n表示行号
    nG 跳转到n行,n表示行号
    CTRL-] 跳转到当前光标所在单词对应的主题
    CTRL-O 回到前一个位置
    h 左
    j 下
    k 上
    l 右
    W 向前移动一个word
    b 向后移动一个word
    $ 命令将光标移动到当前行行尾
    ^ 命令将光标移动到当前行的第一个非空白字符上
    0 命令则总是把光标移动到当前行的第一个字符上
    fx 在当前行上查找下一个字符x
    % 跳转到与之匹配的括号处
    gf 命令方便地跳转到光标下的文件名所代表的文件中
    `. 跳转到最近修改过的位置
    “ 跳转到最近光标定位的位置
    m{mark} 将当前光标下的位置名之为标记{mark},从a到z一共可以使用26个自定义的标记
    `{mark} 跳转到一个你定义的{mark}标记
    50%mF 到文件的半中间(”50%”)处设置一个名为F的全局标记
    G 光标定位到最后一行上
    gg 光标定位到第一行上
    50% 光标定位在文件的中间
    H 光标定位在显示屏的第一行
    M 光标定位在显示屏的中间
    L 光标定位在显示屏的最后一行
    CTRL-U 命令会使文本向下滚动半屏
    CTRL-D 命令将窗口向下移动半屏
    CTRL-F 命令将向前滚动一整屏(实际上是整屏去两行)
    CTRL-B 命令将向后滚动一整屏(实际上是整屏去两行)
    zz 命令会把当前行置为屏幕正中央(z字取其象形意义模拟一张纸的折叠及变形位置重置)
    zt 命令会把当前行置于屏幕顶端(t意为top)
    zb 命令会把当前行置于屏幕底端(b意为bottom)
    :jumps 列出关于你曾经跳转过的位置的列表,你最后一个跳转的位置被特别以一个”>”号标记
    :marks 列出自定义的标记,包含VIM内部自定义的标识
    2、搜索
    / 命令可用于搜索一个字符串,在键入的过程中还可以用箭头键和删除键进行移动和修改
    ? 命令与“/”的工作相同, 只是搜索方向相反
    n 继续搜索下一个字符串
    N 命令与“n”的工作相同, 只是搜索方向相反
    * 向下完整匹配光标下的单词
    # 向上完整匹配光标下的单词
    g 向下部分匹配光标下的单词
    Ctrl-P 向前搜索可匹配的单词并完成
    Ctrl-N 向后搜索可匹配的单词并完成
    :set ignorecase 设置忽略大小写
    :set hlsearch 高亮显示搜索结果
    :set incsearch 键入目标字符串的过程中Vim就同时开始了搜索工作
    :set nowrapscan 会使搜索过程在文件结束时就停止
    3、编辑(新增、删除、移动、复制)
    x 代表dl(删除当前光标下的字符)
    X 代表dh(删除当前光标左边的字符)
    D 代表d$(删除到行尾的内容)
    C 代表c$(修改到行尾的内容)
    s 代表cl(修改一个字符)
    S 代表cc(修改一整行)
    diw 删除当前光标所在的word(不包括空白字符),意为Delete Inner Word
    daw 删除当前光标所在的word(包括空白字符),意为Delete A Word
    dG 删除当前行至文件尾的内容
    dgg 删除当前行至文件头的内容
    cis 修改一整个句子,意为change Inner Sentence
    R 让Vim进入replace模式,在此模式下,每个键入的字符都会替换掉当前光标下的字符
    p 取回被删除的内容,可以使用命令记数(在Vim中这叫put)
    P 与”p”一样取回被删除的内容, 不过它把被取回的内容置于光标之前
    yw 复制一个word,同样可以使用命令记数,c表示change而不是copy
    yy 复制一整行
    y$ 复制当前光标至行尾
    ~ 改变当前光标下字符的大小写
    3、在vi中替换字符串:
    :s/vivian/sky/ 替换当前行第一个vivian为sky
    :s/vivian/sky/g 替换当前行所有vivian为sky,g表示global
    :n,$s/vivian/sky/ 替换第n行开始到最后一行中每一行的第一个vivian为sky,n为数字
    :n,$s/vivian/sky/g 替换第n行开始到最后一行中每一行所有vivian为sky
    :.,$s/vivian/sky/g 替换当前行开始到最后一行中每一行所有vivian为sky
    :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky,%表示所有行
    :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g)替换每一行中所有 vivian 为 sky
    :s#vivian/#sky/# 替换当前行第一个vivian/为sky/,可以使用#作为分隔符,此时中间出现的/不会作为分隔符
    :3,$s/^/some string/ 在文件的第一行至最后一行的行首前插入some string
    :%s/$/some string/g 在整个文件每一行的行尾添加some string
    :%s/\s\+$// 去掉所有的行尾空格,“\s”表示空白字符(空格和制表符),“\+”对前面的字符匹配一次或多次(越多越好),“$”匹配行尾(使用“\$”表示单纯的 “$”字符)
    :%s/\(\s*\n\)\+/\r/ 去掉所有的空白行,“\(”和“\)”对表达式进行分组,使其被视作一个不可分割的整体。
    :%s!\s*//.*!! 去掉所有的“//”注释
    :%s!\s*/\*\_.\{-}\*/\s*!!g 去掉所有的“”注释
    3、文件处理
    :w /tmp/1 既然没法存盘,不想放弃所做的所有修改,先临时存到/tmp/1。
    :20,59w /tmp/1 或者仅仅把第20到59行之间的内容存盘成文件/tmp/1。
    :X 文件加密,会提示输入密码。
    vim -x exam.txt 新编辑的文件加密,会提示输入密码。
    vim -R file 只读方式打开文件。
    vimdiff main.c~ main.c 显示两个文件的不同之处
    :args 显示文件列表
    :n 切换到文件2 (n=next)。
    :N 切换回文件1。
    :scriptnames 显示VIM加载的vimrc
    VIM命令的固定模式: 操作符命令+位移命令
    :version 显示VIM版本信息,包含特性、编译方式及配置文件目录
    :map 列出当前已定义的映射
    ptions 打开一个新窗口, 在该窗口的最开头的注释下面是一个选项列表
    :help E37
    5、常用快捷方式:
    “.”:重复上次的修改命令
    “Ctrl-X Ctrl-L”:搜索可匹配的行并完成
    “Ctrl-X Ctrl-F”:搜索可匹配的文件名并完成
    “Ctrl-G”:显示文件名,当前光标所在行的行号,总的行数,以及当前行所在文件中的百分比和当前光标所在的列的信息
    “ZQ”:无条件退出
    “ZZ”:(存盘退出)
    “ga”:显示光标下的字符在当前使用的encoding下的内码
    “guw”:光标下的单词变为小写
    “gUw”:光标下的单词变为大写
    “xp”:左右交换光标处两字符的位置
    “ddp”:上下交换光标处两行的位置,p命令把它取回来(在Vim中这叫put)
    “J”:两行合并为一行, 也就是说两行之间的换行符被删除了
    “u”:撤消上一次命令
    “Ctrl+R”:重做上一次命令
    “o”:在当前行的下面另起一行, 并使当前模式转为Insert模式
    6、执行外部命令:
    “:!命令”:可以在 Vim 中执行一个外部命令
    “:r!”:命令可以在外部命令执行的结果插入到当前编辑的缓冲区中
    “:%!nl”:要对包含空行的所有行进行编号
    “:!echo $VIMRUNTIME” 显示VIM的目录(/usr/share/vim/vim63)
    “vimtutor” 显示VIM的30分钟的教程
    7、set选项:
    :set list 查看制表符,现在每个制表符都会以^I显示. 同时每行行尾会有一个$字符。
    :set key= 去掉文件加密。
    :syntax enable 打开彩色
    :set number? 显示number的值
    :set number& 恢复选项的默认值
    :set autoindent 让Vim在开始一个新行时对该行施以上一行的缩进方式
    :set showcmd 在Vim窗口的右下角显示一个完整的命令已经完成的部分
    :set autowrite 设置自动存盘
    :set backup 设置备份,生成的备份文件名将是原文件名后面附加一个~
    :set backupext=.bak 设置备份文件名后辍

    标签
    :tabnew 打开新标签页.
    :tabe <file> 在新标签页打开文件.
    <ctrl> + PageUp, PageDown 切换标签页.
    :tabnext, tabprev 切换标签页,Putty 下只能用这个.
    文件
    :e <file> 打开文件.
    :enew 新文件.
    :w 保存.
    :wa 全部保存.
    :w <file> 另存为.
    :wq 保存并退出.
    :x 保存并退出.
    :q 退出.
    :qa 全部退出.
    :q! 强制退出.
    文本
    esc 切换命令模式 (距离太遥远了,用 Ctrl+C 代替吧).
    i 插入模式.
    I 在当前行开头插入.
    R 替换模式.
    a 在光标后插入.
    A 在当前行尾部插入.
    v Visual 模式按字符选择.
    V Visual 模式按行选择.
    光标
    h 左移光标.
    j 下移光标.
    k 上移光标.
    l 右移光标.
    gg 将光标移到文件头部.
    G 将光标移到文件尾部.
    #G 移动光标到指定行#. 例如: 5G
    编辑
    u 撤销.
    . 重做.
    dd 删除当前行.
    #dd 删除几行. 例如: 3dd
    d^ 删除到行首.
    d$ 删除到行尾.
    :#,&d 删除 # 到 & 行. 例如: 3,5d
    yy 拷贝当前行到剪贴板.
    #yy 拷贝 # 行到剪贴板.
    y^ 从文件头开始拷贝.
    y$ 拷贝到文件尾部.

    :#,&y 拷贝 # 到 & 行. 例如: 4,5y
    p 在光标后粘贴.
    P 粘贴到光标前.

    >> 增大缩进.
    << 减少缩进.
    == 自动缩进.
    查找替换
    /# 查找 #. 例如: /printf
    ?# 反向查找 #.
    n 查找下一个.
    N 反向查找下一个.
    :s/old/new/g 当前行无提示替换.
    :%s/old/new/g 无提示替换.
    :%s/old/new/gc 确认替换.
    :#,&s/old/new/g 从 # 到 & 行无提示替换.
    书签跳转
    :marks 查看所有书签, 输入 ":<num>" 可跳转.
    m<name> 定义书签, 如 ma 在当前行定义名为 a 的书签.
    `<name> 跳转到某书签, "`" 为键盘 Tab 上一行第一键.
    :jumps 查看所有跳转记录, 输入 ":<num>" 可跳转.
    <ctrl> + o 返回上一次跳转处.
    <ctrl> + i 和 <ctrl> + o 反向转处.
    Ctags
    :! ctags -R . 生成 ctags 文件.
    <ctrl> + ] 查看函数定义.
    <ctrl> + T 返回.
    shift + k 查看函数 man 帮助信息.
    Code
    gg=G 源码格式化
    其他
    ! <command> 执行命令.
    :r <file> 插入文件内容.
    :r !<command> 插入命令输出结果.
    :cd <path> 修改默认工作目录.

  • 相关阅读:
    一张图帮你分清scroll、offset、client
    js两种显示日期的方法
    理解js的全局变量和局部变量
    中文输入+英文标点+快速编辑Markdown文本+Sublime+Snippet
    Markdown 使用方法
    get和post的区别
    js对象属性方法大总结(收集)
    bfc (收集的)
    客户端网页编程知识总结
    html学习总结
  • 原文地址:https://www.cnblogs.com/techstone/p/2761822.html
Copyright © 2011-2022 走看看