查看: 133|回复: 0

[讨论] vi常用命令

[复制链接]

10

主题

0

好友

98

积分

童生

Rank: 2

  • TA的每日心情
    开心
    2017-9-10 14:49
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-8-20 11:23:39 |显示全部楼层
    插入:
    i                从光标当前位置开始插入
    a         从光标当前位置的下一个字符开始插入
    o                在光标位置的下行插入一个空行,再进行插入
    O                在光标位置的上一行插入一个空行,再进行插入
    I                从光标所在行的开头开始插入正文
    A                从光标所在行的末尾开始插入正文
    esc=(ctrl+[)        
    文件保存与退出:
    :w                 保存文件
    :w <filename> : 另存为
    :w!                强制保存文件
    :q                退出
    :q!                强制退出
    :x                 = :wq
    文件写入与打开:
    :w filename        保存文件为给出的文件名
    :w! filename        强制保存文件为给出的文件名
    :f filename         将当前文件重命名为filename
    :r filename        插入文件内容到光标指定的位置
    :e filename         编辑新文件(打开另一个文件进行编辑)
    :e! 放弃对文件的修改,并加裁原始的文件内容
    复制粘贴:
    [n]x                 删除从光标开始的连续n个字符
    [n]dd                 删除从光标开发的n行
    [n]yy                复制从光标开始的n行
    y$                从光标位置复制在行尾
    p                粘贴
    gp 粘贴
    u 撤消
    U 撤消对一行的全部操作
    ctrl+r 重做(反撤消)
    .  重复上次操作
    yw 复制一个word
    dw 剪贴一个word
    cw 修改一个word
    D 剪贴光标到行尾
    C 修改光标到行尾
    选择:
    v  按字符选择
    V 按行选择
    ctrl+v 按块选择
    光标跳转:
    h、j、k、l        左、下、上、右
    H、M、L                屏幕最上边、屏幕中间位置、屏幕最下边
    gg  跳到文件第一行
    G    跳到文件最后一行
    $        跳到行末
    0(数字0)跳到行首
    [num]gg(或[n]G)    跳到文件第n行
    [n]H                跳到屏幕第n行
    fx  光标移动到本行之后第一此出现“x”的位置;如:fa ,移动到下一次a出现的位置
    Fx  光标移动到本行之前一此出现“x”的位置;如:fa ,移动到上一次a出现的位置
    %   在前后括号({}() )位置之间移动
    :n                跳到第n行(同[n]G)
    w                光标向右移动一个字
    W   光标移动到下的个空格之后
    b                光标向左移动一个字
    B   光标移动到上一个空格之后
    num%  跳到文件num%处 , 如50%
    编辑模式下按v        进入可视状态进行内容选择
    [n]shift + >        所选内容向右移动一个tab
    [n]shift + <        所选内容向左移动一个tab               
    查找替换:
    /string                 查找字符串 ,配合n(next)使用
    *  向后搜索光标所在位置的一个word
    #  向前搜索光标所在位置的一个word
    /\<xxx  查找以xxx开头的字符串
    /xxx\>  查找以xxx结尾的字符串
    /\<xxx\> 完全匹配查找
    d/int main  从光标所在位置开始删除,直到遇到int main
    :s/str1/str2                str2替换行中首次出现的字符串str1
    :s/str1/str2/g                str2替换行中所有的字符串str1
    :%s/str1/str2/g   用str2替换全文中所有的字符串str1,不询问,强制替换
    :%s/str1/str2/gc  用str2替换全文中所有的字符串str1,询问
    fd        查找本行第一个d字符
    ;        下一个
    ,        上一个
    vi:
    打开或新建:
      vi <filename>         #命令行
      :ed <filename>        #最后一行模式
      :fin[d] <path/file>   #在路径path中查找文件,然后编辑它
      new <file>            # 在新窗口中编辑文件
    窗口操作:
      :sp(或ctrl+w+s): 打开一个新窗口,编辑相同的内容。
      :new(或ctrl+W+n): 打开一个空的北新窗口。
      ctrl+w+w: 在多个窗口间切换
    J 删除行末的换行符,将下行与本行合并为一行
    滚屏:
    ctrl+u[p]    向下滚半屏
    ctrl+d[own]  向上滚半屏
    ctrl+f[ront] 向下滚一屏
    ctrl+b[ack]  向上滚一屏
    ctrl+e  向下滚一行
    ctrl+y  向上滚一行
    zz    将光标所在的行放在屏幕中间
    zt    将光标所在的行放在屏幕第一行 top
    zb    将光标所在的行放在屏幕最后一行 botton
    Go  跳到文件尾部去插入
    标签:
      :tabe [file] 打开新标签并在新标签中编辑file所指的文件
      :[num] gt 在不同的标签之间切换 num指的是第几个标签
      :tabo 关闭所有其它的标签页
      :tabs 列出标签页和它们包含的窗口
      :tabfir[st] 跳转到第一个标签
      :tabl[ast]   跳转到最后一个标签
      
    vim比较文件内容:
      vimdiff main.c main2.c
      
    vim设置:
    set number
    set nonumber
    set ignorecase    #忽略大小写 (查找字符串时)
    set noignorecase
    set ruler         #显示当前光标所在位置
    set nuruler
    set hlsearch      #高亮显示 (查找字符串是,找到后高亮显示)
    set nohlsearch
    set incsearch     #在输入字符串时就开发查找
    set noincsearch
    syn on #高亮显示
    set backspace=2  #backspace可用
    编程编:
    1. 打开include 的文件:
      1) 光标放在文件名上,按 ctrl+w  f ,在一个水平分割的窗口中打开。
      2)        光标放在文件名上,按gf, 在同一个窗口中打开。
    2. 通过find命令打开文件:
      1)先通过set path设置查找的目录:
         set path=.,./**,/usr/include  表示在当前目录,当前目录下的所有子目录,和/usr/include目录下进行查找
       2)设置好目录后在vi下用:find filename即可查找并打开文件信盈达企鹅要妖气呜呜吧久零就要。
    3. ctags  
            1).在项目目录下用“ctags -R .”产生tags文件。 可将ctags命令写入makefile文件中
            2).在vim中设置tags文件“set tags=tags”
            3).在vim中通过tag命令中转到函数:tag main
        :tag {ident}         “中转到指定的标签
        :tags                "显示标签
        :Ctrl+]                “跳转到当前光标下的标签(函数声明处)
        :Ctrl+T                “跳转到标签栈中较早的标签(函数调用处)
            taglist串口中将光标移动到某个tag上,按空格键会在状态栏上显示原型
    4. taglist
            :TlistOpen 打开taglisg
            :p "预览taglist窗口中光标所在位置的tag。
            "在新窗口中打开光标所在位置的tag       
            :l "展开tag
            :+ "展开tag
            := "展开所有tag
            :- "折叠tag(不用shift)
            :* "折叠所有tag
    6. MiniBufExplorer
            此插件会使窗口上显示一个buff清单,可以在该窗口上来选择打开某个buf文件
            <Tab> :跳到下一个buffer名上
            <shift+Tab>:跳到上一个buffer名上

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /4 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-9-22 03:34 , Processed in 0.082088 second(s), 9 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部