vim的常用指令

来源:互联网 发布:网络交友的利弊 编辑:程序博客网 时间:2024/05/17 18:25

1、打开文件的命令

   目录下打开文件:

   方式一:切换到指定目录下,vim filename

   $root@god-virtual-machine:/zplatform/zna/source/stream# $ vim stream_manage.c 

   方式二:绝对路径打开

    vim  /zplatform/zna/source/stream# $ vim stream_manage.c 

   打开多个文件

   vim file1,file2,file3....

   

   在vim窗口里面打开文件

   

   在vim的同一窗口打开新文件

   :open filename

   在vim中新开一个窗口打开新文件

   :split filename

   切换到下一个文件

   :bn

   切换到上一个文件

   :bp

   查看当前打开的文件列表,当前正在编辑的文件会用[]括起来,此命令可以用来确定自己正在编辑的文件

   :args

   打开远程文件,比如ftp或者share folder

   :e ftp://192.168.10.76/abc.txt

   :e  \\qadrive\test\1.txt



2、移动命令

  h 左移一个字符

  l  右移一个字符

  k 上移一个字符

  j下移一个字符

  配合数字使用,可以实现快速的移动

  实例::

  100j是向下移动100行

  100k向上移动100行

  50h 向左移动50个字符

  50l 向右移动50个字符       

  w向前移动一个单词,光标停留在下一个单词的首部

  e向前移动一个单词,光标停留在上一个单词的尾部

  0移动到本行的第一个字符上 

  $移动到行尾 5$移动到下面5行的行尾

  gg移动到文件的头

  G移动到文件尾

  :240跳转到指定的240行

3、编辑命令

  撤销与恢复

  u 撤销

  U撤销对整行的操作

  Ctrl + r 恢复撤销

  删除命令

  x删除当前字符,配合数字使用删除开始向后的5个字符5x

  dl 删除当前字符

  X删除前一个字符

  dh删除前一个字符

  dd删除当前行

  dj删除此行和上一行

  dk删除此行和下一行

  10d 删除当前行开始的10行

   D 删除当前字符至行尾

   d$删除当前字符之后的所有字符

   kdgg删除当前行之前的所有行(不包括本行)

   jdg 删除当前行之后的所有行(不包括本行)

  :1,10d删除1-10行

  :2,$d删除第2行及以后的所有行


 复制和粘贴命令

 yy复制当前行

 nyy复制当前行开始的n行,比如2yy拷贝当前行及下一行

 p 在当前光标后粘贴,如果之前是使用了yy命令来复制一行,那么就在当前行的下一行粘贴

 ddp交换当前行和下一行

 xp交换当前字符和后一个字符、


查找和替换命令

:/<pattern> 向下搜索,pattern表达式可以是简单的字符串,也可以是复杂的正则表达式,

:?<pattern>向上搜索

:/\c<pattern>不区分大小写搜索

:?\c<pattern>不区分大小写搜索

:/\C<pattern>区分大小写搜索

:?\C<pattern>区分大小写搜索

:vimgrep <pattern>  <files>在文件中搜索,可以是多个文件

:s/str1/str2  将str1替换成str2

一些常用替换命令 %所有行  g单行内所有匹配项  i忽略大小写  c确认是否替换

:s/old/new       将光标所在行第一个old替换成new

:s/old/new/g    将光标所在行所有old替换成new

:%s/old/new/gc     全文执行替换,询问是否替换

:1,10s/old/new/gic  将1到10行的内容替换,忽略大小写,且每个询问是否替换

g  i  c  可以自由组合

匹配字符串之后,我们通过按n和N可以向上或者向下搜索下一个匹配的字符串

文件替换不可恢复,要小心对待,另,vim的正则表达式匹配将在另外一个帖子中进行说明,正则当真是个好东西

4、退出命令

 :wq保存并退出

ZZ保存并退出

 :q!强制退出并忽略所有修改

 :e!放弃所有修改,并打开原来文件

5、执行shell命令

: !command

:!ls列出当前目录下文件

:!make 可以不退出vim执行当前目录下的Makefile文件


6、代码折叠和打开

设置命令:set fdm=XXX

vim 提供6中折叠方式

manual 手动定义折叠

indent 更多的缩进表示更高级别的折叠

syntax 根据语法高亮来定义折叠

expr   用表达式来定义折叠

diff   对没有更改的文本进行折叠

marker 对文中的标志折叠



代码折叠命令和打开命令

zc对部分代码进行折叠,由于我设置的是syntax折叠方式,所以是按照语法的内容进行折叠。

zC对范围内所有的折叠点进行嵌套折叠

zo打开折叠

zO对范围所有的嵌套折叠点全部打开

另外我在vim80中使用<space>就可以完全打开一个折叠


我使用marker方式进行折叠,这样可以按照自己随心所欲的方式进行代码的折叠。如下,

当使用marker方式时,需要用标记标识代码的折叠,系统默认是{{{和}}},一般不要改动,否则可能造成未知bug。


折叠命令

zf 创建折叠,常见使用方式

          zf70G,创建从当前行起到70行的代码折叠;这个70行可以比当前行大,也可以比当前行小。

          10zf,10zf+可以创建从当前行起到后10行的代码折叠。

          10zf-创建从当前行起到之前10行的代码折叠

          在括号出zf%,创建从当前行起到对应的匹配的括号上去(),{},[]等。

zd  删除光标下的折叠

zD  嵌套删除折叠

zE  出去窗口中的所有折叠


原创粉丝点击