vim使用技巧Word格式文档下载.docx
《vim使用技巧Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《vim使用技巧Word格式文档下载.docx(36页珍藏版)》请在冰豆网上搜索。
)
因为第二部分经常用到这个概念,所以在此说一下
----------------------------------------
#基础
*#g*g#
:
寻找光标处的狭义单词()(前向/后向)
%
:
括号配对寻找{}[]()
matchit.vim
使得%能够配对标记
等等
插入模式下的单词自动完成
行自动完成(超级有用)
/
把狭义单词
写到搜索命令行
把广义单词
setignorecase
搜索时忽略大小写
syntaxon
在Perl,HTML,PHP等中进行语法着色
hregexp
按下control-D键即可得到包含有regexp的帮助主题的列表
(使用TAB可以实现帮助的自动补齐)
#使更新_vimrc更容易
nmap,s:
source$VIM/_vimrc
#译释:
nmap是绑定一个在normal模式下的快捷键
nmap,v:
e$VIM/_vimrc
在normal模式下,先后按下,s两个键执行_vimrc,而,v则是编辑_vimrc
#visual模式(例子是:
轻松添加其他的HTMLTags)
vmapsb"
zdiz
在visual模式下选中的文字前后分别加上和
vmap是绑定一个在visual模式下的快捷键
原理:
在visual模式下,"
zd把一个选中的区域命名为z然后删除,
#i进入插入模式,输入,z撤销刚才的删除,然后再写入,
#最后返回normal模式
"
z命令创建一个选中的区域为register,并把它命名为z
更令人开心的有:
在visual模式下选中几行,然后输入2>
#
则选中的行会全部缩进两个tab
555,偶一开始还是用:
xx,xxs/^/\t\t/,好傻啊!
vmapst"
zdiz?
>
在visual模式下选中的文字前后分别加上和?
#文件浏览
Ex
开启目录浏览器,注意首字母E是大写的
Sex
在一个分割的窗口中开启目录浏览器
ls
显示当前buffer的情况
cd..
进入父目录
args
显示目前打开的文件
lcd%:
p:
h
更改到当前文件所在的目录
lcd是紧紧改变当前窗口的工作路径,%是代表当前文件的文件名,
#加上:
p扩展成全名(就是带了路径),加上:
h析取出路径
autocmdBufEnter*lcd%:
自动更改到当前文件所在的目录
autocmd指定一个自动命令,BufEnter指定一个事件,*指定事件的对象,
#lcd%:
h指定一个动作
#hehe,好像和写记叙文差不多
#缓冲区(buffer)浏览器(第三方的一个最流行的脚本)
#需要下载bufexplorer.vim,http:
//www.vim.org/script.php?
script_id=42上就有
\be
在缓冲区浏览器中打开缓冲区列表
\bs
以分割窗口的形式打开缓冲区浏览器
#大小写转换
guu
行小写
gUU
行大写
g~~
行翻转(当然指大小写啦)
g是大小写转换命令(greate),u/U/~是三种转换形式(小写/大写/翻转),
#最后一个重复则表示该转换是对于一行而言的
guw
字大写(狭义字)译注:
建议对比iw
gUw
字小写(狭义字)
g~w
字翻转(狭义字)
最后一个w表示该转换是对于一个字而言的,由于是在normal模式下,
#所以这个w表示一个狭义字
vEU
字大写(广义字)
vE~
字翻转(广义字)
vE这个指令组合会进入visual模式,然后选择一个广义字
ggguG
把整个文章全部小写(ft!
bt!
gf
取当前光标处的广义字作为文件名,然后试图打开它!
为什么是广义字呢?
因为这样可以方便的取到路径啊,像/var/www/html/index.htm
ga
显示光标处字符的ascii,hex,oct,...晕菜的一堆转换
ggVGg?
用rot13编码整个文件(晕!
gg到文件首行首字符,V进入Visual-Line模式,G到文件末行首字符,
这样就选中了整篇文章,然后g?
就是用rot13编码整个文件啦
#
#【关于rot13——谁让英文是偶数个字母啊】
#ROT13是一种简单的编码,它把字母分成前后两组,每组13个,编码和解码
#的算法相同,仅仅交换字母的这两个部分,即:
[a..m]-->
[n..z]和[n..z]
#-->
[a..m]。
ROT13用简易的手段使得信件不能直接被识别和阅
#读,也不会被搜索匹配程序用通常的方法直接找到。
经常用于USENET中发表一
#些攻击性或令人不快的言论或有简单保密需要的文章。
#由于ROT13是自逆算法,所以,解码和编码是同一个过程。
增加,减少光标处的狭义字所表示的数字
(,仅仅是分割了这两个命令,不是命令的一部分)
Win32的用户可能需要重新定义一下Ctrl-A,呵呵
#译注:
goodguy,令人不得不想到perl的数字串
=5*5
插入25(这是一个迷你计算器耶!
#好玩的东东
h42
也可以访问
第一个结果就是News.DouglasAdams1952-2001.
Floor42extendsitsdeepestsympathiesto
thefamily,friends,andfansofDouglasAdams.
hholy-grail
h!
#标记和移动
'
.
跳到最后修改的那一行(超级有用)(ft,怎么又是这个评价)
`.
不仅跳到最后修改的那一行,还要定位到修改点
依次沿着你的跳转记录向回跳(从最近的一次开始)
依次沿着你的跳转记录向前跳
ju(mps)
列出你跳转的足迹
helpjump-motions
history
列出历史命令记录
hisc
命令行命令历史
hiss
搜索命令历史
q/
搜索命令历史的窗口
q:
命令行命令历史的窗口
历史命令记录的窗口
#缩写和键盘映射(原文中文件举例都用了c:
/aaa/x,偶全给他改成/path/file了,哼唧)
map
a,'
bw!
/path/file
map是映射一个normal模式下的键
#这里是把F7键映射成把标记a到标记b中间的内容另存为一个文件/path/file
#标记(mark)的方法:
把光标移动到需要标记的地方,输入m,然后输入标记名,例如a
#引用标记的方法:
a,即:
单引号加标记名
r/path/file
把F8键映射成在当前位置插入文件/path/file的内容
.w!
/path/file2
.(点号)表示当前行
#所以F11就是把当前行存为/path/file2
#最后的表示一个回车
r/path/file2
abphp
列出php表示的缩写
定义一个缩写使用:
iabhmhmisty
#一个有趣的现象是,它列出的会是php和它的前子串开头的缩写
#例如,有这么几个缩写:
#h=>
hmisty1,hm=>
hmisty2,hmi=>
hmisty3,m=>
hmisty4
#那么使用:
abhm会显示这么几个缩写:
hm和h
#而不是你想象中的hm和hmi
map,
列出以逗号开始的键盘映射
一般而言,我们称这些逗号开始的组合键为“逗号命令”
#不过hmisty更喜欢用;
构成“分号命令”
#而且不是用map,而是用imap
#因为偶懒么,懒得按,所以直接在insert模式下就执行命令了
#为什么用分号呢?
因为我最常用它写程序啊
#perl/C/C++/objectpascal/java,都是用分号结束一个语句
#我们一般很少在分号后面连续写其他字符
#所以用“分号+其他键”就很少会在输入的时候造成冲突
#在键盘映射中常用的表示
回车
Esc
转义符号\
管道符号|
#列出寄存器(Registers)
reg
显示所有当前的registers
1p
"
表示引用register,1表示一个名字叫做1的register,
p就是粘贴(paste)命令
也用来定义register
#先输入"
表示定义register
#然后输入名字,如0~9,a~z
#然后执行删除或复制命令,如dd或y,
或者是visual模式下的d(删除选中的部分)或y(复制选中的部分)
#则被删除或复制的部分就被存入了这个命名的register
#
#观察:
一个特殊的register,"
,里面存储了一个匿名的删除/复制
#在你执行dd或y的时候,被作用的部分被存到了"
中
#这些和perl是多么像啊
#Usefultrick
ayy@a
把当前行作为一个Vim命令来执行
ayy是定义当前行到registera,然后@a是执行registera中存储的指令
#yy:
复制一行
#10yy:
复制从此向下的10行
yy@"
用上面所提到的那个匿名register
#从其他程序获取输出(需要外部程序)
r!
ls.exe
读取ls的输出到当前位置
!
date
读取date的输出(但是会替换当前行的内容)
其实你输入了!
后,vim就自动转换到:
.!
等待你继续输入
#使用外部程序sort进行排序(sort是Unix标准命令,ls,date也是)
%!
sort-u
使用sort程序排序整个文件(用结果重写文件)
%表示整个文件的所有行
#!
sort表示执行外部命令sort
#-u是sort的参数,mansort看看,这个参数的意义是合并相同的行
#u就是unique,如果两行内容相同,则结果中只保留一行的说
b!
对marka到markb中间的内容进行排序
1}sort-u
排序当前段落(只能在normal模式下使用!
表示使用filter,1}表示filter的对象是从当前行开始向后数一段
#段落指到空行处结束,不包括空行
#其实你一旦输入!
1},vim就自动计算当前段落应该到那一行(eg.+5),然后生成
#:
.,.+5!
等待之后输入sort-u,回车,完成操作
#.表示当前行,.+5当然就是当前行向后数5行
#多文档操作(基础)
用:
ls!
可以显示出当前所有的buffer
bn
跳转到下一个buffer
bp
跳转到上一个buffer
wn
存盘当前文件并跳转到下一个(又是“超级……”,ft!
wp
存盘当前文件并跳转到上一个
bd
把这个文件从buffer列表中做掉
bun
卸掉buffer(关闭这个buffer的窗口但是不把它从列表中做掉)
baddfile.c
把文件file.c添加到buffer列表
b3
跳到第3个buffer
bmain
跳到一个名字中包含main的buffer,例如main.c
(ultra,这个怎么翻译?
()
savphp.html
把当前文件存为php.html并打开php.html
sav!
%换一个后缀保存
e!
返回到修改之前的文件(修改之后没有存盘)
w/path/%
把文件存到一个地儿
e#
编辑标记为#的buffer(这个buffer必须含有一个可编辑的文件)
用ls命令就能看到哪一个buffer有#
%a表示当前正在编辑的buffer
u表示不能编辑或者已经被做掉的buffer
e#3
编辑编号为3的buffer(这个buffer必须含有一个可编辑的文件)
rew
回到第一个可编辑的文件
brew
回到第一个buffer
spfred.txt
在一个水平分割的窗口中打开文件fred.txt
vsfred.txt可以实现垂直分割
sball
把当前所有含有可编辑文件的buffer显示到一个分割窗口中
(偶该考虑把super翻译成高级指令了,ft)
ls:
e#:
在normal模式下按F5键,则会显示所有含有一个
可编辑文件的buffer,然后提示你输入buffer的序号,
输入后回车,则编辑这个buffer
这是一个键盘绑定
sethidden
允许不保存buffer而切换buffer(w/o=without)
#在分割窗口中快速切换
j_
原文此处有误,前面应该加上冒号
#这是一个键盘绑定,把Ctrl-J定义成切换到下一个窗口并最大化
k_
#命令录制(最佳技巧,ft)
qq
#录制到q
...#输入一系列复杂的指令
q
#再次按q停止录制
@q
#执行q中存储的指令
@@
#重复执行
#编辑register/录制
ap#把registera中的内容贴到当前位置
...#现在你可以修改它了
add#删除之,重新存入registera
@a
#执行registera中的指令
#_vimrc基础
setincsearch
实时匹配你输入的内容
setwildignore=*.o,*.obj,*.bak,*.exe:
tab键的自动完成现在会忽略这些
setshiftwidth=4
现在自动缩进将是4个字符
一个tab位通常是8个字符
#所以,我们还要设定:
settabstop=4,这样,所有的缩进都是4字符了
#emacs默认就是4字符缩进吧?
setvbt_vb="
沉默方式(不要叫beep!
#加载windowsiexplorer来浏览(我想这只有在windows下用gvim才能用到)
nmap,f:
update:
silent!
startc:
\progra~1\intern~1\iexplore.exefile:
//%:
p
nmap是做一个normal模式下的键盘绑定
#这里绑定了一个逗号命令,f
update是写这个文件,与:
w不同,它只有当文件被修改了的时候才写
silent别让弹出窗口报告执行结果
...后面就是执行windows命令了。
呵呵,去问billgates什么意思吧。
#不过偶用gvim6.1试过了,好用!
nmap,i:
!
\progra~1\intern~1\iexplore.exe
#用VIM编辑ftp文件
cmap,r
Nreadftp:
//209.51.134.122/public_html/index.html
cmap,w
Nwriteftp:
原文丢失了开头的冒号
#cmap是命令(command)模式绑定
gvimftp:
#这一句就是开始编辑一个ftp远端的文件,ft
#附加到一个register(就是用大写的register名字啦!
a5yy#复制5行到a中
10j
#下移10行
A5yy#再添加5行到a中