2008-11-04

超强的gvim技巧

下面是我对一些讲述vim技巧的文章的摘录,我觉得这些命令都是很强大的,看看它们就可以明白为什么vi是最强的编辑器(之一)。但我并不认为记住这些命
令就是学会vi,我估计要真正地说会使用vi,必须认真地学习一个vi与正则表达式的相关内容。学会了才能对vi运用自如。路漫漫其修远兮!





. 重复上次编辑命令.



:g/^/exec "s/^/".strpart(line(".")." ", 0, 4)
在行首插入行号



:vim:ft=html:
;: 使用 HTML 语法高亮



:runtime! syntax/2html.vim 转换 txt 成 html, 会按照你的 颜色配置来转



:r !commond
在游标所在处次一行插入外部指令commond执行后的输出内容。



:ggVGg? : 用rot13编码整个文件(晕!)

# 译释:gg到文件首行首字符,V进入Visual-Line模式,G到文件末行首字符,

#
这样就选中了整篇文章,然后g?就是用rot13编码整个文件啦

# 【关于rot13——谁让英文是偶数个字母啊】

# ROT13 是一种简单的编码,它把字母分成前后两组,每组13个,编码和解码

# 的算法相同,仅仅交换字母的这两个部分,即:[a..m] --> [n..z] 和 [n..z]

# --> [a..m] 。 ROT13 用简易的手段使得信件不能直接被识别和阅

# 读,也不会被搜索匹配程序用通常的方法直接找到。经常用于 USENET 中发表一

# 些攻击性或令人不快的言论或有简单保密需要的文章。

# 由于 ROT13 是自逆算法,所以,解码和编码是同一个过程。



:sp fred.txt :
在一个水平分割的窗口中打开文件fred.txt

# 译注:vs fred.txt可以实现垂直分割



# 命令录制 (最佳技巧,ft)

qq #录制到q

.. #输入一系列复杂的指令

q #再次按q停止录制

@q #执行q中存储的指令



:nmap ,f :update<CR>:silent !start
c:\progra~1\intern~1\iexplore.exe
file://%:p
:绑定“,f”,使用iexplore打开当前文件

# 译释:nmap是做一个normal模式下的键盘绑定

# 这里绑定了一个逗号命令 ,f

# :update是写这个文件,与:w不同,它只有当文件被修改了的时候才写

# :silent别让弹出窗口报告执行结果

# !...后面就是执行windows命令了。呵呵,去问bill gates什么意思吧。



:%s/\r//g
: 删除DOS方式的回车^M





gvim -d file1
file2
: vimdiff (比较不同)



:%s/\r//g
;: 删除 DOS 的换行符 ^M

:%s/\r/\r/g
;: 转换 DOS 回车符 ^M 为真正的回车符

:%s=
*$==
;: 删除行尾空白

:%s=
\+$==
;: 同上

:%s#\s*\r\?$##
;: 删除尾部空白和dos换行符

:%s#\s*\r*$##
;: 同上

:%s/^\n\{3}//
;: 删除连续3个空行

:%s/^\n\+/\r/
;: 压缩空行,多个替换为一个

:%s#<[^>]\+>##g
;: 删除html的tag部分

:%s#<\_.\{-1,}>##g
;: 多行删除 html 的tags (非贪婪方式)



;:" 插入DOS换行符

:%s/$/\<C-V><C-M>&/g
;: (that's what you type

:%s/$/\<C-Q><C-M>&/g
;: for Win32) 对于Win32应该这样

:%s/$/\^M&/g
;: 你看到的^M是一个字符



:s/__date__/\=strftime("%c")/
;: 将文章中的__date__替换成当前日期,使用strftime函数



:vmap st "zdi<?= <C-R>z
?><ESC> ;:
加上 <?= ?>



'.
;: 跳回最后编辑的行 (超有用)

!!date
;: 从date获得输入(删除当前行)



;:" 浏览

:e
.
;: 文件浏览器

:Exp(lore)
;: 浏览文件:g/^/exe ".w
".line(".").".txt" :"
将每一行的内容存成一个文件,文件名为 行号.txt 如 1.txt,2.txt 等

:Sex(plore)
;: 分割窗口浏览文件

:browse
e
;: 打开windows 的 ‘选择文件’对

:ls
;: 显示缓冲区

:cd
..
;: 设置当前目录位置

:args
;: 查看当前打开的所有文件

:args
*.php
;: 打开所有 *.php文件

:lcd
%:p:h
;: 改变路径到当前编辑的文件

:autocmd BufEnter * lcd
%:p:h ;:
放入.vimrc自动完成上面的命令



安装在windows下的gvim会把ctrl+v指定为复制,使用得无法使用块选择,把到vim7.2\mswin.vim,把这一行去掉"map
<C-V>
"+gP",使得在一般模式下可以使用ctrl+v进行块选择。



ga
;: 显示当前光标下单个字的ascii,十进制,十六进制……



'.
;: 跳回最后编辑的行 (超有用)

`.
;: 同上,但是定位编辑点

g;
;: 跳转到比较旧的编辑位置(如果有的话) (vim6.3后的新功能)

g,
;: 这个是较心的位置 (同上)

:changes :打出改变表

:h
changelist
;: 查看“改变表跳转”的帮助

<C-O>
;: 依次沿着你的跳转记录向回跳 (从最近的一次开始)

<C-I>
;: 依次沿着你的跳转记录向前跳



:sav!
%<.bak
;: 换一个后缀名保存 (旧方法)



:sball,:sb
;: 把所有的 buffers分割显示在一个窗口中 (超有用)



;:" 折叠:隐藏某些片断,使查看更容易

zf}
;: 使用动作命令折叠一个段落

v}zf
;: 使用可视模式折叠一个段落

zf'a
;: 折叠到一个标记上

zo
;: 打开折叠

zc
;: 重新关闭折叠



;:" 显示"不可见字符"

:set list



:!echo
%:p
;: 显示完整路径和文件名

:!echo
%:p:h
;: 只显示完整路径

:!echo
%:t
;: 只显示文件名



:set guifont=* 出选择字体对话框,





;:" 映射中常使用的表示

<CR>
;: 回车

<ESC>
;: Esc

<LEADER>
;: 右斜杠

<BAR>
;: 管道符号

<BACKSPACE>
;: 退格键

没有评论:

留言须知:
0. 你有權保持沉默,但你所說的將作為此BLOG有人訪問的證據。
1. 支持的HTML標籤:<a href="" title=""> <b> <em> <i> <strong>。
2. 留言留名,不然易被无视。(在“评论”中选择“名称/网址”,网址可以不填)。
3. 原則上我不删除留言,除非那則留言侮辱到你。