打开文件,并且定行
- vim test.rtf +10
异常处理
更改文件,强行终止vi
- test.rtf会变成.test.rtf.swp
vi test.rtf
- d会删除交换文件
3种工作模式
命令
模式:翻页、复制、粘贴末行
模式:保存退出wq(write quit)–>等价于x编辑
模式:
移动命令
行内移动
移动一格单词
w
:wordb
:back0
:行首^
:非空行首$
:行尾部
跳转行
g
:go gg 3G G:3
跳转到第三行
翻页
ctr+b
ctr+f
:forward
光标跳转
H
:headM
:middleL
:tail
段落移动
vi种是以空行
来区分段落的
{
}
括号
()、{}、[]都是成对出现的
%
: 在同一括号内快速切换
标记
写到15行,移走光标后,想回到这一行,G比较麻烦
m
:后跟一个[a-z,A-Z]标记,‘+字母
返回
不用关心标记合适删除
操作文本
选中文本
visual
v
:可视模式,从光标开始正常选择文本V
:可视行模式
,选中光标经过的整行
crtl+v
:可视块模式
,垂直方向
选中文本
全选
就可以:gg–>ctrl+v–>G–>V
撤销和恢复
u
:撤销
命令undoctrl+r
:恢复
命令
删除文本
x
:cut,删除光标所在字符
,或者选中文字d
:delte,删除移动命令dd
: 删除所在行
,可以ndd,删除多行,d0,dwD
:删除至行尾
,不包括\n
例子:
- dw
- d0
- d}
- ndd
- dnG
- d’a
复制粘贴
y
:copy,移动命令yy
:复制一行
p
:paste,5p
文本缓冲区
- dx剪切,因为vi的删除操作也会将文本放置于
文本缓冲区
,文本缓冲区仅有一个
其他软件使用ctrl+c不能粘贴,只能进入编辑模式后复制,p操作的是仅仅是文本缓冲区,不是系统粘贴板
替换命令
r
:replace,替换当前一个字符
R
:从当前字符开始替换,输入完成,按ESC退出
缩排和重复执行
缩进
可视模式
下,>
或者<
- 统一缩进,
V+移动光标
- 重复执行.,同时缩进多行时,执行一次会结束多行选中,这时候可以使用.
查找
/str
:n
–>下一个,N
–>上一个
单词快速匹配
\*
: 向后
查找当前光标所在单词\#
: 向前
查找当前光标所在单词
注意:查找过的字符会高亮显示,去除高亮可通过查找一个不存在的字符
查找并替换
末行模式下执行
记忆命令格式
:%s///g
1.全局替换
- :%s/旧文本/新文本/g
2.可视区替换
- 先选中要替换的范围,v
:s/旧文本/新文本/g
:注意没有%
3.确认替换
confirm
:%s/旧文本/新文本/gc
一个字母一个字母替换
- y:yes
- n:no
- a:all
- q:quit
- l:last,替换最后一个,并把光标移动到行首
- ^E:向下滚屏
- ^Y:向上滚屏
插入命令
- i:insert,当前字符前
- I:在行首插入
- a:append,在当前字符后面
- A:在行末添加
- o:在当前行后插入
- O:在当前行前面插入
演练1:连续输入n个重复字符
- 例如:连续***********连续10个
- 输入10–>输入i–>输入*–>esc–>
演练2:利用可视化块给多行代码增加注释
- 移动要需要增加注释的第一行,^来到行首
- crtl+v
- j,选中多行
- I,行首插入
- #,注释符
- ESC
末行命令
文本
- :w write
- :q
- :q!
- :wq
- :x,通上一个
- :%///gc
文件
- :e.,edit打开内置的文件浏览器,保证当前编辑不退出,打开另一文件
:n
文件名,新建
:w
文件名,另存为
,做备份,很方便做阶段性备份
分屏
下面可跟文件名和.,如果什么都不加,打开当前文件
:sp
,split,横向
分屏:vsp
,vertical split
切换分屏窗口
ctrl+w
,开启,然后输入下面的命令- w:windows,切换到下一个窗口
- r:reverse,互换窗口
- c:close,关闭当前窗口,但是不能关闭最后一个窗口
- q:quit,退出当前窗口
- o:关闭其他窗口
常用操作
vim --version
默认NORMAL模式
set hlsearch
交换两行
ddp
yy # yank
- u # undo
- ctrl+r # redo
- . # 重复上个改变文本操作
- N<command> : 重复某个命令N次
常用
- w: 到下一个单词的开头,W是整个部分
- e: 到下一个单词的结尾
- %: 匹配括号
- /: 查找,*和# 匹配光标所在的单词,移动光标到下一个匹配单词(*是下一个, )
- f : fh 到下一个为h的字符处
- t: th,到h前的第一个字符
- dt" : 删除所有的内容,直到遇到“
virtual模式
- vi": 会选择两个""间不好含引号的内容
- va": 同事,但是包含”“ 。all
- vi): 会选择()间内容,但是不包含()本身
- va: 同上,但是包含()本身
v, V, C+v
块操作
ctrl+v
- 注释多行,进入块操作,选中,按I,输入//,按ESC
自动补全
进入Insert模式
- 输入一个首字母后,Ctrl+p/Ctrl+n, n
- =: 自动缩进,进入v模式,按V,选中多行,按=
- J: 合并两行到同一行
分屏
:split
:vsplit
- C+w:跳转