首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

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

2012-07-31 
[转好] 记性不如烂笔头2VIM操作技巧,持续更新。http://kooyee.iteye.com/blog/312121?1. 查找? /xxx(?xxx)?

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

http://kooyee.iteye.com/blog/312121

?

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 键一同按下) 本命令即 page down.
? c-b???????????? (即 ctrl 键与 b 键一同按下, 后同) 本命令即 page up.
? ''????????????? 此命令相当有用, 它移动光标到上一个标记处, 比如用 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> :comp javac<CR>:mak -d . %<CR>
?????? 此命令用 javac 编译 java 文件, 它会自动将光标定位到出错点. 不过这需要定
义一个 javac.vim 文件在 $VIM/compiler 下, 在 javac.vim 里面只有两行字:
????????? setlocal makeprg=javac
????????? setlocal errorformat=%A%f:%l:\ %m,%-Z%p^,%-C%.%#

? :nmap <F4> :comp ant<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>

热点排行