一 最基本命令
1、三种模式:编辑模式、插入模式、命令模式。
2、简单命令
vi [filename] 打开、新建文件
i、a、o、I、A、O 从编辑模式进入插入模式
[ESC] 退出插入模式,进入编辑模式
:w 保存文件
:q 退出文件
:q! 不保存,强制退出
:wq 保存,退出
:ZZ 保存,退出
:e! 不保存,返回到初始文件
二.简单编辑命令
1
、文本编辑和操作命令
| |
编辑行为
|
命令
|
在当前位置插入文本
在行首插入文本
|
i
I
|
在当前位置追加文本
在行尾追加文本
|
a
A
|
在光标所在行的下面新建一行
在光标所在行的上面新建一行
|
o
O
|
删除行并替换文本
|
S
|
使用新文本覆盖现有文本
|
R
|
合并当前行和下一行
|
J
|
转换大小写
|
~
|
重复上次操作
|
.
|
取消上次操作
|
u
|
恢复行到初始状态
|
U
|
2
、编辑命令
| |||
文本目标
|
修改
|
删除
|
复制
|
1
个单词
|
cw
|
dw
|
yw
|
2
个单词
|
2cw
或者
c2w
|
2dw
或者
d2w
|
2yw
或者
y2w
|
向后
3
个单词
|
3cb
或者
c3b
|
3db
或者
d3b
|
3yb
或者
y3b
|
1
行
|
cc
|
dd
|
yy
或者
Y
|
到行首
|
c0
|
d0
|
y0
|
到行尾
|
c$
或者
C
|
d$
或者
D
|
y$
|
单个字符
|
r
|
x
或者
X
|
y1
或者
yh
|
5
个字符
|
5s
|
5x
|
5y1
|
3
、移动命令
| |
移动
|
命令
|
←↓↑→
|
h
,
j
,
k
,
l
|
到下一行的首字符
|
+
|
道上一行的首字符
|
-
|
到单词尾部
|
e
或者
E
|
按单词前移
|
w
或者
W
|
按单词后移
|
b
或者
B
|
到行首
|
0
|
到行尾
|
1、在$HOME下新建.vimrc
#touch .vimrc
2、打开
#vim .vimrc
3、编辑
set number
set smartindent
set showmatch
set shiftwidth=4
“设置当行之间交错时使用4个空格
4、完成,现在你可以非常方便的编写你的c、c++程序了。以上是我的简单的设置,大家有什么好的设置尽管告诉我哦,我会很感激的!
向前滚动一屏
|
Ctrl + f
|
向后滚动一屏
|
Ctrl + b
|
向前滚动半屏
|
Ctrl + d
|
向后滚动半屏
|
Ctrl + u
|
向前滚动一行
|
Ctrl + e
|
向后滚动一行
|
Ctrl + y
|
把当前行移动到屏幕顶部并滚动
|
z
|
把当前行移动到屏幕中部并滚动
|
z.
|
把当前行移动到屏幕底部并滚动
|
z-
|
刷新屏幕
|
Ctrl + l
|
移动到屏幕首行
|
H
|
移动到屏幕中间行
|
M
|
移动到屏幕末行
|
L
|
移动到下一行的首字母
|
return
|
移动到下一行的首字母
|
+
|
移动到上一行的首字母
|
-
|
移动到当前行的第n列
|
n|
|
移动到词尾
|
e
|
移动到当前句子的开始
|
(
|
移动到下一句的开始
|
)
|
移动到当前段的开始
|
{
|
移动到下一段的开始
|
}
|
移动到当前节的开始
|
[[
|
移动到下一节的开始
|
]]
|
向前授索模式
|
/pattern
|
向后授索模式
|
?pattern
|
重复上次授索
|
n
|
反方向重复上次授索
|
N
|
向前重复上次授索
|
/
|
向后重复上次授索
|
?
|
移动到第n行
|
nG
|
移动到文件的尾部
|
G
|
显示当前行
|
Ctrl+g
|
1、启动vi时的选项:
(1)、vi file 打开文件,新建文件
(2)、vi +n file 打开文件到第10行
(3)、vi + file 打开文件到最后一行
(4)、vi /patten file 打开文件到模式首次出现的位置
2、只读方式
(1)、vi -R file (或者view file)以只读方式打开
(2)、w! 强制写保存
(3)、wq!强制写保存并退出
3、恢复缓存区(用于系统崩溃)
(1)、ex -r 将得到系统所有以保存的文件列表
(2)、vi -r 将得到系统所有以保存的文件列表
(3)、vi -r file 恢复文件file的已编辑缓存区
4、利用缓存区
进行编辑时,上一次的删除(d,x),复制(y)都将保存在缓存区中。
vi把前9次删除操作保存在编号缓存区中,可以通过访问编号缓存区中的任何一个来恢复前9次操作中的任何一个。(小型的删除操作将不会保存)。
实例讲解:
(1)、"dyy 复制当前行到d缓冲区
(2)、"a7yy 复制接下来的7行到a缓冲区中
(3)、"dP 粘贴d缓冲区中的内容到光标前
(4)、"dp 粘贴d缓冲区中的内容到光标后
(5)、"a5dd 删除接下来的5行到a缓冲区中
(6)、"zd) 删除从光标到当前句尾之间的文本,并将其保存在z缓冲区中
(7)、"Zy) 把下一个句子添加到z缓冲区中(缓冲区大写(如Z)表示追加到(z)缓冲区中)
5、标记自己的位置
(1)、mx 用x(x可为任何字符)标记当前位置
(2)、'x (单引号)移动光标到x所标记的行的首字符
(3)、`x (反引号)移动光标到x所标记的字符
六 全局替换
1、替换命令
(1)、:s/old/new/ 把当前行中模式old的第一次出现替换为new
(2)、:s/old/new/g 把当前行中的每一个old替换为new
(3)、:50,100s/old/new/g 把第50-100行之间的old替换为new
(4)、:1,$s/old/new/g 把整个文本中的old替换为new
(5)、:%s/old/new/g 把整个文本中的old替换为new
(6)、:1,$s/old/new/gc 替换前要进行确认(想替换输入 y ,不想替换直接 回车)
2、简单组合
利用vi的n(重复上次授索)和点(.)(重复上次命令),只修改那些不正确的。
修改必要的hao为jun
/hao 授索hao
cwjun 修改为jun
n 重复授索,跳过一次修改
n 重复授索
1、常用收集如下:(vi set)
set autoindent
在插入模式下,对每行按与上行同样的标准进行缩进,与shiftwidth选项结合使用
set list
把制表符显示为^I ,用$标示行尾(使用list分辨尾部的字符是tab还是空格)
set number
显示行号
set readonly
文件只读,除非使用!可写
set shiftwidth
反向制表符中的空格数目
set showmatch
在vi中输入),}时,光标会暂时的回到相匹配的(,{ (如果没有相匹配的就发出错误信息的铃声),编程时很有用
set tabstop
指定tab缩进的字符数目
set wrapscan
授索在文件的两端绕回
2、vim set 在vi的基础上增加了如下(常用):
set smartindent
set cindent
以上两行都是编程用的c自动缩进
3、set 设置可以在命令行输入,也可以写在$HOME下的.exrc (如果是vi)或者.vimrc(如果是vim)中。写进去很方便的。