`

Vim 学习

阅读更多

视频教程: http://www.akae.cn/study/vim.html

参考网页:http://hegangus.blog.163.com/blog/static/63956884201051774418761/

http://www.followstars.cn/article.asp?id=65

 

1. 基本命令

 

    显示行号:set nu

    不显示行号: set nonu

    到行首:0 或Home键

    到行尾:$ 或End键

    获取正在编辑文件的文件名 :file

    将选中的字符变成小写:u
    将选中的字符变成大写:U
    将选中的字符变大小写反转:~

    将选中的文字向右移一个TAB:> 
    将选中的文字向左移一个TAB:<

    将选中的代码格式化:=

 

    设置编码格式 :set fenc=utf-8

 

    撤销

    撤销前n步操作:undo n

    撤消历史向前走:g+

    撤消历史向后走:g-

    复制当前行:yy

    选中复制:v  方向键选中  y进行复制

    粘贴:p

 

    删除

    x: 删除当前光标下的字符(dl的快捷命令)。
    X: 删除当前光标之前的字符(dh的快捷命令)。
    D: 删除自当前光标至行尾的内容(d$的快捷命令)。
    dw: 删除当前光标至下一个word的开头。
    db: 删除当前光标至前一个word的末尾。
    diw: 删除当前光标所在的word(不包括空格)。
    daw: 删除当前光标所在的word(包括空格)。
    dG: 删除当前行至文件尾的内容。
    dgg: 删除当前行至文件头的内容。

    df: 加一个字母,删除光标到该字母之间的字符(限于当前行)

 

    移动光标

    w: 以单词为单位移动光标,3w来使光标移动3个单词的位置。同理,3j、3k等也是可以的。
    b: 类似w,光标的移动方向与w相反。
    e: 光标移动到下一个单词的末尾。
    ge: 与e的作用也是类似的,只是光标的移动方向与e相反。
    $、End: 将光标移动到本行的末尾, 接受计数命令,如3$的作用是移动到光标后第三行的末尾。
    ^: 将光标移动到当前行的第一个非空格字符。
    0、Home:键的作用是将光标移动到本行的最前面。值得注意的是,^和0都是不支持计数命令的。

    f: 之后加一个字母,就可以把光标定位到本行的下一个此字母所在的位置。

    F: 类似f,只是搜索方向相反。它们都是支持计数命令的。可惜的是,这两个命令并不支持中文的搜索。

    [number]加上G:跳转到指定行

    gg: 直接跳转到文件最开始的那行。
    [number]加上%:跳转到文件百分之多少的位置。
    H(home)、M(middle)、L(last): 在当前这一屏幕上移动光标。
    滚屏:那么ctrl+U和ctrl+D分别是向上和向下滚动半屏。而ctrl+E和ctrl+Y分别是向上和向下滚动一行。

    zz: 将当前行置于屏幕中央

    zt: 将当前行置于屏幕第一行

    zb: 将当前行置于屏幕最后一行。

    位置标记,使用m加上a-z这二十六个字母,当你需要跳转的时候,可以通过命令`加上你定义的标记实现。当你忘记自己定义的标记时,可以通过:marks命令查看

 

    ctrl-e: 屏幕向上滚1行
    ctrl-y: 屏幕向下滚1行
    ctrl-u: 屏幕向上滚1/2屏
    ctrl-d: 屏幕向下滚1/2屏
    ctrl-f: 屏幕向上滚1屏
    ctrl-b: 屏幕向下滚1屏

 

2. 查找替换命令

     (1) :g/null/d

    找到null的行并且删掉
     (2) 简单替换表达式
     替换命令可以在全文中用一个单词替换另一个单词:
    :%s/four/4/g
    “%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可。
     如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “\<” 来指定匹配单词开头:
     :%s/\<four/4/g
     显然,这样在处理 “fourty” 的时候还是会出错。用 “\>” 来解决这个问题:

    :%s/\<four\>/4/g

    如果你在编码,你可能只想替换注释中的 “four”,而保留代码中的。由于这很难指定,可以在替换命令中加一个 “c” 标记,这样,Vim 会在每次替换前提示你:

    :%s/\<four\>/4/gc

    (3) 删除多余的空格
    要删除这些每行后面多余的空格,可以执行如下命令:

    :%s/\s\+$//
    命令前面指明范围是 “%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是

     “\s\+$”。这表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。
    (4) 匹配重复性模式
    星号项 “*” 规定在它前面的项可以重复任意次。因此:
    /a*
    匹配 “a”,”aa”,”aaa”,等等。但也匹配 “” (空字串),因为零次也包含在内。星号 “*” 仅仅应用于那个紧邻在它前面的项。因此 “ab*” 匹配 “a”,”ab”,”abb”,”abbb”,等等。如要多次重复整个字符串,那么该字符串必须被组成一个项。组成一项的方法就是在它前面加 “\(”,后面加 “\)”。因此这个命令

    /\(ab\)*

    匹配: “ab”,”abab”,”ababab”,等等。而且也匹配 “”。
    要避免匹配空字串,使用 “\+”。这表示前面一项可以被匹配一次或多次。
    /ab\+
    匹配 “ab”,”abb”,”abbb”,等等。它不匹配 后面没有跟随 “b” 的 “a”。
    要匹配一个可选项,用 “\=”。 例如:

    /folders\=
    匹配 “folder” 和 “folders”。
    (5) 指定重复次数
    要匹配某一项的特定次数重复,使用 “\{n,m}” 这样的形式。其中 “n” 和 “m” 都是数字。在它前面的那个项将被重复 “n” 到 “m” 次 (|inclusive| 包含 “n” 和 “m”)。例如:

    /ab\{3,5}
