整理VIM常用命令

来源:互联网 发布:优酷出品的网络剧全部 编辑:程序博客网 时间:2024/05/21 06:57

个人非常喜欢VIM来写代码,简洁、易用,但是刚开始使用的时候,有些命令还是很难记忆的。这里整理一下。

 

以下/代表或者。比如p/P代表p或者P;ctrl+f/b/u代表ctrl+f或者ctrl+b或者ctrl+u。

 

VIM分为几种模式:普通模式、插入模式、命令行、可视模式、执行shell命令等。

其中普通模式为打开vi的默认模式,它响应键盘,进行光标操作、复制、粘贴等。

插入模式,或者说是编辑模式,使用i、I、a、A、o、O、s、S等可以由普通模式进入,然后进行编辑。

命令行模式,在屏幕的最下方,使用Ctrl+c由插入模式转化到普通模式,再:由普通模式转化到命令行模式。该模式下执行VIM的命令,比如保存、退出、查找、替换等。

可视模式,使用V或者v,由普通模式转化到可视模式。这样可以按行、或者区块选定区域(使用上下左右键),然后复制等。

执行shell命令,在命令行模式下,使用:! 后面跟上shell命令,就可以执行了。

 

 

普通模式下,光标移动比较常用:hjkl和方向键一样的效果,还有ctrl+f/b/u等进行翻页,^$进行行首尾的定位,w/b按单词位移,gg回到文件首,G到文件末尾等。

 

普通模式下,字母的替换为:在当前光标位置按r,则当前字母被替换为下一输入的字母。

 

普通模式下,撤销与反撤销: u,U,ctrl+r。

 

普通模式下,复制与粘贴:yy是复制一行,3yy是复制3行(依此类推);dd是删除当前行,3dd是删除3行;p/P是粘贴(可以粘贴y或者d的内容)。vi中可以使用多个复制缓冲区,("ay是复制到缓存区a,"ap是从缓冲区a粘贴,可以用26个字母命名缓冲区)

 

普通模式下,给文章加个行标记,下次从文件别的地方跳转回来:ma是给当前行标记为a,然后用'a跳转回来。

 

 

命令行模式下,查找:/为向下查找,?为向上查找,比如/aaaa,是查找匹配aaaa的字符串。n/N向下/上的下一个。为了避免输入,可以在当前光标所在单词处,使用*/#,向下/上查找当前单词(但是注意,这里实际上是匹配“整个”单词,就是包括单词边界,比如split实际上是/<split/>,也就是不可以匹配vsplit。)

 

命令行模式下,替换:语法为 :%s/aaaa/bbb/g,将所有的aaaa替换为bbb;后面的g代表全部替换,否则仅替换一次。这里支持一些正则。

 

命令行模式下,保存退出等: :w 保存; :q 退出; :wq保存并退出; :q!不保存退出。(在普通模式下,ZZ就是保存退出了)

 

命令行模式下,打开新窗口:split filename(水平打开),vspilt filename(垂直打开)。之后,使用ctrl+w加一些组合键来操作这些窗口。(Ctrl+w ctrl+w)在窗口间切换,(ctrl+w ,)方向键也是切换。(ctrl+w =)窗口等大小。(ctrl+w _)当前窗口最大化。(ctrl+w +/-)当前窗口变大/小一行。(移动窗口:ctrl+w H|J|K|L)

更方便的移动方式,在.vimrc中加入:

nmap <C-j> <C-W>j

nmap <C-k> <C-W>k

nmap <C-h> <C-W>h

nmap <C-l> <C-W>l

这样就可以利用 ctrl+h|j|k|l 来模拟 ctrl+w 再加hjkl的命令了。

 

命令行模式下,打开其他文件: :e filename,缓存会切换到新文件处,所以打开之前需要保存当前文件(不保持也没关系,它会提醒你的)。然后使用ctrl+^在文件间切换。

使用:e打开的多个文件其实都在文件缓冲区内,可以通过 :ls 命令查看,然后通过 :buffer Num 或者 Num ctrl+^ 切换。

 

(vim其实一下子可以打开多个文件,vi file1 file2 .. filen,之后使用:n/N在文件间切换)

(vi -d file1 file2打开两个文件,并且使用diff比较它们的异同)

 

可视模式,我唯一使用它的就是区域选择,然后可以使用yy、dd,或者命令行下的替换。

 

插入模式,经常使用的是补完,比如之前输入过单词verylong,那么下次输入到very的时候,ctrl+p/n可以补完。(ctrl+x ctrl+f)是在系统中搜索,补完文件名。(ctrl+x ctrl+l)是补完一条句子。

 

写代码的时候,可能想看看某个文件在什么地方,或者执行一些shell命令,这时可以(:! ls *)。

 

