vim操作教程,看这一篇绝对足够啦~

简介

vi 是一种命令行的文本编辑器,vim 是进阶版的 vi,gvim是vim的图形化版本。

Vim有几种基本的工作模式:

  • 一般模式(Normal Mode, 命令模式,普通模式)

一般模式是vim默认的模式,当打开一个文件时会自动进入此模式。

在此模式下,可以执行移动光标、滚动屏幕、删除字符、删除整行、复制、粘贴等操作。

  • 编辑模式(Insert Mode, 输入模式、插入模式)

在普通模式下键入i 、a 、 o等就可以进入编辑模式,可以对文件进行编辑。

  • 命令行模式(Command-Line, 底行模式)

在普通模式下,先输入冒号:,然后输入命令,最后按回车即可执行该命令。

  • 可视模式(Visual Mode)

在普通模式下键入v、V、ctrl+v等可以进入可视模式,然后可以通过移动光标选中所需要的文本。

此模式常用于完成文本的复制、粘贴、删除等操作。

  • EX模式

类似于命令行模式,可以一次运行多个命令。

这种模式个人还没有用过

模式切换图解

一般模式(Normal Mode, 命令模式,普通模式)

光标移动

上下左右

h j k l   上、下、左、右

单词移动

w/W     移动到下一单词的开头

b/B     移动到上一单词的开头

e/E     移动到光标所在单词的末尾

ge      将光标移动到上一个单词的词末

nw      指定移动的次数

注:WBE命令操作的单词是以空白字符(空格、Tab)分隔的字串

比如字符串“str1-str2 str3-str4”,对WBE命令来说是两个单词,而对wbe命令来说则是四个单词

行级移动

nj/n+   光标向下移动n

nk/n-   光标向上移动n

nh      光标向左移动n

nk      光标向右移动1/n

0       移动光标到当前行行首

$       移动光标到当前行行尾

^       移动光标到当前行的第一个非空字符

ngg/nG  光标移至第n行的行首

:n      移动光标到当前文件的第n

n|      把光标移到第n列上

fx      将光标移动到当前行的第一个字符x

3fx     将光标移动到当前行的第3个字符x

tx      将光标移动到目标字符x的前一个字符上

fxtx可以通过;,进行重复移动,一个是正向重复,一个是反向重复

文本块移动

(   移到当前句子的开头

)   移到下一个句子的开头

{   移到当前段落的开头

}   移到当前段落的末尾

[[  移到当前这一节的开头

]]  移到下一节的开头

屏幕级移动

zt   将当前行的位置变成屏幕顶端

zz   将当前行的位置变成屏幕中部

zb   将当前行的位置变成屏幕底部

H    把光标移到屏幕最顶端一行

M    把光标移到屏幕中间一行

L    把光标移到屏幕最底端一行

nH   移到屏幕倒数第n

nL   移到屏幕第n

g0   移动到当前屏幕行行首

g$   移动到当前屏幕行行尾

g^   移动到当前屏幕行第一个非空字符处

Ctrl + f  向下翻页

Ctrl + b  向上翻页

Ctrl + u  向前滚动半页

Ctrl + d  向后滚动半页

ctrl+e    向下滚动一行

ctrl+y    向上滚动一行

gg   移动到文件头部

G    移动到文件尾部

:$   移动到最后一行

