vim 笔记一

注意:
Linux、MAC下的全局目录是在/usr/vim/share/vim目录中,我们为每个用户或者为自己的用户单独配置一个,可以这样做:
debian:~# cp /usr/share/vim/vimrc ~/.vimrc
debian:~# vim ~/.vimrc
然后直接编辑这个文件就行了,在当前用户的根目录,名字叫.vimrc

Vim中有三类模式,正常模式(normal),插入模式(insert)和可视模式(visual)。
    正常模式中可以执行命令。默认情况下,Vim启动后会进入这个模式。
    插入模式中可以插入文本。
    可视模式中可以可视化地选择一段文本,然后仅针对这段文本执行命令或操作。
    
1)nB:n代表数字,表示B命令可重复n次
2)大写字母与小写字母命令相同,但方向相反
3)    (输入:jump,看跳过的位置)
    (输入:marks,可看到所做的特殊标记)

一. vim基本操作

1. vim复制
   vim有12个粘帖板,分别是0,1,2,...,8,9,",+,。可用:reg命令来查看各个粘帖板里面的内容。
   在vim用y复制只是复制到"(双引号)粘帖板中,用p命令即粘帖该粘帖板里面的内容。
   

2. 插入
    i:在光标的前面插入字符
    a:在光标的后面插入字符
    o:在当前行的下面插入一个新行,并进入插入模式
    O:在当前行的上面插入一个新行,并进入插入模式
    
3. 跳转
    ctrl+]: 跳转至定义处(建立tag)
    ctrl+T:跳回前一个位置
    ctrl+O:跳回到较早的位置

4. 帮助:
    查看某个命令的:help command;
    查看移动光标的命令:help Q_lr;
    查看插入模式下的上箭头的功能:help i_Up

5. 移动(光标移动跳到)
    n$:移动至行尾;
    数字0:移动至行首;
    ^:移动至当前行的第一个非空白字符;
    
    fh:单字符搜索命令,f=find,在当前行上查找下一个字符h(只向右查找,不能换行),分号;可重复该命令, 逗号往相反方向重复该命令;
    Fh:同上,向左查找;
    th:同fh, t=to, 只是光标停在h的前面;
    
    %:跳转到与当前光标下的括号相匹配的那一个括号上去,适合与[],(),{}成对的括号;
    nG(大写):光标移动到第n行;
    gg:移动到文档第一行;
    
    nw:将光标向前(右)移动n个word,(其中,;-=/等都可以当作分割符),每次移动光标停在word的首字符上;
    nW:分割符是空格;
    nb:将光标向后移动n个word;
    nB:分割符是空格;
    e:与w类似,只是每次移动后光标停在word的末字符上;  nE:分割符是空格;
    ge:与nb类似,只是光标停在word的末字符上;
    
    ctrl+o:光标跳转到之前的一个位置,o=older  
    ``:两个开单引号,跳回上一个位置,只能在两点直接来回切换
    (注:输入:jump,看跳过的位置)
    
    有名标记----ma(a~z):将光标所在的位置标记为a(或a~z),m=mark,此后可用'a,跳回a标记的位置;
    (注:输入:marks,可看到所做的特殊标记)
    
6. 显示当前位置信息:ctrl+G

7. zz:保存并退出文件,或推出help文件,或将当前行置于窗口中央;    
    
8. 删除
    x: 删除单个字符
    dw: 删除一个word,  dnw: 删除光标处开始后的4个word, d$(=D): 删除从光标到行尾的内容
    
    c: 改变文本,与d类似,先删除并进入插入模式
    cw: 删除一个word, 并进入插入模式
    cc: 删除整行,保持缩进;   c$(=C): 类似d$
    
    r: 替换当前光标的字符,  rT: 将当前光标的字符替换为T
    .: 重复执行上一次命令

9. 查找
    ctrl+]: 跳到定义处
    ctrl+T: 跳回来
    :/string: 搜索字符串string (不需要输入:,直接按/,就可输入字符串),注:输入/后,可以通过上下箭头翻看历史的搜索
    ?string:往相反方向搜索字符串string
    n:  搜索下一个匹配
    N: 往相反方向搜索下一个匹配
    可用光标放到某个函数名上,然后按*号键,则会将该函数名作为字符串进行搜索;
    查找独立单词,如/the,显然there也会匹配,此时可以输入:/\<the\>来只查找the这个词,\表示一个word的结束处;
    
    搜索正则表达式:
        /the^: 只匹配行开头是the的字符串
        /the$: 只匹配行尾是the的字符串
        匹配单子符: /t.h: 3个字符的字符串,前一个位t,后一个为h,中间任意;
        
        