ps: set indentexpr=

 

最后,要多用help命令。在命令行模式下 :help pattern可以看到pattern相关的帮助,如果不带参数,就会看到vi的帮助文档。

 

使用ctrl+]|T (同ctags)在帮助文档的主题之间跳转。

 

---------------------------------------------------

重要能把ctags用到php上面了,这里总结一下(ps:同时说说Project插件)

 

1、下载vim的project插件,解压到home的.vimrc下面就可以了(具体我记得我上面博客说过)

2、使用/C,/R来新建和更新project,空格来缩放窗口

 

3、首先看看ctags的默认语言映射(就是用什么语言机制来解析一种后缀名的文件):

ctags --list-map

为了使.inc后缀的文件也映射到PHP,我们使用以下命令生成tag:

ctags --langmap=PHP:+.inc -R * 

 

4、使用ctrl+] 、ctrl+t来在function之间跳转

5、如果报找不到tag,那么看~/.vimrc有没有一些关于ctags的配置,默认vim会在当前目录去load tag文件的

 

 

-------------------------------------------------------

 

在用鼠标粘贴内容到vim中的时候,它的自动补完、缩进等有时会很讨厌,这时可以这样:

 

在粘贴文本到 vim 前,先:

:set paste

完了再恢复:

:set paste!

其实先禁用 smartindent

也一样的,不过至少 paste

比 smartindent

短 6 个字符,呵呵。

---------------------------------------------------------

 

vim配置问题:

 

1、打开vim,恢复到上次关闭的位置

if has("autocmd")
autocmd BufRead *.txt set tw=78
autocmd BufReadPost *
/ if line("'/"") > 0 && line ("'/"") <= line("$") |
/ exe "normal g'/"" |
/ endif
endif

参考文档: http://man.lupaworld.com/content/manage/ringkee/vim.htm

-----------------------------------------------------------

vim +Tlist +Project

参考文档: http://www.ibm.com/developerworks/cn/linux/l-tip-vim2/index.html

 

1、下载并按照project插件

 

2、下载 vim的taglist插件 :http://www.vim.org/scripts/download_script.php?src_id=7701

unzip taglist.zip -d ~/.vim

该插件特性:

  • 可以显示宏(macro)、函数(function)、变量(variable)、类型定义(typedef)、类(class)、结构(struct)等多种内容信息;
  • 打开多个文件时,可以同时看到多个文件的结构信息;
  • 在左边的 taglist 窗口显示的名称上双击鼠标或按回车键,右边主窗口中会跳转到相应的定义位置;
  • 右边窗口中光标的位置改变,左边的窗口也会在 4 秒内(缺省值,参见“:help 'updatetime'”)黄色加亮显示相应的名称;
  • 在启用/关闭 taglist 时,插件能够自动改变当前 Vim 窗口的大小(不管是文本模式的 Vim 还是图形界面的 Vim),除非使用“:let Tlist_Inc_Winwidth=0”关闭这一功能(当使用这一功能导致兼容性问题时)。

图8

 

3、 vim +Tlist +Project filename

 

使用ctrl+ww在窗口之间切换。或者ctrl+w -- h|l 控制向左|右窗口。

taglist 的折叠使用 - 控制。

 

 

----------------------------------------------------

vim对grep和make的支持:

Make [17] 和grep [18] 应当算是 Unix 世界里无人不晓的基本工具了吧。很自然的,Vim对它们有着特殊的支持。该支持主要通过访问一个特殊的快速修订窗口(quickfix window)来实现。直接在 Vim 的命令模式里输入相应的make 或 grep 命令(如“:grep foo *.c”)即可将命令的执行结果放入该窗口,同时根据返回的结果跳转到第一个错误(make的情况;在使用 grep 时是匹配成功之处)。以下是常用的“快速修订”命令:

  • :cn(显示下一个错误)
  • :cp(显示上一个错误)
  • :cl(列出所有的错误及其编号)
  • :cc(跳转到指定编号的错误)
  • :copen(打开快速修订窗口,在其中显示所有错误,可在错误上双击鼠标或按回车键跳转至该错误;示例参见图 4)

    图 4
    图4
  • :cclose(关闭快速修订窗口)

Vim 的这个特性也可以与 make 和 grep 以外的程序一起工作(事实上,在 Windows XP上,“:grep”命令一般调起的是“findstr /n”)。具体调用那个程序由选项 makeprg(Linux 下缺省为“make”)和grepprg(Linux 下缺省为“grep -n $* /dev/null”)控制,而如何解析返回的内容则由选项 errorformat和 grepformat 控制。鉴于在 Unix/Linux 下一般不需更改这些选项的内容,此处不再详述

 

 

-----------------------

vim 查找 取反:

:g!/searchkeyword