zoukankan      html  css  js  c++  java
  • vim学习笔记

    安装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  ——从光标所在处,一直删除到结尾

    ——撤销(undo

    ——vimhelp

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

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

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

    vimtutor ——bash命令,vim教程

    粘贴和复制:

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

    jk选中多行

    ——剪切

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

    ——(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。命令行里面输入:(编辑)或者: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  ——定位文件,显示文件的绝对路径。

    关于make

    在工程比较大的时候,调试过程中每次gcc后面的文件都要写,并且很多。方便起见可以用make。在工程的目录下执行如下操作

    vim makefile 或者vim Makefile  并输入内容(第二行要tab开头)

    all

           gcc  main.c hello.c  hello.h

    clean:

           rm  –rf a.out  hello.h.gch

    插入文件名的快捷键: ctrl+x+f

    这样以后在bash下执行make就可以执行gcc操作了

    执行make clean 就执行rm –rf  a.out  hello.h.gch

    在vim中 :make可以执行bash中的make命令对文件进行编译。如果有错误。回车后返回vim。 :cw(或者:cwindou)可以在vim下方开辟一个新的小窗口显示错误信息。

    :cn和:cN高亮行在多个错误信息上上下移动。回车 光标跳转到程序里对应的错误位置

    :cclose  关闭quickfix(刚才的错误信息显示窗口)

     

    vim中执行bash命令   :!command   回车就可以返回vim

    在bash中返回上一次的路径  cd  -

     

    vim常用快捷键

    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

    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

    100200行间的a换成b

    :1,$s/a/b/g

    全换

    :1,$s/a/b/gc

    全换有提示等用户确认

    多窗口

    sp

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

    ctrl+ww

    光标窗口切换

    vnew (filename)

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

    e或:o

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

     

    vim技巧:

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

    注释一行  ——ctrl+c

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

    取消就是一个 u

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

    taglist ctags  nerdtree  snipmate

    1. taglist(标签列表) :

    在vim中执行  :Tlist 会在窗口的左半部分出现一个关于vim里程序的提纲。

    用ctrl+ww 把光标在两个窗口直接切换

    在taglist中移动光标到函数名<cr> 在右边查看函数体;ctrl+o 返回。

    再执行 :Tlist 退出。

    /home/shsf/.vimrc中的相关配置  map ,t  :Tlist

    2. ctags

    如果想从程序中的函数名去查看对应的函数体语句:

    在bash中执行命令ctags  hello.c  hello.h main.c(自己关心的文件)

    如此后生成一个名为tags的文件。之后

    在vim中就可以把光标移动到函数名上ctrl+】跳转到对应函数体;ctrl+o返回。

    3nerdtree

    命令 :NERDTreeToggle

    /home/shsf/.vimrc中配置  map ,n  :NERDTreeToggle

    也是在窗口左半边上显示列表。

    ctrl+ww光标在两个窗口间实现切换

    在左窗口移动光标到函数或宏定义名字上<cr> ,在右侧实现对应显示

    4. snipmate(小片助手)

    实现输入几个字符后按tab出现一小片对应文字的功能,配置文件位于

    /home/shsf/.vim/snippets/c.snippets

    格式如下

    #incude<...>  注释行,顶头的#表示注释

    snippet  inc

                  #include<${1:studio.h}>${2}

    说明如下:snippet为固定格式  inc是要输入的提示字符。当有inc输入并按下

    tab按键是就显示下面的内容  其中$表示下一个tab跳转的位置,数字1表示tab的顺序序号。冒号后面的的内容为默认内容,如果确认内容就按tab到下一处,否则可以直接修改。

    map与imap的区别:

    当两个映射以相同的字符顺序开始,它们是含糊的.

    例如:

           :imap aa foo

           :imap aaa bar

    当 Vim 读如 "aa", 它将需要取得另外一个字符才能决定是否是 "aa" 或是 "aaa"

    应该被映射. 这意味这当输入 "aa" 以后映射还不会展开, Vim还在等待另一个字符.

    如果你输入一个空格, 那么 "foo" 将被插入, 而不是空格. 如果你输入一个"a",

    那么"bar" 将被插入.

    vim中全局查找替换

    %s /a/b/g  ——把所有的a都换成b

    %s/\/home\/shsf\//a/g  ——把/home/shsf/路径换成a/需转义)

    把光标移动到 { 处。按%光标会自动跳到与之成对的 } 上面。反之也可以。

    把函数体折叠起来:

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

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

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

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

    块选  输入 >  ——缩进

    块选  输入  ——缩进返回

    在insert mode下对齐函数语句:

    ctrl+t    往右移动对齐

    ctrl+d    往左移动对齐(设置tab为4个空格,而某行只缩进了3个空格。这时执行ctrl+t可以再缩进一个空格达到对齐的效果)

    如果需要对函数进行注释,可以讲光标移动到函数名处,执行Dox 给出注释格式,方便的添加注释内容。包括主题变量和返回值。

    vim常用快捷键

    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

    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

    100200行间的a换成b

    :1,$s/a/b/g

    全换

    :1,$s/a/b/gc

    全换有提示等用户确认

    多窗口

    sp

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

    ctrl+ww

    光标窗口切换

    vnew (filename)

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

    e或:o

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

  • 相关阅读:
    Cesium中监听MOUSE_MOVE事件获取经纬度和高度
    CentOS系统重命名
    docker安装步骤
    nginx发布vue 项目
    解决git 本地代码与远程仓库冲突问题
    js通过className删除元素
    bootstrap treeview基本运用
    自定义组件模拟v-model
    使用a标签下载**.txt文件, 而不是直接打开
    mongoose 开源http库
  • 原文地址:https://www.cnblogs.com/zfying/p/2821373.html
Copyright © 2011-2022 走看看