vim的使用方法

来源:互联网 发布:java昵称正则表达式 编辑:程序博客网 时间:2024/05/16 18:28
不要试图一次记下很多 
每次掌握最需要的两三个技巧 
然后多多熟悉 嗯 这样总有一天 突然发现你是vim达人了 
----------------------------------------------- 
写在前面: 
vim是一款相当出色的编辑器(或者已经超越了编辑器的范畴),现在觉得使用鼠标是件很麻烦的事。不由自主的会在word中按Esc,也会在UE中按:q,好奇怪 
下面主要介绍了vi最常用,也最有用的tips,比如”fx”命令找到当前行中下一个字母x,比如”`.”返回上次编辑的地方,比如”ma”插入一个标签a,并使用”`a”来返回到该标签,还有”shift+c”删除到行末并直接进入插入模式…. 
——————————我是分割线———————- 
vim模式与命令 
通常模式(n) 在其它任何一个模式下,用ESC或者 ctrl+c 键可以退到通常模式 
插入模式(i) 在这个模式下,vim像一个常见的编辑器.在通常模式下,用i或者a可以进行本模式,当然,还有一些其它命令也可以 
可视模式(v) 在这个模式下,可以使用hjkl进行选择.然后进行copy,paste或者其它操作. 在通常模式下,用v命令进入可视模式 
块操作模式(V) 这是块操作模式. 在通常模式下,用ctrl+v进入本模式 
修改模式(R) 这是改写的模式.很多软件法用insert键来完成这个切换.在vim中,从通常模式用R即可进入改写模式 
扩展命令模式(ex) 这是命令执行模式 在通常模式下用:切换到此模式 

Hint: 使用时一般处于通常模式或者插入模式,需要Copy/Paste时会用到可视模式。一般来说,vim新人偏爱插入模式,并通过键盘右下角的方向键移动光标,但是,插入模式的vim功能与windows记事本相当,通常模式下才可以发挥vim的高效编辑等功能。 

vim基本编辑技巧 
消除行尾空白字符 :%s/s+$//g 
Tab键转为4个空格 :%s/t/ /g (/g前有4个空格) 
h、j、k、l vim用来代替方向键,习惯以后编辑更加高效 

在当前行高效移动光标 
fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。 
tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用) 
Fx:和 fx 类似,不过是往回找。 
w:光标往前移动一个词。 
b:光标往后移动一个词。 
0:移动光标到当前行首。 
^:移动光标到当前行的第一个字母位置。 
$:移动光标到行尾。 

在整个文件里面高效移动光标 
:向下移动一屏。 
:向上移动一屏。 
%:跳到匹配的左/右括号上 
gg:到文件头 
G:到文件尾 
zz:移动当前行到屏幕中央 
zt:移动当前行到屏幕顶部 
zb:移动当前行到屏幕底部 
*:读取光标处的字符串,并且移动光标到它再次出现的地方。 
#:和上面的类似,但是是往反方向寻找。 
/text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n。 
?text:和上面类似,但是是反方向。 
ma:在当前光标的位置标记一个书签,名字为 a。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。 
`a:到书签 a 处。注意这个不是单引号,它位于键盘的 1 的左边。 
`.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它 

高效输入/删除 
i:在当前字符的左边插入 
I:在当前行首插入 
a:在当前字符的右边插入 
A:在当前行尾插入 
o:在当前行下面插入一个新行 
O:在当前行上面插入一个新行 
dd:删除当前行 
d$/d^:删除到行末/行首 
c{motion}:删除 motion 命令跨过的字符,并且进入插入模式。比如:c$,这将会删除从光标位置到行尾的字符并且进入插入模式。ct!,这会删除从光标位置到下一个叹号(但不包括),然后进入插入模式。被删除的字符被存在了剪贴板里面,并且可以再粘贴出来。 
按v进入可视模式,选中多行后按=自动格式化 

查找技巧 
/xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找. 查找到以后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找. 
*(#) 当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的下(上)一个单词. 同样, 再输入 n 查找下一个匹配处, 输入 N 反方向查找. 
g*(g#) 此命令与上条命令相似, 只不过它不完全匹配光标所在处的单词, 而是匹配包含该单词的所有字符串. 
gd 查找与光标所在单词相匹配的单词, 并将光标停留在文档的非注释段中第一次出现这个单词的地方. 
% 查找与光标所在处相匹配的反括号, 包括 () [] {} 
f(F)x 在光标所在行进行查找, 查找光标右(左)方第一个x字符.找到后:输入 ; 表示继续往下找;输入 , 表示反方向查找 

插入if条件语句后,有以下三种代码块缩进的方法: 
用shift-v选中这几行,然后用>向右缩进 
>nj ,n 为行数 (>表示缩进,nj表示向下移动n行) 
把光标放在第一个大括号{上, 然后按%=使vim自动缩进 

vim高级技巧 
多窗口编辑器 
创建窗口:new(当前窗口上方创建新窗口)和vnew(当前窗口左侧创建新窗口) 
分裂窗口:split(水平)和vsplit(垂直) 
改变当前窗口的大小: 
+ (增大) 
- (减小) 
_ (窗口高度最大化) 
| (窗口宽度最大化) 
= (恢复所有窗口同样大小) 

切换窗口 方向键 
j 切换到当前窗口下方的窗口 
k 切换到当前窗口上方的窗口 
h 切换到当前窗口左侧的窗口 
l 切换到当前窗口右侧的窗口 
重复某个动作若个次:数字 + 动作,例如: 
2dd 删除两行 
10 + 将当前窗口增加10行 
注释多行代码:按ctrl+v后选中多行,然后按shift+i进入插入模式,插入若干字符后按ESC后会在选中的所有行前面都插入相同的字符 

vim代码折叠 
折叠方式 可用选项 ‘foldmethod’ 来设定折叠方式:set fdm=*****。 
有 6 种方法来选定折叠: 
manual 手工定义折叠 
indent 更多的缩进表示更高级别的折叠 
expr 用表达式来定义折叠 
syntax 用语法高亮来定义折叠 
diff 对没有更改的文本进行折叠 
marker 对文中的标志折叠 
注意,每一种折叠方式不兼容,如不能即用expr又用marker方式,我主要轮流使用indent和marker方法 

折叠命令 
选取了折叠方式后,我们就可以对某些代码实施我们需要的折叠了,由于我使用indent和marker稍微多一些,故以它们的使用为例:如果使用了indent方式,vim会自动的对大括号的中间部分进行折叠,我们可以直接使用这些现成的折叠成果。 
在可折叠处(大括号中间): 
zc 折叠 
zC 对所在范围内所有嵌套的折叠点进行折叠 
zo 展开折叠 
zO 对所在范围内所有嵌套的折叠点展开 
[z 到当前打开的折叠的开始处。 
]z 到当前打开的折叠的末尾处。 
zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。 
zk 向上移动到前一折叠的结束处。关闭的折叠也被计入 
原创粉丝点击