• vim 使用技巧


    http://blog.163.com/xychenbaihu@yeah/blog/static/1322296552010111293855626/

    跳到开始结尾处

     gg:将光标移动到文件的开始位置。

     G: 将光标移动到文件的最后一行。

    行号+G可定位到指定的行上,g/要找的词,可显示所有含有要找的词的行号和内容。

    跳到某一行

    1、对当前行做标记,例如ma,即标记当前行为a行,mb,即标记当前行为b行,mc等等。

    要回到a行使用'a。要回到b行使用'b

    2、在命令行中输入:number+enter就可以将光标移动到指定的行

    跳到变量函数定义处

          gd变量函数定义处

    跳到头文件

    gf跳到头文件定义处  ctl + ^  返回

    源码对齐

                gg + = +G

    //先gg跳转到文件开始位置,再输入=,再输入G,vim将自动进行C和C++源码的对齐操作。

    自动补全

    在linux下编写c语言程序,命名规范要求变量名,函数名是用“_”将单词分隔开的。

    比如:

    int    value_name = 5;

    采用这种方法的好处在于vim进行匹配时,比较方便。

    在vim中使用ctrl+n    或  ctrl+p进行匹配。

    当输入value_使用ctrl+n或者ctrl+p能够将后面的部分自动匹配。

    以实验一下,那种方式更适合我们。

    vim复制:

         复制字符串:

                  ctrl+v配合“上下左右”键,选中字符串,使用y进行复制。

        复制n个单词:

                 y+number+w

        复制一行:

                 yy

        复制n行:

                 nyy

        复制一块:

               ctrl+v    配合“上下左右”键,选中指定块,使用y进行复制(有一定的局限性,复制的宽度受任意一行宽度的影响,准确的的说复制的是块,是一个矩形)。

     不知复制多少行:

      shift + v 配合“上下”键,使用y可以复制多行 

    vim粘贴:

           在vim中使用p 或 P进行粘贴。

    命令行模式下粘贴

    按下ctrl+r,命令行上会出现一个冒号",此时输入对应的寄存器就行了。

    删除/移动/复制

    命令模式,无:输入。dd为删除光标行,d+数字 回车删除当前行开始的数字+1行。

    在:输入d数字,则为删除当前行开始的数字行。

    :m数字,把当前行移动到数字行处,只一行。

    :co数字,把当前行COPY到数字行之后,数字可以用+来表示位移几行。比如:co+2就是把当前行COPY到当前行号+2行后。

    :行号1,行号2 co行号3 ,把行号1到行号2之间的内容复制到行号3后面,co换成m就是移动多行。

    如果不是整行的比如把第5行的某个字符后到10行某个字符前的内复制到12行某个字符前,可以这样做:

    1, 光标移到第5行的你想复制的那个字符前。

    2, 按下 v.

    3, 按向下键(或J)到了第10行时, 按向左键,移到你想复制的字符后。然后按下 y

    4, 最后移光标到第12行的某个字符前按下p  

    vim删除:

         字符及字符串的删除:

          删除一个字符,使用x。

          删除多个字符,使用ctrl+v进入可视模式,然后移动键盘上的“上下左右”键,将要删除的字符串选中,然后使用d就删除了。

          行及多行,块的删除:

          删除一行,使用dd;

          删除n行,使用ndd;

          删除不知道多少行,首先使用ctrl+v进入可视模式,然后移动键盘上的“上下左右”键,将要删除的行选中,然后使用d就删除了。

    vim撤销:

          vim中的撤销有两种,一种是向左撤销,一种是向右撤销。比如我们刚删除了一行,想将其回复,使用u就可以,恢复后又想删除,使用ctrl+r就可以。 

    另外一半符号匹配

         在vim中使用%可以匹配另外一半符号出现的位置。 

       当我们将光标放在第一个大括号哪里,想找到另外一个与之匹配的大括号时,使用%。就可以了。

    多标签

    标签页操作

    建立多标签页:tab split

    标签页切换gt

    新建标签:tabnew

    多窗口-屏幕分割

    备注:^W为在一般模式下直接按 ctr + w,不用输“:”

    水平切割^Ws

    垂直切割^Wv

    关闭当前窗口^Wc

    窗口切换

      切换到左窗口^Wh

      切换到右窗口^Wl

      切换到上窗口^Wk

      切换到下窗口^Wj

      (使用^w + 方向键也行的)

    窗口移动

      当前窗口左移^WH

      当前窗口右移^WL

      当前窗口上移^WK

      当前窗口下移^WJ 

    窗口大小

      最大高度^W_

      最小高度^W1_

      最大宽度^W|

      最小宽度^W1|

    屏幕切割

    水平切割:

    :split

    :split xxx(要打开的文件名)

    :new(在新窗口创建文件)

    <CTRL+W> k:跳转到上面的窗口 (若为大写K,则是把当前窗口调至上方)

    <CTRL+W> j:跳转到下面的窗口 (类似于上)

    垂直切割:

    :vsplit

    :vsplit xxx(要打开的文件名)

    :vnew(在新窗口创建文件)

    :only        取消分屏

    <CTRL+W> h:跳转到左边的窗口 (若为大写H,则是把当前窗口调至左方)

    <CTRL+W> l:跳转到右边的窗口 (类似于上)

    <CTRL+W> w:在窗口之间跳转

    <CTRL+W> +:扩大窗口 (或在当前窗口位置,输入命令:res +9)

    <CTRL+W> -:缩小窗口

    在一个窗口下,打开3个文件。

    先 打开一个,vim 文件名 (记住一定是vim啊!)

    然后在vi的命令输入状态下输入

    :sp 另外一个文件的路径及文件名

    如此就可以在一个窗口打开3个文件了。

    可以使用 ctrl + 两次按 w

    在3个文件中切换

    常见模式

    普通模式

    在普通模式中,用户可以执行一般的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。

    插入模式

    在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。

    在插入模式中,可以按ESC键回到普通模式。

    可视模式

    这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。

    命令行模式

    在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(":"键),搜索("/"和"?"键)或者过滤命令("!"键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。

    进入插入模式

    i    insert,光标前插入

    I    行首插入

    a    append,光标后插入

    A    行末插入

    o    当前行下面添加新空白行

    O    当前行上面添加新空白行

    移动光标

      k

    h    l    

      j

    Backspace  Space  左/右移一格

    b    w    左/右移一字

    e         移动到字尾

    0    $    行首/尾

    Return      下一行行首

    选中文本

    在正常模式下(按ESC进入)按键v进入可视化模式,然后按键盘左右键或h,l键即可实现文本的选择。

    其它相关命令:

    v:按字符选择。经常使用的模式,所以亲自尝试一下它。

    V:按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用。

    CTRL+v:按块选择。非常强大,只在很少的编辑器中才有这样的功能。你可以选择一个矩形块,并且在这个矩形里面的文本会被高亮。

    vim查找:

    a、查找第几行,在命令行中输入:number+enter就可以将光标移动到指定的行。

     b、查找某个字符串,在命令行中输入:/string,光标就移动到第一个出现string的行,当输入n,光标将移动到下一处出现string的行,再输入n,将继续向下找,当找到最后一个string所出现的行,再输出n时,就回到第一次出现string的行。

      (/string查找指定字符串,n从开始向结束,即向下。N从结束向开始,即向上)

    当在命令行输入:/string时,光标将移动到最后一个出现string的行,当输入N,光标将移动到最后一次出现string的行,继续输入N,将继续向上一次出现string的行移动。

    字符替换

    如果要将vim里的一个a字符改成c ——讲光标移到a处,然后按r放开后再按c。

    交换位置

    交换两个相邻字母的位置:按x然后按p (剪切再粘贴)

    查找替换

    下面转自:http://www.nonozone.net/vim-model-commonly-used-in-the-replacement-summary.html

    1,简单替换表达式

    替换命令可以在全文中用一个单词替换另一个单词:

    :%s/four/4/g

    “%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可

      如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “<” 来指定匹配单词开头:

           :%s/<four/4/g

    显然,这样在处理 “fourty” 的时候还是会出错。用 “>” 来解决这个问题:

           :%s/<four>/4/g

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

           :%s/<four>/4/gc

    2,删除多余的空格

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

           :%s/s+$//

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

    “s+$”。这表示行末($)前的一个或者多个(+)空格(s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。

    3,匹配重复性模式

    星号项 “*” 规定在它前面的项可以重复任意次。因此:

           /a*

    匹配 “a”,”aa”,”aaa”,等等。但也匹配 “” (空字串),因为零次也包含在内。星号 “*” 仅仅应用于那个紧邻在它前面的项。因此 “ab*” 匹配 “a”,”ab”,”abb”,”abbb”,等等。如要多次重复整个字符串,那么该字符串必须被组成一个项。组成一项的方法就是在它前面加 “(”,后面加 “)”。因此这个命令:

           /(ab)*

    匹配: “ab”,”abab”,”ababab”,等等。而且也匹配 “”。

    要避免匹配空字串,使用 “+”。这表示前面一项可以被匹配一次或多次。

           /ab+

    匹配 “ab”,”abb”,”abbb”,等等。它不匹配 后面没有跟随 “b” 的 “a”。

    要匹配一个可选项,用 “=”。 例如:

           /folders=

    匹配 “folder” 和 “folders”。

    4,指定重复次数

    要匹配某一项的特定次数重复,使用 “{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

    5,多选一匹配

    在一个查找模式中,”或” 运算符是 “|”。例如:

           /foo|bar

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

           /one|two|three

    匹配 “one”,”two” 或 “three”。

      如要匹配其多次重复,那么整个抉择结构须置于 “(” 和 “)” 之间:

           /(foo|bar)+

    这个命令匹配 “foo”,”foobar”,”foofoo”,”barfoobar”,等等。

      再举个例子:

           /end(if|while|for)

    这个命令匹配 “endif”,”endwhile” 和 “endfor”。

    6,指定单位替换

    :行号1,行号2s/替换前/替换后/g,替换指定行号1和行号2之间的内容。

    如果替换时需确认那么在g后加个c参数。这样每一个替换前都需要确认

    命令组合

    目前用vim感觉到最爽的地方,特别是t/f,如从光标开始向后删除到字符'}' -> dt},从光标开始向前删除到字符'{' -> dt{

    http://blog.csdn.net/iamduoluo/article/details/7430637

    安装vim包:  

    sudo apt-get install vim

    普通用户到超级用户的切换: 

    sudo su

    退出超级用户:

    ctrl+d  或者exit

    vim有三种常用模式:普通模式(默认)、编辑模式、命令行模式。

    普通模式到编辑模式:i   退回普通模式:esc按键(escape)

    普通模式到命令行模式用:(冒号)   退回普通模式:esc按键(escape)

    :w  ——内存中的东西写入到磁盘。相当于保存

    :q  ——退出编辑器vim

    :wq  ——保存,退出

    vim的基本操作

    dd  ——删除一行

    cc  ——修改一行

    d 2 w  ——从光标所在处开始,删除两个单词

    dG  ——从光标所在处,一直删除到结尾

    u  ——撤销(undo)

    :h  ——vimhelp

    :bd  ——bufferdelete:删除缓冲区,关闭帮助内容

    :h bd  ——查看关于bd的解释文档 bdhelp

    在help文档里面,当光标移动到链接(如tutor)的地点时,用ctrl+右方括号 打开链接;用ctrl+o关闭链接。

    vimtutor ——bash命令,vim教程

    粘贴和复制:

    shift+v  ——选中光标所在行

    按j、k选中多行

    d  ——剪切

    y  ——(yank)复制,原来的文本保留

    p  ——(past)粘贴

    在一个文件里打开两个文件:

    :vnew  ——竖着打开两个文件

    :new  ——横着打开两个文件

    :bd  ——光标光标所在的文件

    ctrl+ww  ——光标在窗口间切换

    关闭vim的快捷键:shift+zz  相当于:wq!

    在vim中用 / woed  ——查找

    n  ——查找下一处

    N  ——查找上一处

    :3  ——跳转到第三行

    u  ——撤销undo

    ctrl+r ——返回 redo

    vim的配置操作:

    set nu  ——显示行号

    set nonu  ——取消显示行号

    set ai  ——自动缩进(auto indent)

    set noai  ——取消自动缩进

    map <tab>:bn<cr>  ——按下tab执行:bd的功能:影像

    这些设置都可以写到一个配置文件里,成为默认的规则。在/home/shsf/.vimrc  里面进行配置。在.vimrc(隐藏文件)里面双引号表示注释

    关于:bn  ——已经用vim打开了文件a。命令行里面输入:e  (编辑)或者:o(打开)另一个文件。这样用:bn切换缓冲去。用来在两个文件的切换显示。:bd只关闭当前缓冲区而:wq是关闭vim。

    vim的插入模式的快捷键

           ctrl+n  ——联想补齐一个单词(这个单词在本文件中已经出现过)

           ctrl+x+l  ——行补齐,输入行首字母可以补齐一行

           ctrl+x+k  ——字典功能,输入单词的前几个字母,显示字典里的相关单词

    字典需要的.vimrc配置内容:

    set dictionary+=~/.vim/dict/simple

    set dictionary -=/usr/share/dict/words dictionary +=/usr/share/dict/word

    后两个功能的实现需要一些插件。还有象taglist (象目录一下的显示在一旁)、snipmate(用简单的几个字母显示一个小的片段,比如输入fun按下tab后就显示处函数的结构)

    怎样得到插件?

    git clonegit://github.com/happypeter/peter-vim.git 得到所需的插件

    然后把peter-vim改名为.vim(隐藏文件)并移动到自己的HOME即/home/shsf/下

    (读里面的readme文件)

    vim的录音

    在normal mode下输入一个q在输入任何一个字母就进入recording列入按下qq后面的q表示记录区。之后对vim的操作都被记录下来包括进入insert mode 。退回到normal mode以后按q退出recording。还在normalmode下按@+q播放处理。就是把以上做的重复做一遍。

    vimdiff a b ——用vim以字母为单位显示文件a和文件b的不同(bash命令)

    :diffsave  ——在vim中查看文件的更改内容,高亮显示缓冲区里跟硬盘文件的不同(同一个文件而言的)

    jj as esc ——用map完成配置。这样方便vim操作。

    locate filename  ——定位文件,显示文件的绝对路径。

    vim常用快捷键

     2、vim中“上下左右”移动光标:

                  h      将光标向左移动。

                  j       将光标向下移动。

                  k      将光标向上移动。

                  l       将光标向右移动。 

    normal mode

    移动光标

    h j k l

    ctrl+f

    forward 向前翻页

    ctrl+b

    backward 向后翻页

    ctrl+u

    up 向上移动半屏

    ctrl+d

    down 向下移动半屏

    0

    the first number  移动到行首字符

    $

    移动到行尾字符

    shift+h

    head 移动光标第一行

    shift+m

    middle 移动到中间行

    shift+l

    low 移动到最下一行

    gg

    到首行

    G

    最后一行

    5<cr>

    到第5

    /word

    查找word

    n

    向下再查找word

    N

    向上再查找word

    x X

    后前删除(del);X向前删除(backspace)

    dd

    删除一行

    5dd

    删除光标开始向下的5

    d1G

    删除光标以前的

    dG

    删除光标以后的

    yy

    复制(参考删除)

    nyy

    y1G

    yG

    p P

    p向下粘贴;P向上粘贴

    u

    undo

    ctrl+r

    redo

    .

    小数点:重复上一步操作

    shift+v

    行选

    ctrl+v

    块选

    insert mode

    ctrl+n

    单词补齐(以前出现过)

    ctrl+x+l

    行补齐

    ctrl+x+k

    字典功能(用ctrl+n/p换词)

    commend mode

    :set nu

    number

    :set nonu

    no number

    :set ai

    auto indent

    :set noai

    no autoindent

    shift+zz

    :wq!

    :100,200/a/b/g

    100到200行间的a换成b

    :1,$s/a/b/g

    全换

    :1,$s/a/b/gc

    全换有提示等用户确认

    多窗口

    :sp

    不加文件名再代开已打开的文件,也可以加文件名,用:q

    ctrl+ww

    光标窗口切换

    :vnew (filename)

    竖着再代开一个新窗口,用:bd

    :e或:o

    打开一个文件覆盖原先的,用:bd关,:bn切换

    注释

    注释一行  ——ctrl+c

    注释一块:块选然后 ctrl+c

    函数体折叠

    把光标移动到函数开始的 { 处, 然后(normal mode)输入zf%——创建函数折叠;

    在已经折叠的加号位置输入   zc ——打开折叠的函数。

    当要把打开的函数再折叠就输入  zx  ——关闭(第二次折叠)

    shift+v块选以后,输入 zf  ——实现块折叠。

    缩进对齐

    块选  输入 >  :缩进

    块选  输入  <  :缩进返回

    在insert mode下对齐函数语句:

    ctrl+t    往右移动对齐

    ctrl+d    往左移动对齐

  • 相关阅读:
    生日悖论
    定时执行自动化脚本-(一)导入保存jmeter参数至文件的jar包
    Jenkins+Gradle+Docker打docker镜像包上传至s3
    Jenkins与Git持续集成&&Linux上远程部署Java项目
    Jenkins+Gradle+Sonar进行Java项目代码分析
    创建Jenkins构建触发器,代码提交至gitLab即自动触发构建
    centos7安装docker
    Jenkins+docker自动部署
    通过堡垒机连接内网服务器
    idea配置git,查看git代码&拉取git项目至本地
  • 原文地址:https://www.cnblogs.com/shanguanghui/p/3638448.html
Copyright © 2020-2023  润新知