10. 屏幕控制
    ctrl+u: 向上翻半屏         ctrl+b: 向上(后backword)翻整屏
    ctrl+d: 向下翻半屏       ctrl+f: 向下(前forword)翻整屏
    
    
    
    
二. ctags:  
1.安装后,在源代码目录(最上层目录)下shell运行命令:ctags -R, 即可建立tag文件。

2.如果修改程序后,如增加函数,删除变量等,此时需要重新运行命令:ctags -R, 以使tags文件得到更新。

3.#vim usb.c,进入vim环境后,输入":Tlist",即可在窗口中显示tag列。

4. ctrl+]:在函数调用的地方跳转到函数定义的地方
    ctrl+t:返回上一个查找的地方

注:所生成的cscope.out和tags文件要在打开VIM所在的文件夹,否则VIM无法找到相关符号信息。

三. 文件浏览器和窗口管理器 -- 插件: WinManager,安装之后可在vim中看到有文件浏览的地方
1. 安装
    1) http://www.vim.org/scripts/script.php?script_id=95 下载
    2) 在 ~/.vim 目录下解压winmanager.zip,(unzip)
    3) 在Normal模式下,输入wm,即可看到浏览文件的窗口; 注:是normal模式,按ESC后直接敲wm即可,不是:wm。
    4) 再次输入wm后,窗口将关闭。

四. cscope
1. 安装后,进入根目录,输入$ cscope -Rbq,将生成3个文件:cscope.in.out,cscope.out,cscope.po.out。
2. 进入vim后第一件事是要把刚才生成的cscope文件导入到vim中来, 用下面的命令:cs add /usr/src/linux-2.6.38/cscope.out /usr/src/linux-2.6.38
上面这条命令很重要, 必须写全, 不能只写前半句。
3. 在vim下输入:cs,即可看到cscope的用法。
    :cs find g vim_strsave---查找函数vim_strsave()的定义
    :cs find c vim_strsave---查找vim_strsave()到底在那些地方被调用过
4. 快捷键设置
    在vimrc中加入:nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>    
    即表示可用ctrl+\+s来执行上面的命令。


五. MiniBufExplorer: 多文档编辑器
    打开多个文档时,自动创建多个buffer,并在最上面的一行显示各文件
    ctrl+TAB:切换各个buffer
    点击minibufexplorer一行,光标处在该窗口内,输入d即可删除光标所指的文件


六. 进入可视模式 v
    1. 当光标移动时,就能看到有一些文本被高亮显示了,它们就是被选中的内容。

    2. 三种可视模式(用方向键移动光标)
    1)v: 一个字符一个字符地选。从按下v的那个字符起,一直到光标所移动到的位置之间的内容都被选中。
    2)V: 一行一行地选。从按下V的那行起,一直到光标所移动到的行之间的所有行都被选中。
    3)Ctrl-v: 它选中屏幕上的一个矩形区域。以按下Ctrl-v的位置为一个角,光标所在位置为它的对角。

    3. 离开可视模式:按下ESC
    
    4.可视模式下的编辑
    在可视模式下删除文本: d
    删除所选中的部分: D
    删除所选中部分所在的行。即使没有把一行都选中,也把一行都删除。
    
    v:复制选中的部分。

    c:删除所选中的部分并切换到输入模式。

    C: 删除所选中的部分所在的行并切换到输入模式。

    合并行:当选中想合并在一起的行以后,按下J(大写)

    >:所选中的部分都缩进一个tab。


vim中执行shell命令
1):!command
不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容
例如:!ls -l
特别的可以运行:!bash来启动一个bash shell并执行命令,不需要退出vim

2) :r !command
将shell命令command的结果插入到当前行的下一行
例如:r !date,读取系统时间并插入到当前行的下一行。

3):起始行号,结束行号 !command
将起始行号和结束行号指定的范围中的内容输入到shell命令command处理,并将处理结果替换起始行号和结束行号指定的范围中的内容
例如:62,72 !sort,将62行到72行的内容进行排序
可以只指定起始行,例如:62 !tr [a-z] [A-Z],将62行的小写字母转为大写字母
当前光标所在行,除可以指定行号外,也可以用.表示,例如:. !tr [a-z] [A-Z],将当前行的小写转为大写
4):起始行号,结束行号 w !command
将起始行号和结束行号所指定的范围的内容作为命令command的输入。不会改变当前编辑的文件的内容
例如
:62,72 w !sort,将62行到72行的内容进行排序,但排序的结果并不会直接输出到当前编辑的文件中,而是显示在vim敲命令的区域

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值