Vim使用技巧

来源:互联网 发布:淘宝返利多少 编辑:程序博客网 时间:2024/05/22 01:41

vim使用简介

在 vi 中数字与命令结合往往表示重复进行此命令, 若在扩展模式的开头出现则表示行号定位. 如11,12s/old/new/g

移动到文件开始和结束位置和当前位置(gg,G)、快速定位到当前光标所在变量或函数的定义处(gf)、自动对齐C和C++程序(先gg再=再G)、自动补全变量名,函数名和字符串ctrl+n或ctrl+p、复制(yy,nyy,ctrl+v配合y)、粘贴(p,P)、删除(dd,ndd,ctrl+v配合d,x)、撤销(u,ctrl+r)、查找(/string配合n或N)、查看匹配的另外一半符号(%)。  

还有使用ctags,cscope等插件可以用来阅读linux内核源码,其功能真的很好很强大

 但其不过是个工具,必要的时候可以查看其在线帮助文档:直接在shell命令行运行vimtutor即可

1、将光标移动到文件的开始位置或结束位置:

              gg1G     将光标移动到文件的第一行。

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

               对当前行做标记,例如ma,即标记当前行为a行,mb,即标记当前行为b行,mc,即...等等。m后面必须跟字母)

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

2 vim中进行CC++源码缩进操作:

a、全局缩进:   

                     gg+=+G

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

b、局部缩进:
                    
右缩进: 按v选定后按  就是自动缩进选定的代码,内部递归的缩进都做到了
                    
行右移>该命令用于将一行右移一个Tab

                    行左移<该命令用于将一行左移一个Tab

3vim中删除字符,并进入插入模式,修改为想要的字符串:

         要删除的字符,后cw  ,然后修改为想要的字符串。然后n,进入下一个字符,然后"."就可   以重复上面的操作。

       cnw    是删除n个字符,并进入插入模式。

       例如将所有的four替换为five,方法为:

       /four                            找到four

       cw                                删除four,并进入插入模式。

       five                               输入five

       n                                   找到下一个four     (首先用ESC进入命令行模式

        .                          重复上面的操作

       这样就可以完成将所有的four替换为five。

4vim上下左右移动光标:

       a、普通移动:

                  将光标向左移动。

                   将光标向下移动,j就像向下箭头

              k     将光标向上移动。

              l       将光标向右移动,L就像向右箭头

              M   移动光标到屏幕的中间一行.

              0到行首,$到行尾。

             注意:  大写J是两行和并,要特别注意

                           大写K光标所指标识符的man帮助页

       b、跳到与当前符号匹配的另外一半符号所在位置

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

              例:

              void  fun(int argc,char *argv)

              {

              //代码

              }

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

      c:   :后边加行号+enter 或行号+G   就是跳到这一行

 

5vim复制:

      复制一个单词:  yw

       复制n个单词:   nyw

       复制一行:            yy或大写Y

       复制n行:          nyy

       拷贝从当前光标到光标所在行首的内容:     y0   (包括空格)

      拷贝从当前光标到光标所在行尾的内容:      y$

6vim粘贴:

       vim中使用pP进行粘贴。

小写p是表示在当前位置之后,大写P表示在其之前

7vim剪切:

       x(小写,同Del    剪切一个字符,使用

       dd                              剪切一行,使用

       ndd                            剪切n行,使用

       dw                        删除一个单词并保持命令模式

       cw                        删除一个单词并进入插入模式,

       cc                         删除一行并进入插入模式。
        
r                           然后输入的字母将替换当前字母并保持命令模式,R则是不停的替换(一个挨着一个)。直到按esc

      d0                        删除从当前光标到光标所在行首的内容. (包括空格)
      d$
(或D             删除从当前光标到光标所在行尾的内容.

       y:copy,拷贝

       d:delete,删除

       p:past,粘贴

       c:clip,剪掉
8、高级复制剪切粘贴操作
       a. 可按小写字母v进入可视化操作,然后用方向键选中相应块,

       后可用y进行复制,d进行剪切,p进行粘贴。

       b. 也可按大写字母V,与小写不同的是,大写的最小选中单位为行,而小写的为一个字符。

c.块操作:ctrl+小写v,将所选定块中对某一行的操作,应用到选定块的每一行

示例:ctrl+小写v,进入块操作————>移动光标选定块————>大写I//————>esc,结果为在选定块的每一行前面都加上//

9vim撤销:

撤销:     (undo)              

恢复:    ctrl+r    (redo,ctrl表示启用R键的第二功能,因为R的第一功能为替换Replace)               

在光标当前位置处重复上一次操作.

10vim查找:
/string(或?string),查找到以后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找.

 / 表示向下查找, ? 表示向上查找.
一般来说是区分大小写的, 要想不区分大小写, 那得先输入:setignorecase

可用:set noignorecase 来关闭这项功能。

11vim进入头文件,从头文件中返回:

 进入头文件:

       将光标移动到指定的头文件中,在命令行中键入gf就进入指定的头文件中。

 返回原文件:

        当对头文件编辑结束后,键入ctrl+^就返回到原文件中。

12TAB
TAB 就是制表符, 单独拿出来做一节是因为这个东西确实很有用.
>
                    输入此命令则光标所在行向右移动一个tab.
5>>
                输入此命令则光标所在行及后面4 行向右移动一个tab.
:12,24>
           此命令将12行到14行的数据都向右移动一个tab.
:12,24>>  
      此命令将12行到14行的数据都向右移动两个tab.
那么如何定义tab 的大小呢? 有人愿意使用 8 个空格位, 有人用4个, 有的用2个.
 vim 能帮助你.以下的设置一般也都先写入配置文件中, 免得老敲.

如fedora的vim配置文件在/etc/vimrc中,ubuntu的在/etc/vim/vimrc中
 :setshiftwidth=4        设置自动缩进 4 个空格, 当然要设自动缩进先.
 
:set sts=4                  即设置 softtabstop为 4. 输入 tab 后就跳了 4 格.

 :set tabstop=4                 实际的 tab 即为 4 个空格, 而不是缺省的 8 个.

 :set expandtab                 在输入 tab 后, vim 用恰当的空格来填充这个tab.

若在配置文件中设置了Tab键,则在写Makefile时一定要在打开的文件使用

:set noexpanded使Tab不转换才能成功

13快速输入字符
abbr
          即缩写. 这是一个宏操作, 可以在编辑模式中用一个缩写代替另一个
字符串. 比如编写java文件的常常输入 System.out.println,这很是麻烦, 所以应该用缩写来减少敲字. 可以这么做:
                 :abbr sprtSystem.out.println+enter
                 以后在输入sprt后再输入其他非字母符号, 它就会自动扩展为System.
                 out.println

14vim的ctags插件的使用

得先安装上ctags插件

sudo apt-get install cscope即可

a.生成tags标签文件ctasg  -R *

b.跳到某一变量、函数名的定义处

vim -t name

快捷键:先把光标移到变量名或函数名上

ctrl加]直接跳到这个变量或函数定义处

ctrl加t退回到原来的地方

c.修改vim配置文件,在配置文件最后添加

set tasg=标签文件所在路径/tags

d.在vim命令行模式下执行:tags xxx,即可找到想要的函数xxx,等同于ctrl加 ]


 

0 0