vim编辑器基础操作大全
vim有三种模式:
Command Mode - 命令模式
Insert Mode - 输入模式
Last Line Mode - 底部模式(尾行)
vim abc #打开文件abc
vim + abc #打开文件abc,光标定位到最后一行
vim +3 abc #打开文件abc,光标定位到第三行
vim +/imooc abc #打开文件abc,光标定位在imooc第一次出现的地方
vim aa bb cc #打开文件aa,bb,cc,在底部模式通过n切换文件
Command Mode - 命令模式
1)插入模式
- [i]:在当前字符前插入字符
- [I]:在当前行行首插入字符
- [a]:在当前字符后插入字符
- [A]:在当前行行末插入字符
- [o]:在当前行下插入新的一行,从行首输入文字
- [O]:在当前行下插入新的一行,从行首输入文字
2)从插入模式切换为命令模式
- [ESC]键
3)移动光标
vi可以使用上下左右光标来移动,但正规的vi是用小写英文字母h,j,k,l分别控制左下上右一格的
- [ctrl+g]:显示文件信息,统计行号
- 数字+shift+G 跳到指定行
- [ctrl+b]:屏幕往后移动一页
- [ctrl+f]:屏幕往前移动一页
- [ctrl+u]:屏幕往后移动半页
- [ctrl+d]:屏幕往前移动半页
- [gg]、[1G]:移动到文章首行
- [G]:移动到文章尾行
- nG:移动到文章第n行
- [$]、[end]:移动到当前行行尾
- [0]、[home]:移动到当前行行首
- [w]:光标跳到下个字的开头
- [e]:光标跳到下个字的字尾
- [b]:光标回到上个字的开头
补
n+空格:光标向右移动n个字符
n+回车:光标向下移动n行
回车/空格:光标向下移动一行/光标向右移动1个字符
n + -/+:光盘向上/下移动n行
4)删除文字
- [x]、[del]:删除光标所在位置的后面一个字符
- [#x]:6x表示删除光标所在位置的后面6个字符
- [X]、[backspace]:大写的X,删除光标所在位置的前面一个字符
- [nX]:20X,表示删除光标所在位置的前面20个字符
- [dd]:删除光标所在行
- [ndd]:从光标所在行开始删除n行
- [s]:删除光标所在的字符并开始插入
- [S]:删除光标所在的行并开始插入
5)复制
- [yw]:将光标所在之处到字尾的字符复制到缓冲区
- [nyw]:复制n个字到缓冲区
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到末行的所有数据
- [yy]:复制光标所在行到缓冲区
- [nyy]:复制从光标开始往下的n行
- [p/P]:p复制的数据从光标下一行粘贴,P则从光标上一行粘贴
6)替换
- [r]:替换光标所在处的字符
- [R]:替换光标所到之处的字符,直到按下ESC键
7)恢复上一次操作
- [u]:撤回到上一个操作,多次按可以多次撤回
- [ctrl+r]:撤销恢复的上一步操作
8)更改
- [c#w]:写改光标后1(n)个词。例如,[c3w]表示更改3个词。(空格识别单词)
- [c#l]:改写光标后n个字母。(删除n个字母重新写)
9)跳至指定的行
- [ctrl+g]:李处光标所在行的行号。
- [#G]:例如,15G,表示移动光标至文章15行行首
10)保存并退出
- [ZZ]:保存并退出
Last Line Mode - 底部模式(尾行)
1)列出行号
- [set nu]:在文件每一行前面列出行号。
- [set nonu]:取消行号
补充
自动缩进
- [set autoindent]:开启缩进
- [set noautoindent]:取消缩进
搜索时不区分大小写
- [set ic]:不区分大小写
- [set noic]:区分大小写
2)跳到文件中的某一行
- [#]:调到第#行
3)查找关键字符
:/word:从光标之后查找word,按n查找下一个
:?word:从光标之前查找字符,按n查找上一个
:n3,n5s/word1/word2/g:在第3行和第5行间,搜索word1,替换为word2。可将/替换为#
:n1,n$s/word1/word2/g:在第1行和末间,搜索word1,替换为word2。
:n1,n$s/word1/word2/gc:在第1行和末间,搜索word1,替换为word2。c参数作用为替换每一个前确认
4)保存文件
- [w]:保存文件
5)离开vi
- [q]:退出vi,如果无法退出,可以在后面加一个!强制退出
- [wq]:保存并退出
- ZZ:文档没修改,不保存退出。修改,则保存退出
- [w]:保存不退出文件
- [w filename]:当前内容另存为filename
:r [filename]:在当前光标所在行的下面读入filename文档的内容
:f [filename]:将另一个文件内存添加到当前文件末尾
n1,n2 w [filename]:将n1到n2的内容另存为filename这个文档
e!:将文档还原成最原始状态
:! command:暂时离开vim运行command命令,然后返回vim模式下
6)列出当前打开的vi(若打开了多个vi)
- [ls]:列出当前vim打开的所有文件
7)切换vim文件(若打开了多个vi)
- [n] 切换vim的后一个文件
- [N]切换vim的前一个文件
8)注释
块注释:
1、vim编辑文件,进入命令模式,ctrl+v进行块选择,使用方向键调整
2、再按I进入首行插入模式,输入注释符#,按两次esc退出插入模式。最后退出保存文件
取消注释:ctrl+v进行块选择,使用方向键调整;选择要删除的注释,按下d删除
替换注释:
注释格式::起始行号,结束行号s/^/注释符/g
取消注释格式::起始行号,结束行号s/^注释符//g
注:其中的“/” 可以为任意符号
如
:3,6s/^/#/g 为3~6行添加#注释
:7,9s#^#//#g 为7~9行添加//注释