x%   移动到某一位置( 如要移动到文件中间,就使用50%

标记

m{a-z}   设定当前光标位置为标记,其中,{a-z}表示任意一个小写字母;局部标记,只用于本次编辑。

m{A-Z}   全局标记。退出Vim 重新启动,标记仍然有效。

`{a-z}   跳转到标记位置。其中,{a-z}表示之前设定的标记的字母。

到达标记后,可以用Ctrl+o返回原来的位置。

{a-z}    移动到标记行的行首

`{0-9}   回到上[2-10]次关闭vim时最后离开的位置。

.        移动到最近编辑的位置

      移动到最近插入的位置

'        移动到上一次跳转前的位置

"        移动到上一次退出文件时的位置

[        移动到上一次修改的开始处

]        移动到上一次修改的结尾处

:marks              显示所有标记。

:delmarks a b       删除标记ab

:delmarks a-c       删除标记abc

:delmarks a c-f     删除标记acdef

:delmarks!          删除当前缓冲区的所有标记。

:help mark-motions  查看帮助

实例:

mx,my,mz设置三个标记

`x,`y,`z分别跳转到这三个标记

复制剪切粘贴

yy    复制整行(nyy或者yny ,复制n行,n为数字);

y^    复制当前到行头的内容;

y$    复制当前到行尾的内容;

yw    复制一个word nyw或者ynw,复制nwordn为数字);

yG    复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾) 

   

d     剪切选定块到缓冲区;

dd    剪切整行

d^    剪切至行首

d$    剪切至行尾

dw    剪切一个word

dG    剪切至档尾 

 

p     小写p代表粘贴到光标所在行下面

P     大写P代表粘贴到光标所在行上面

删除

x/d1   删除光标所在的字符

X/dh   删除光标左边的字符

D      删除至行尾(包括光标所在的字符)

dd     删除光标所在的行,也是剪切

ndd    向下删除n

dw     删除一个单词(从光标处到空格)

daw    无论光标在什么位置,删除光标所在的整个单词(包括空白字符)

diw    删除整个单词文本,但是保留空格字符不删除

d2w    删除从当前光标开始处的2个单词

d$     删除从光标到一行末尾的整个文本

d0     删除从光标到一行开头的所有单词

dgg    删除从光标到文本开头

dG     删除从光标到文本结尾

J      删除一个分行符,将当前行与下一行合并

修改和替换

~    修改光标下字符的大小写

xp   交换光标和下一个字符

r    替换当前光标下的字符

R    进入到替换模式,连续取代,直到按下ESC

撤销操作

u      撤销上一步的操作

Ctrl+r 恢复上一步被撤销的操作

重复命令

.     重复上一个命令(不会重复撤销命令)

退出

ZZ    保存退出

ZQ   不保存退出

文件跳转

移动光标到文件路径上,然后键入gf,可以跳转到该文件。

键入ctrl+F6可以再跳转回原文件。

进入编辑模式

下面的命令都可以进入编辑模式,区别是在不同位置编辑:

i    在当前光标的前面插入字符

a    在当前光标的后面追加字符

o    在当前光标的下一行行首插入字符

I    在一行的开头添加文本

A    在一行的结尾处添加文本

O    在光标当前行的上一行插入文本

s    删除当前光标处的字符并进入到插入模式

S    删除光标所在处的行,并进入到插入模式

cw   删除从光标处到单词结尾的文本并进入编辑模式

cb   删除从光标处到单词开头的文本并进入编辑模式

cc   删除一整行并进入到插入模式

进入可视化模式

v          字符选择,会将光标经过的地方反白选择

V          行选择,通过上下移动光标可以选中多行

也可以通过行级光标移动操作选择多行,如通过ngg 从当前行选中到n

Ctrl+v     矩形区域选择

o         让光标置于被选中文本的另一头,这样就可以通过控制光标移动来决定被选文本将从何处开始,再按“o”又会让光标置于被选文本的末端。

O         当进行矩形文本块内容的选择时,有4个角都可以改变。“o”只会把光标带到对角的位置去,使用“O”命令可以让光标在同一行的左右两个角之间移动。

编辑模式(Insert Mode, 输入模式、插入模式)

ctrl+n (ctrl+p),显示历史输入过的代码,可以自动补全;

命令行模式(Command-Line, 底行模式)

退出

:q   退出

:q!  强制退出,丢弃做出的修改

:wq  保存退出

:x   保存退出

:e!  命令放弃所有修改并重新载入该文件的原始内容

查找

/string   正向查找

?string   反向查找

替换

:s/old/new          将当前行的第一个字符串old替换为new

:s/old/new/g        将当前行的所有字符串old替换为new

:90s/old/new/g      将指定行的所有字符串old替换为new

:90,93s/old/new/g   将指定范围的行的所有字符串old替换为new

:%s/old/new/g       将文本中所有的字符串old替换为new

:%s/old/new/gc      依次替换每个字符串关键字

:%s/^struct/int/g   将所有以struct开头的字符串替换为int

可视模式(Visual Mode)

可视模式是选中一块区域进行操作,包括删除,替换,复制,粘贴,改变大小写等。

进入可视化模式:

v          字符选择,会将光标经过的地方反白选择

V          行选择,通过上下移动光标可以选中多行

也可以通过行级光标移动操作选择多行,如通过ngg 从当前行选中到n

Ctrl+v     矩形区域选择

o         让光标置于被选中文本的另一头,这样就可以通过控制光标移动来决定被选文本将从何处开始,再按“o”又会让光标置于被选文本的末端。

O         当进行矩形文本块内容的选择时,有4个角都可以改变。“o”只会把光标带到对角的位置去,使用“O”命令可以让光标在同一行的左右两个角之间移动。

操作:

d          删除/剪切反白区域

D          删除反白区域经过的行

y          复制反白区域

p          将复制的反白区块,在光标所在处粘贴

多列插入    选中多列后键入shift+i,编辑,最后键入ESC

多列替换    选中多列后键入s,编辑,最后键入ESC

u          将反白部分的字符全部改为小写

U          将反白部分的字符全部改为大写

>          将选中部分右移一个 tab 键规定的长度

<          将选中部分左移一个 tab 键规定的长度

VIM与系统剪贴板的复制粘贴

在同一个vim文件内部进行复制和粘贴命令分别是y和p;

如果要复制外部数据到vim中或者将vim中的数据复制到外部,这两个命令就无效了。

除了使用鼠标外,还可以使用下面的命令:

向外复制: 先通过visual模式选中内容,然后执行 "+y将vim数据复制到系统剪贴板,在vim外执行Ctrl v即可完成数据粘贴。

从外粘贴:在normal模式下执行"*p(不是命令行模式,直接按这三个键就行)

可以在vimrc中设置快捷键:

vnoremap <C-y> "+y   "支持在Visual模式下,通过Ctrl+y复制到系统剪切板

nnoremap <C-p> "*p   "支持在normal模式下,通过Ctrl+p粘贴系统剪切板

注意Ctrl y和Ctrl p在 vim 中有特殊含义,使用以上设置后会覆盖默认设置。

标签页(tab)、窗口(window)和缓冲区(buffer)

缩进设置

按键重映射

修改配色方案

设置代码折叠

给begin end 配对

vimrc通用配置说明

插件列表

使用vim-plug离线安装vim插件

使用vundle在线安装vim插件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IC白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值