匹配 “abbb”,”abbbb” 以及 “abbbbb”。
    当 “n” 省略时,被默认为零。当 “m” 省略时,被默认为无限大。当 “,m” 省略时,就表示重复正好 “n” 次。例如:

         模式            匹配次数
         \{,4}             0,1,2,3 或 4
         \{3,}             3,4,5,等等
         \{0,1}            0 或 1,同 \=
         \{0,}             0 或 更多,同 *
         \{1,}             1 或 更多,同 \+
         \{3}              3

    (6) 多选一匹配
    在一个查找模式中,”或” 运算符是 “\|”。例如:

    /foo\|bar
    这个命令匹配了 “foo” 或 “bar”。更多的抉择可以连在后面:

    /one\|two\|three
    匹配 “one”,”two” 或 “three”。
    如要匹配其多次重复,那么整个抉择结构须置于 “\(” 和 “\)” 之间:

    /\(foo\|bar\)\+
    这个命令匹配 “foo”,”foobar”,”foofoo”,”barfoobar”,等等。
    再举个例子:
         /end\(if\|while\|for\)
    这个命令匹配 “endif”,”endwhile” 和 “endfor”。

 

3. 分割窗口

 

参考网页:http://hi.baidu.com/esta_pessoa/blog/item/0d274c097347ebad2fddd458.html

 

    同时打开多个文件  

    上下窗口:vim -o file1 file2 file3 。。。

    左右窗口:vim -O file1 file2 file3 。。。

    在vim中新建文件分割窗口显示: :new(上下打开)  :vnew(左右打开)

 

    比较两个文件

    终端打开:vimdiff file1 file2

    vim中打开:diffsplit file 或vertical diffsplit file

    ]c 跳转到下一个差异点
    [c 跳转到上一个差异点

    折行:

        :set foldenable 使能折行
        zc: 关闭一个折行
        zo: 打开一个折行
        zM: 关闭所有的折行
        zR: 打开所有的折行

    手动更新修改高亮显示::diffupdate

    消除差异

        :dp 将当前窗口光标所在行put到另外一个窗口的对应行上,以消除差异

        :do 将另外窗口光标所在行包含到当前窗口对应的行上,以消除差异

        简单理解:dp就是把我的给你,do就是把你的给我

 

    窗口操作

    关闭窗口:close,ZZ,q,only

    全部关闭:qall,wall(存盘退出)

 

    移动窗口:调整文件顺序

        ctrl-w K    会使当前窗口移动到上面并扩展到整屏的宽度。
        ctrl-w H    把当前窗口移到最左边
        ctrl-w J    把当前窗口移到最下边
        ctrl-w L    把当前窗口移到最右边

 

    切换窗口:hjkl 可以用方向键代替

        ctrl-w h    跳到左窗口
        ctrl-w j     跳到下窗口
        ctrl-w k    跳到上窗口
        ctrl-w l     跳到右窗口
        ctrl-w t    跳到最顶上窗口
        ctrl-w b    跳到最底下窗口

 

4. Vim显示行号、语法高亮、自动缩进的设置

 

    在UBUNTU中vim的配置文件存放在/etc/vim目录中,配置文件名为vimrc
    在Fedora中vim的配置文件存放在/etc目录中,配置文件名为vimrc
    在终端 输入以下命令来编辑vimrc配置文件:
    sudo vim /etc/vim/vimrc 或者 sudo gedit /etc/vim/vimrc

 

    (1) 显示行号
    在文件末端添加一新行,输入 set nu
    (2)语法高亮
    在文件中找到 "syntax on   这一行,去掉前面的双引号",双引号是注释的意思
    (3)自动缩进
    在文件末尾添加一行,输入  set autoindent
    在添加一行,输入         set cindent
    其中 autoindent 是自动缩进; cindent是特别针对 C语言语法自动缩进

    注:如果设置好以上设置后,Vim没有作出相应的动作,那么请你把你的VIM升级到最新版,一般只要在终端输入以下命令即可:sudo apt-get install vim  整理一下自己原来所学的知识和工作中用的技术  骑驴找马

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics