您的位置:首页 > 运维架构 > Linux

vim常用技巧总结

2013-08-22 23:25 267 查看

1.文件浏览

:Ex                              : 开启目录浏览器,注意首字母E是大写的
:Sex                            : 在一个分割的窗口中开启目录浏览器
:ls                                : 显示当前buffer的情况
:cd ..                           : 进入父目录
:args                           : 显示目前打开的文件
:lcd %:p:h                    : 更改到当前文件所在的目录 # lcd是紧紧改变当前窗口的工作路径,% 是代表当前文件的文件名
                                                                                                   # lcd是紧紧改变当前窗口的工作路径,% 是代表当前文件的文件名,

                                                                         
                        # 加上 :p扩展成全名(就是带了路径),加上 :h析取出路径\r\n:autocmd BufEnter * lcd %:p:h   : 自动更改到当前文件所在的目录                                                                                #
译释:autocmd指定一个自动命令,BufEnter指定一个事件,* 指定事件的对象

                                                                                               # lcd %:p:h 指定一个动作

2.光标移动

0:移动到第一列
^ :光标移至行第一个非空字符上
$ :行末
g_ : 与^对应,移动到最后一个非空字符上
/pattern :搜索
G, gg: 光标移动至文件首/尾;
NG : 定位到第N行
w :定位到下一个单词(W见下图)
e :定位到该单词结尾(E见下图)



%: normal模式下%会跳转至配对括号;
* : 搜索下一个光标所指的单词
fa:到下一个a字符(F相反)
ta: 在下一个a之前(T相反)
zz, zt, zb: 将光标所在行居中/置顶/置尾;
H, M, L: 定位光标到当前窗口的首/中/尾;
*, #, n, N: 向前/后定位当前光标所在word,n/N沿相应/相反方向重复定位;
^a, ^x: 若当前光标所在word是数字,可递增/递减该数字,同时支持decimal和hexadecimal;
^, g_: 即Shift+6,定位光标到当前行首/尾的第一个非空白字符
^, g_: 即Shift+6,定位光标到当前行首/尾的第一个非空白字符;
*, #, n, N: 向前/后定位当前光标所在word,n/N沿相应/相反方向重复定位;
I, A: 定位光标至当前行首/尾,并进入insert模式,I会忽略行首空白;

3. 排版

 ^t,^d
: insert模式下,缩进/反缩进当前行;

4.编辑(自动补全):

^n:向下搜索关键字补全
^p:向上搜索关键字补全
^w: insert模式下,向后删除一个word;
^y: insert模式下,复制上一行同列字符;
^x^f: insert模式下,补全路径名;
^x^n:
insert模式下,补全tag(需要tags文件的支持);
 ^x^l:
insert模式下,补全行(根据已有行);

4.编辑(删除、复制、粘贴)

u :取消操作
^r: 重做
yy:拷贝当前行
P,p: 粘贴,大写的P 在光标所在行的前一行粘贴复制内容,p在下一行粘贴
dt': 删除到‘所有的内容
D, C: 删除光标所在位置到行尾的字符,C会进入insert模式;
cib: 或者ci(或者ci),删除当前括号内的所有字符并进入insert模式。

5.命令

K: 即Shift+k,根据光标所在word查阅man手册,非常实用的功能,当然前提是系统手册中已经有相应的条目了。通常需要安装manpages-dev, manpages-posix和manpages-posix-dev。
g/pattern/cmd : 这个命令很实用,但我用的并不太多,因为很多情况下它的功能可以有s命令完成。它对匹配pattern的所有行执行cmd命令,比如:g/^#/d删除所有以#开始的行。
. (点): 重复上一操作
N<命令> : 重复命令N次
<起始位置><命令><结束位置> 举例:0y$(复制改行内容0表示行首,y表示从此处复制,$表示到行末)y2/foo(从当前位置复制到第2个foo单词中的所有内容),d,v,gU,gu都可以

6.视图(visual)选择

    <action>i<object>或者<action>i<object> action可以为d,y,v, object为w,W,s,p,",',),},]

vi"
 → will select 
foo
.
va"
 → will select 
"foo"
.
vi)
 → will select 
"foo"
.
va)
 → will select 
("foo")
.
v2i)
 → will select 
map
(+) ("foo")

v2a)
 → will select 
(map
(+) ("foo"))




vim键盘图谱



    参考内容

    1. http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/(待翻译)

    2. http://blog.csdn.net/wow20008/article/details/7876429

    3. http://www.dutor.net/index.php/2011/09/efficient-vim-tips/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vim linux