Vim的使用方法

2015/10/10 - 工具

移动

0    光标移动到本行行首
$     光标移动到本行行尾
gg  移动到全文首行
移动到全文尾行
ngg 移动到第n行
n+  向移动n行
n-   向移动n行
ctrl + u         向上翻半屏
ctrl + d         向下翻半屏
ctrl +b         向上翻一屏
ctrl + f         向下翻一屏
ctrl + e |       光标不动,向下移动一点屏幕
ctrl + y |       光标不动,向上移动一点屏幕
 
H   |  光标移动屏幕的顶端
M   |  光标移动到屏幕的中间
L   |  光标移动到屏幕的底端
w    光标移到下一个word
b    光标移到上一个word
’’    移动到光标上次停靠的地方, 是两个’, 而不是一个”
ctrl + o  回到上一次光标处
ctrl + i   进到下一次光标处
`.   回到上次编辑的地方
[[    跳转到代码块的开头去,但要求代码块中’{‘必须单独占一行

搜索

/    后面跟要查找的东西,在文件中向下搜索
?    后面跟要查找的东西,在文件中向上搜索
n    向前重复搜索
N    向后重复搜索
  移动当前光标所指的单词下一次出现的地方,相当于搜索
#    移动当前光标所指的单词上一次出现的地方
ma  标记。a是我们对这一行所做的标记的名称
‘a   快速的移到刚才所做标记的地方
:marks  列出当前的所有的标记。
d‘a   删掉这一标记

复制、粘贴

yy   复制光标当前行
nyy  复制光标当前行到当前行以下的n-1行
:1,100 co 200  将1~100的内容复制到第200行。
:100,102 co $  将100~102行的内容复制到最后一行。
  粘贴到当前行的下一行
P    粘贴到当前行的 上一行
]p 和 p 的功能差不多,但是它会自动调整被粘贴的文本的缩进去适应当前代码的位置
ctrl + r  ctrl + w  将光标的单词复制到vim的命令行模式

替换

:1,$s/^/some string /g       在文件的第一行至最后一行的行首插入“some string”。
:%s/$/some string/g         在整个文件每一行的行尾添加“some string”。
:%s/string1/string2/g         在整个文件中替换“string1”成“string2”。
:3,7s/string1/string2/        仅替换文件中的第3行到第7行中的“string1”成“string2”

选择

v   选择复制
vaw      选择一个单词
vas       选择一个句子
vap       选择一个断落
V 选择一行, 行选
ctrl + v  列选
ci'、ci"、ci(、ci[、ci{、ci<-   |   分别更改这些配对标点符号中的文本内容
di'、di"、di(或dib、di[、di{或diB、di-   |   分别删除这些配对标点符号中的文本内容
yi'、yi"、yi(、yi[、yi{、yi<-   |   分别复制这些配对标点符号中的文本内容  
vi'、vi"、vi(、vi[、vi{、vi<-   |   分别选中这些配对标点符号中的文本内容
上面的i改成a可以连配对标点一起操作

删除

dd  删除当前行
ndd  与nyy相似
dw  删除一个单词
ndw 删除n个单词
x    删除一个字符
nx   删除n个字符
dG   删除当前光标到文件末尾的所有内容。
d0   删除当前光标到本行行首的所有内容
d$   删除当前光标到本行行尾的所有内容
ddp  上下两行调换
D  删至结尾
C  删至结尾并插入
:1,100d  删除1~100
:100d    删除第100行
:1,100 mo $  将1~100行的内容移动到最后一行。
dt”    删除所有的内容,直到遇到双引号
:g/^\s*$/d        将所有不包含字符(空格也不包含)的空行删除
ctrl + h  插入模式下, 回删一个字符
ctrl + w  插入模式下, 回删一个单词

代码格式

<  |  文本左缩进
>  |  文本右缩进
==   当前行自动缩进对齐,自动格式化
n==   自动缩进光标下n行 
gg=G     当前文件所有行自动缩进对齐

光标放在{处,然后输入v%就可以把大括号中内容选定,然后按=就可以按照排C语言格式缩

提示、注释

ctrl + g   在最后一行中显示光标所在位置的行数及文章的总行数
:1,20s/^/\/\//g     注释1到20行 
:%s/New_//gc  替换,且询问是否替换

插入模式

i   在当前位置的字符前面进入插入模式
I   在当前行的开头进行插入
a   在当前位置的字符后面进入插入模式
A   在当前行的结尾进行插入
o  在当前行下面打开一个新行进行插入
O  在当前行上面打开一个新行进行插入
J   合并光标所在行及下一行为一行(依然在命令模式)

撤销

u   撤销上一次的更改 
U  取消对行所作的所有改变
ctrl + r   撤销你的撤销(相当于window下的ctr+y)
.    这个命令是用来重复上一命令的 

奇葩

ggguG 把整个文章全部小写
大写 在v模式下  选中单词  U 
:nohl 取消高亮

CTags

ctrl + ] 就可以定位到函数的定义位置:
ctrl + t/o 退回原来的地方;
ctrl + n, ctrl + p  弹出智能提示的菜单
ctrl + e 退出提示,并取消选择
ctrl + y  退出提示  并接收当前选择
gd 到达光标所在处函数或者变量的定义处(gD 全局搜索)

find ~/qualitytesttrunk/ /usr/local/srvframework2/ | grep -v svn | xargs ctags

命令行操作

:sh   回到shell命令
exit  回到vim

分屏

:sp filename 在当前窗口上面新开一个窗口文件名为filename
:vsp filename 在当前窗口左右开一个
ctrl + wk  光标移动到上边,依此递推h j k l 
ctrl + w + w   顺序切换到下一个
:tabnew 新建标签页
:tabf test* 在新tab中打开搜索到的文件//有点类似于上面
:tabs   显示已打开标签页的列表
:tabc   关闭当前标签页。
:tabo  将关闭所有的标签页。
:tabp或gT   移动到上一个标签页
:tabn或gt    移动到下一个标签页。
:tabdo   同时在多个标签页中执行命令。比如我们打开了多个标签页,需要把这些文件中的“food”都替换成“drink”,那么就可以使用:tabdo %s/food/drink/g命令,一次完成对所有文件的替换操作,而不用针对每个文件重复操作。
ctrl w -/+  调整分屏高度
ctrl w </>   调整分屏宽度

打开vim

vim  -p  OidbCmlb.h  log.h  tab打开多个文件
gf   打开当前光标所在文件
vim log.h +45  45行打开

常用命令

#vim可以鼠标滑动粘贴,在.vimrc中添加下面语句
if has('mouse')
    set mouse=a
endif
:inoremap jk <esc>

gotags -f="tags" -R *

其他


如果文章对您有帮助,欢迎扫描下方二维码赞助(一分也是爱噢),谢谢

Search

    一分也是爱噢 一分也是爱

    目录