[转好] 记性不如烂笔头2 VIM操作技巧,持续更新。

lerdor 2011-09-01

1. 查找

/xxx(?xxx)表示在整篇文档中搜索匹配xxx的字符串,/表示向下查找,?表示

向上查找.其中xxx可以是正规表达式

*(#)当光标停留在某个单词上时,输入这条命令表示查找与该单词匹配的

下(上)一个单词.同样,再输入n查找下一个匹配处,输入N反方

向查找.

g*(g#)此命令与上条命令相似,只不过它不完全匹配光标所在处的单词,而

是匹配包含该单词的所有字符串.

gd本命令查找与光标所在单词相匹配的单词,并将光标停留在文档的非

注释段中第一次出现这个单词的地方.

%本命令查找与光标所在处相匹配的反括号,包括()[]{}

f(F)x本命令表示在光标所在行进行查找,查找光标右(左)方第一个x字符.

找到后:

输入;表示继续往下找

                  输入 , 表示反方向查找

2. 快速移动光标

在vi中,移动光标和编辑是两件事,正因为区分开来,所以可以很方便的进行光标定

位和编辑.因此能更快一点移动光标是很有用的.

w(e)移动光标到下一个单词.

b移动光标到上一个单词.

0移动光标到本行最开头.

^移动光标到本行最开头的字符处.

$移动光标到本行结尾处.

H移动光标到屏幕的首行.

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

L移动光标到屏幕的尾行.

gg移动光标到文档首行.

G移动光标到文档尾行.

c-f(即ctrl键与f键一同按下)本命令即pagedown.

c-b(即ctrl键与b键一同按下,后同)本命令即pageup.

''此命令相当有用,它移动光标到上一个标记处,比如用gd,*等查

找到某个单词后,再输入此命令则回到上次停留的位置.

'.此命令相当好使,它移动光标到上一次的修改行.

  `.              此命令相当强大, 它移动光标到上一次的修改点.

3. 拷贝, 删除与粘贴

在vi中y表示拷贝,d表示删除,p表示粘贴.其中拷贝与删除是与光标移动命令

结合的,看几个例子就能够明白了.

yw表示拷贝从当前光标到光标所在单词结尾的内容.

dw表示删除从当前光标到光标所在单词结尾的内容.

y0表示拷贝从当前光标到光标所在行首的内容.

d0表示删除从当前光标到光标所在行首的内容.

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

d$表示删除从当前光标到光标所在行尾的内容.

yfa表示拷贝从当前光标到光标后面的第一个a字符之间的内容.

dfa表示删除从当前光标到光标后面的第一个a字符之间的内容.

特殊地:

yy表示拷贝光标所在行.

dd表示删除光标所在行.

  D               表示删除从当前光标到光标所在行尾的内容.

6. 替换

替换是vi的强项,因为可以用正规表达式来匹配字符串.以下提供几个例子.

:s/aa/bb/g将光标所在行出现的所有包含aa的字符串中的aa替换为bb

:s/\<aa\>/bb/g将光标所在行出现的所有aa替换为bb,仅替换aa这个单词

:%s/aa/bb/g将文档中出现的所有包含aa的字符串中的aa替换为bb

  :g/^\s*$/d       将所有不包含字符(空格也不包含)的空行删除.

8. 宏替换

vi不仅可以用abbr来替换文字,也可以进行命令的宏定义.有些命令输起来很费劲,

因此我把它们定义到<F1>-<F12>上,这样就很方便了.这些配置可以预先写到~/.vimrc

(windows下为$VIM/_vimrc)中,写进去的时候不用写前面的冒号.

:nmap<F2>:nohls<cr>取消被搜索字串的高亮

:nmap<F9><C-W>w命令模式下转移光标到不同窗口

:imap<F9><ESC><F9>输入模式下运行<F9>

:nmap<F12>:%s=*$==<cr>删除所有行尾多余的空格.

:imap<F12><ESC><F12>同上

:java中:(注,这里为什么说java中,因为以下定义对其他文件格式不起作用,下文

会说到如何实现这一点)

:nmap<F3>:compjavac<CR>:mak-d.%<CR>

此命令用javac编译java文件,它会自动将光标定位到出错点.不过这需要定

义一个javac.vim文件在$VIM/compiler下,在javac.vim里面只有两行字:

setlocalmakeprg=javac

setlocalerrorformat=%A%f:%l:\%m,%-Z%p^,%-C%.%#

:nmap<F4>:compant<CR>:mak<CR>

此命令用ant编译java文件,它会自动将光标定位到出错点.一般来说,安装

vim后已经有了compiler/ant.vim文件,因此这个命令可以直接使用.但是需要

在当前目录下有build.xml文件,当然还必须安装ant才行.

:nmap<F5>:cl<CR>此命令用于查看所有的编译错误.

:imap<F5><ESC><F5>

:nmap<F6>:cc<CR>此命令用于查看当前的编译错误.

:imap<F6><ESC><F6>

:nmap<F7>:cn<CR>此命令用于跳到下一个出错位置.

:imap<F7><ESC><F7>

:nmap<F8>:cp<CR>此命令用于跳到上一个出错位置.

:imap<F8><ESC><F8>

:nmap<F11>:JavaBrowser<cr>

此命令用于在窗口左部分割出一个新窗口,里面的内容是java的资源树,包括

本文件中出现的类,类的成员变量及成员方法,就好像JCreator表现的那样.

在这个窗口中输入?会看到帮助.嘿嘿,很好用,不过需要ctags支持.

:imap<F11><ESC><F11>

相关推荐

lonesomer / 0评论 2011-03-18
moneyispaper / 0评论 2016-10-26