码迷,mamicode.com
首页 > 系统相关 > 详细

vim简明教程

时间:2016-04-11 12:14:12      阅读:427      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

模式

普通模式Normal mode

ESC

Ctrl-[

 

插入模式Insert mode

a/A

i/I

c

 

视图模式Visual mode

V:选择当前行进入视图模式

v:选择当前字符进入视图模式

<C-v>:进入列块视图模式

gv:重选上次的选取

 

命令模式Command mode

:set number显示行号

:q/w

 

启动与退出

Vim [filename,...]

Vim [filename,...] +line_num 打开文件并定位到指定行

 

:q无修改退出

:q!放弃修改强制退出

:wq保存修改退出

:w保存缓冲区内容到文件

 

使用手册

命令行模式下输入需要查看的命令或者内容即可查看帮助文档,例如

:h c 查看c命令的帮助文档

:h motion 查看有关motion的内容


移动

h/j/k/l:标准、针对实际行

区分屏幕行和实际行,如果是屏幕行则需要在前面加g

 

F/f:行内搜索字符移动

T/t:行内搜索字符移动

/:全文搜索查找移动

*:查找匹配当前光标所在单词,并进入下一个匹配项

 

gg:文件头部

G:文件尾部

nG:移动到指定行,n为行号

0:行首

$:行尾

^:行首第一个非空字符

 

H:屏幕头部

L:屏幕底部

M:屏幕中间

<C-f>:向下翻页滚屏

<C-b>:向上翻页滚屏

<C-d>:向下半页滚屏

<C-u>:向上半页滚屏

 

zz:滚动屏幕,使本行显示在屏幕中间

 

E:移动到本字符串或者下一个字符串的尾部

e:移动到本单词或者下一个单词的尾部

B: 移动到上一个字符串的首部

b:移动到上一个单词的首部

W:移动到下一个字符串的首部

w:移动到下一个单词的首部

 

)  移至下一个句子(sentence)首。

(  移至上一个句子(sentence)首。

}  移至下一个段落(paragraph)首。

