vim常用操作

1.前言

 vi(vim)可以说是linux中用得最多的工具了,不管你配置服务也好,写脚本也好,总会用到它。但是,vim作为一个“纯字符”模式下的工具,它的操作和WINDOWS中的文本编辑工具相比多少有些复杂。
这里,我根据自己个人的使用经验,整理了一套vim的操作以及记忆的方法,希望对大家的学习有所帮助。

2.VIM的三种模式

命令模式:在Linux终端中输入“vim 文件名”就进入了命令模式,但不能输入文字。 
编辑模式:在命令模式下按i就会进入编辑模式,此时就可以写入程式,按Esc可回到命令模式。 
末行模式:在命令模式下按:进入末行模式,左下角会有一个冒号出现,此时可以敲入命令并执行。 
下面是三种模式的简单分析图: 
这里写图片描述

3. 常用命令和操作

3.1 方向与跳转

h     j     k     l
左    下    上    右
 
Ctrl + f        翻到下一页(向前翻页)     front
Ctrl + b       翻到上一页(向后翻页)     back
Ctrl + u       向前翻半页
Ctrl + d       向后翻半页

gg              回到文件的开头     小个子(g)站队头

GG            回到文件的末尾      大个子(G)站队尾

HH           回到屏幕的顶端      

MM           回到屏幕的中间       美美(MM)站队中间

LL            回到屏幕的底端       

 

^                 移到行头          往上就到行头了(象形)
$                移到行尾          写完一行就要给一行的钱
0                移到下行行首   
 
w               下一个单词         word
b                前一个单词         behind(在。。。后面)
e              下一单词尾         end
123G        跳到123行        大哥(G)说到哪就到哪
i              光标前插入         insert
a              光标后加入         add
A              在行末加入   在一个词后是小a,一个行后就是大A
o           另起一行加入  一个小鸡蛋(小o)掉下来了摔开了花
O          上一行加入       吐一个大泡泡(大O)飞上去破了

 3.2 删除

---------- c(吃掉)代表行内删除--------
cw        删除一个单词(一部分不包括空格)  吃掉一个 word
c$       删除一行到行尾      刚写的一行被删了,钱也拿不到了
c^       删除一行到行头         往上吃,一直吃到头         
x        删除一个字符           看你不爽就打上“x”
 
 
---------- d 代表删除--------------
dd          删除一行                       del dir
dw          删除单词到尾部(包括空格)     del word
de          删除单词到尾部(不包括尾部空格) del end
d$          删除当前到行尾的所有字符      del $(代表尾部)
d^          删除当前到行首的所有字符      del ^(代表行首)
 

3.3 合并与撤销

J    合并当前行    一个大钩子(J)把下面的一行拉到自己行尾
u    撤销上次操作           undo
U  撤销当前行所有操作  事情闹大了,得有个更大的UNDO才能恢复
Ctrl + r    恢复undo 前            recover

3.4 复制

--------- y 代表复制到缓存中-----------
yy           复制当前行整行的内容到vi缓冲区 ,如果复制5行就是5yy
yw           复制当前光标到单词尾字符的内容到vi缓冲区
y$           复制当前光标到行尾的内容到vi缓冲区
y^           复制当前光标到行首的内容到vi缓冲区
p            读取vi缓冲区中的内容,并粘贴到光标当前的位置(不覆盖文件已有的内容)

3.5 搜索与替换

/word       从上而下查           /是从上而下写的吧
?word       从下而上查找     字符在哪儿呢(?)回头找找吧
n           定位下一个匹配的   相当于向下查找下一个 next
N          定位上一个匹配的     相当于向上查找上一个
 
*或#  找到与当前光标所在字符串匹配的下一个字符串
%      找到对用的括号
 
 
:s/1/2    搜索当前行第一个1并用2代替      search
:s/1/2/g  搜索当前行所有的1并用2代替      global
:#,#s/1/2/g    在#,#间搜索所有1并用2替换
:%s/1/2/g      在整个文档中将1替换为2     100%(全部)
:s/1/2/c    每次替换都给出提示确认        cue提示
 
:grep   直接调用系统的grep命令,搜索完毕后可以通过:copen查看列表,点击后可以进入文件
            通过输入:cw可以再次显示搜索结果

3.6 多文件操作

vim 1.txt 2.txt 3.txt  同时打开多个文档
:files            显示当前打开哪些文件
:args            显示多文件信息(会在末行提示当前打开了哪些档)     are globals
:next或:n             切换到下一个文件
:prev或:N             切换到上一个文件
:first            定位首文件
:last             定位尾文件
Ctrl + ^        快速切换到编辑器中切换前的文件
:split             将打开的多个文件水平放置
:vsplit或:vs           将打开的多个文件垂直放置
:Ex               列出当前文件所在目录,便于查找文件
 
Ctrl+ww       依次切换下一个文件
Ctrl+6           切换不同文件
bn                下一个文件
bp                上一个文件
:ls                  列出打开的文件,带编号
b1~n            切换至第n个文件

3.7 Nerdtree的使用及快捷键

ctrl+w+w    光标在左右窗口切换
ctrl+w+r     切换当前窗口左右布局
ctrl+p         模糊搜索文件

t                 在新 Tab 中打开选中文件/书签,并跳到新 Tab
T                在新 Tab 中打开选中文件/书签,但不跳到新 Tab

gT              切换到前一个tab
g t              切换到后一个tab

o                展开左侧某个目录,再按一下就是合并目录

P               跳到根结点
p               跳到父结点

q              关闭 NerdTree 窗口

 3.8 vimgrep插件使用及快捷键

vimgrep /pattern/ %           在当前打开文件中查找
vimgrep /pattern/ *             在当前目录下查找所有
vimgrep /pattern/ **            在当前目录及子目录下查找所有
vimgrep /pattern/ *.c          查找当前目录下所有.c文件
vimgrep /pattern/ **/*         只查找子目录

注:如何忽略目录,如:

1.在~/.profile中添加  export GREP_OPTIONS="--exclude-dir=cscope\.out --exclude=tags"  

2.source ~/.profile

 3.9 cscope插件使用及快捷键

设置快捷键后,将光标听到某个字符串,可以通过输入Ctrl+\ ,然后输入字符的方式来执行;

之后可通过:copen的方式查看结果

 3.10 VIM与SHELL切换

:shell      可以在不关闭vi的情况下切换到shell命令行

:exit        从shell回到vi

 

posted @ 2018-06-07 17:26  jasonactions  阅读(201)  评论(0编辑  收藏  举报