{  移至上一个段落(paragraph)首。

sentence 是以 . ! ? 为区格。

paragraph 是以空白行为区格。

 

箭头小键盘移动,最低效!!!

 


编辑

剪切删除

删除即剪切

d{motion}

dd:删除光标所在的整行

 

c{motion}

C:删除当前光标到行尾,并且进入插入模式

cc:删除本行内容,并且进入插入模式

 

插入模式内删除

<C-w>:删除光标到本字符串起始处

<C-u>:删除光标到行首处

 

X:删除光标前一个字符

x:删除光标所在的字符


拷贝

y{motion}

yy复制当前光标所在的整行


粘贴

P/p

 


撤销

u

 


新行

O/o


motion

Motion用于执行删除拷贝等操作符的作用范围,简单而言就是选取。

aw:整个单词,包含前后的空白符

iw:整个单词,不包括前后的空白符

i/a{

i/a[

i/a(

a/it:html等标记语言的tag范围

t/T{char}

F/f{char}

 

典型:

daw:删除整个单词包括前后的空白符

 


恢复

Ctrl+r

恢复撤销的修改。

 


点范式

.

点命令支持对上一次的操作重复执行。合理设计命令再执行点命令将会大大提高执行效率。

 

 


寄存器

寄存器是文件编辑时使用到,可以临时保存文件的删除复制的内容。灵活使用寄存器将大大提高复制和删除的效率。

 

使用寄存器

“{register}

 

默认寄存器

Vim默认使用的寄存器,如果执行文件操作时不指定寄存器时,将默认使用。

等同于””

 

复制专用寄存器

0:在执行复制操作时,如果没有指定寄存器,那么vim将会将复制的内容将保存在该寄存器。

 

字母寄存器

a-z:新的内容将会覆盖旧内容

A-Z:新内容追加的旧内容上

 

系统寄存器

Vim与系统剪贴板的联系通过寄存器“+”,这就允许vim从系统剪贴板拷贝其他程序复制的内容,或者将vim的内容复制到寄存器提供给其他程序使用。

 

黑洞寄存器

_:如果真正想删除文件内容并且不再使用,那么应该使用黑洞寄存器,使用后该内容将一去不返!
查找

f{char}:本行内正向搜索字符

F{char}:本行内反向搜索字符

/{chars}:全文搜索字符串

*:全文搜索光标下的字符串,并跳转到符合匹配的字符串位置

 


自动补全

Vim原生支持自动补全功能。可在插入模式下触发。

插入模式下触发方法总结

命令

用途

<C-p>

普通关键字

<C-n>

普通关键字

<C-x><C-n>

当前缓冲区关键字

<C-x><C-i>

包含文件关键字,例如c/cpp语言下的include包含进来的文件中匹配。

<C-x><C-]>

标签文件关键字

<C-x><C-k>

字典查找

<C-x><C-l>

整行补全

<C-x><C-f>

文件名补全

<C-x><C-o>

全能补全,根据光标所在的上下文的短范围文本进行匹配补全

 

 

 

如果匹配选项存在多个的话,那么会弹出选择下拉菜单,支持可以使用<C-n><C-p>选择上一项或者下一项,当然也可以使用上下箭头按键选择。


替换

r{char}:替换单个字符

R{chars}:按位替换,相当于【insert】按键功能

 

Substitute替换命令

:[range]s/{pattern}/{string}/[flags]

:s/src/des:替换当前行第一个匹配的字符串

:s/src/des/g:替换当前行所有匹配的字符串

:%s/src/des/g:替换全文匹配的字符串

:%s/src/des/gc:替换全文匹配的字符串,替换时询问是否替换

 

 


缓冲区

VIM使用缓冲区来管理窗口上的文件显示,每个缓冲区仅针对一个文件,一个文件可以使用多个缓冲区。

缓冲区是文件加载到内存后的显示,所以对文件的修改实际上是对缓冲区的修改,仅当执行了保存,缓冲区的内容才会写入真实的文件中。

 

缓冲区列表在vim同时打开多个文件时使用非常方便,当仅限于查看而已,不能使用缓冲区命令中途打开新文件。

 

查看当前缓冲区列表

:ls

 

查看指定缓冲区

命令

用途

:b[uffer]f

激活并显示第一个缓冲区

:b[uffer]l

激活并显示最后缓冲区

:b[uffer]n

激活并显示下一个缓冲区

:b[uffer]p

激活并显示上一个缓冲区

:b[uffer] N

激活并显示指定序号的缓冲区

:b[uffer] path

激活并显示指定文件路径的缓冲区

 

删除缓冲区

:bdelete N1[,N2...Nn]

:N,M bdelete 

 


标签页

:tabedit {filename}命令在一个新的标签页打开文件,如果省略了{filename}参数,那么vim创建一个新的标签页,但是缓冲区空。

<C-w>+T:如果当前标签页包含了多个缓冲区窗口,使用该命令可以将当前缓冲区窗口移动到一个新的标签页。

命令

用途

:tabe[dit] {filename}

在新的标签页总打开filename

<C-w>+T

把当前窗口移到一个新标签页

:tabc[lose]

关闭当前标签页以及其中的所有窗口

:tabo[nly]

只保留当前活动标签页,关闭所有其他的标签页

 

标签页切换

Ex命令

普通模式命令

用途

:tabn[ext] {N}

{N}gt

切换到编号为{N}的标签页

:tabn[ext]

gt

切换到下一个标签页

:tabp[revious]

gT

切换到上一个标签页

 

标签页移动

命令

用途

:tabmove N

将当前活动的标签页移动到制定编号的位置

:tabmove 0

将当前活动标签页移动到开头

:tabmove

将当前活动标签页移动到结尾

 


分屏

VIM支持分屏显示。

左右分屏:<C-w>+v

上下分屏:<C-w>+s

 

在使用<C-w>执行分屏时,是以当前缓冲区为基准的,同时得到的新的缓冲区将于原先的保持同步。

如果需要打开其他的文件,那么使用命令:e[dit] filename

或者从命令模式中分割窗口

:vsplit filename

:split filename

 

关闭当前分屏:<C-w>+c或者<C-w>+q,需要注意的是如果当前仅有一个屏幕,那么执行<C-w>+q会退出vim。

使用<C-w>+o关闭所有其他的分屏

 

使用<C-w>+w可以循环切换分屏

切换分屏:<C-w>+h/j/k/l,该命令将光标在几个不同的屏幕之间切换


技巧

查看当前所在的路径

命令模式下:pwd

 

分屏查看当前目录的文件清单

命令模式下:He,水平分屏浏览当前目录

 命令模式下:Ve,垂直分屏浏览当前目录

 

如果命令后方追加!,那么将会调整分屏的次序。

 

交换两行的顺序

ddp

 

执行系统命令

进入命令模式,

:!{cmd}

 

比如查看当前所在路径的所有文件清单

:!ls

 

设定当前工作路径

:lcd {path}该命令可以设定当前窗口的本地工作目录,使用该命令可以让我们不同的标签页工作在不同的目录下。

 

vim简明教程

标签:

原文地址:http://www.cnblogs.com/chorulex/p/5377542.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!