vim文本编辑器使用
vim是从 vi 发展出来的一个文本编辑器 。代码补完、编译及错误跳转等方便编程的功能特别丰富。
Vim有三种基本工作模式:
- 命令模式
- 文本输入模式
- 末行模式
命令模式(vi的入口)
任何模式,只要按一下ESC键,即可使Vi进入命令模式;我们在shell环境下输入启动Vi命令,进入编辑器时,也是处于该模式下。在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。
文本输入模式(编辑文字)
在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键ESC即可。
末行模式(vi的出口)
在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在屏幕的最后一行显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。
1 打开和新建文件
在终端中输入 vi 文件名
即可
vi 文件名如果文件已经存在,会直接打开该文件;如果文件不存在,会新建一个文件。
打开文件并且定位行
vi 文件名 +行数
提示:如果只带上 + 而不指定行号,会直接定位到文件末尾
2 保存并退出(末行模式)
(1)末行模式常用命令:
w
保存
q
退出,如果没有保存,不允许退出
q!
强行退出,不保存退出
wq
保存并退出
x
保存并退出
(2)末行命令扩展
:e.
会打开内置的文件浏览器,浏览要当前目录下的文件
:n 文件名
新建文件
:w 文件名
另存为,但是仍然编辑当前文件,并不会切换文件
注意:
切换文件之前,必须保证当前这个文件已经被保存!
3 进入插入模式
i
: 插入光标前一个字符
I
: 插入行首
a
: 插入光标后一个字符
A
: 插入行未
o
: 向下新开一行,插入行首
O
: 向上新开一行,插入行首
4 进入命令模式
ESC
:从插入模式或末行模式进入命令模式.
5 在命令模式下移动光标
(1)方向移动
h
: 左移
j
: 下移
k
: 上移
l
: 右移
(2) 行内移动
w
: 向后一次移动一个字
b
: 向前一次移动一个字
0
:行首
^
: 行首(第一个不是空白字符的位置)
$
: 行尾
(3) 行数移动
gg
文件顶部
G
文件末尾
数字gg
移动到数字对应行数
数字G
移动到数字对应行数
:数字
移动到数字对应行数
{
: 按段移动,上移(vi 中使用空行来区分段落)
}
: 按段移动,下移
(4) 屏幕移动
Ctrl + b
向上翻页
Ctrl + f
向下翻页
Ctr-d
: 向下翻半屏
Ctr-u
: 向上翻半屏
H
屏幕顶部
M
屏幕中间
L
屏幕底部
(5) 括号切换
%
括号匹配及切换 ,在括号之间来回切换
6 可视模式
v
: 按字符移动,选中文本
V
: 按行移动. 选中文本可视模式可以配合 d, y, >>, << 实现对文本块的删除,复制,左右移动.
Ctrl + v
可视块模式,垂直方向选中文本。
注意:
- 可视模式下,可以和 移动命令连用,例如:ggVG 能够选中所有内容。
- 按 ESC 可以放弃选中,返回到 命令模式
7 标记
mx
添加标记 x
'x
直接定位到标记 x 所在位置
注意:
- 标记名称可以是 a~z 或者 A~Z 之间的任意 一个 字母。
- 添加了标记的行如果被删除,标记同时被删除。
- 如果在其他行添加了相同名称的标记,之前添加的标记也会被替换掉。
8 删除命令
x
: 删除光标后一个字符,或者选中的文字
X
: 删除光标前一个字符,相当于 Backspace
dd
: 删除光标所在行
D
: 删除至行尾
d(移动命令)
: 删除移动命令对应的内容
示例:
dw
# 从光标位置删除到单词末尾
d0
# 从光标位置删除到一行的起始位置
d}
# 从光标位置删除到段落结尾
ndd
# 从光标位置向下连续删除n行
d代码行G
# 从光标所在行删除到指定代码行
d'a
# 从光标所在行删除到标记a之间的所有代码
注意:
如果使用可视模式已经选中了一段文本,那么无论使用d还是 x,都可以删除选中文本。
9 撤销命令
u: 撤销上次命令
Ctr-r: 恢复撤销的命令
10 缩排和重复执行
>>
向右增加缩进
<<
向左减少缩进
.
重复上次命令
注意:
在 可视模式 下,缩排命令只需要使用 一个 > 或者 <
11 复制粘贴
vi 中提供有一个 被复制文本的缓冲区复制 命令会将选中的文字保存在缓冲区,删除命令删除的文字也会被保存在缓冲区。
yy
: 复制当前行,nyy
复制 n 行
p
: 在光标所在位置向下新开辟一行,粘贴
y(移动命令)
复制
12 替换操作
使用替换命令可以不用进入 编辑模式,来完成对文件的轻量级修改。
r
: 替换当前字符
R
: 替换当前行光标后的字符
注意:
替换完成后,按下 ESC 可以回到 命令模式。
13 查找命令
/’字符串’
: 字符串查找
n
: 下一个
N
:上一个
14 单词快速匹配
在开发中,通过单词快速匹配,可以快速看到这个单词在其他什么位置使用过。
*
向后查找当前光标所在单词
#
向前查找当前光标所在单词
15 替换命令:
:%s/旧文本/新文本/g
:格式比较固定
1) 全局替换
:%s/abc/123/g
末行模式下,将当前文件中的所有abc替换成123
2)局部替换
:1, 10s/abc/123/g
末行模式下,将第一行至第10行之间的abc替换成123
3) 可视区域替换
先选中要替换文字的范围:s/旧文本/新文本/g
4)确认替换
:%s/旧文本/新文本/gc
如果把末尾的 g 改成 gc 在替换的时候,会有提示!推荐使用!
y
替换n
不替换a
替换所有q
退出替换l
最后一个,并把光标移动到行首^E
向下滚屏^Y
向上滚屏
16 vim里执行 shell 下命令
末行模式里输入!,后面跟命令
查找 vi 的运行文件
$ which vi $ ls -l /usr/bin/vi $ ls -l /etc/alternatives/vi $ ls -l /usr/bin/vim.basic
17 异常处理
如果 vi 异常退出,在磁盘上可能会保存有交换文件。下次再使用 vi 编辑该文件时,按下字母 d
删除交换文件即可。
18 常用技巧
(1)编辑命令和数字连用
在开发中,可能会遇到连续输入 N 个同样的字符的情形。
例如:********** 连续 10 个星号
要实现这个效果可以在命令模式下:
1.输入 10,表示要重复 10 次
2.输入 i 进入 编辑模式
3.输入 * 也就是重复的文字
4.按下 ESC 返回到 命令模式,返回之后 vi 就会把第 2、3 两步的操作重复 10 次
注意:
正常开发时,在 进入编辑模式之前,不要按数字.
(2)利用可视块给多行代码增加注释
在开发中,可能会遇到一次性给多行代码增加注释的情况,在 java中,要给代码增加注释,可以在代码前增加一个 //
。
要实现这个效果可以在命令模式下:
1.移动到要添加注释的 第 1 行代码,按 ^ 来到行首
2.按 CTRL + v 进入 可视块 模式
3.使用 j 向下连续选中要添加的代码行
4.输入 I 进入 编辑模式,并在行首插入.
注意:一定要使用 I,可视模式下只能用I进入编辑模式
5.输入// 也就是注释符号
6.按下 ESC 返回到 命令模式,返回之后 vi 会在之前选中的每一行代码 前 插入 //
19 分屏命令
使用 分屏命令,可以 同时编辑和查看多个文件。图形界面下好用。
:sp [文件名]
横向增加分屏
:vsp [文件名]
纵向增加分屏
1) 切换分屏窗口
切换分屏窗口都是基于 CTRL + W 这个快捷键的
w
切换到下一个窗口
r
互换窗口
c
关闭当前窗口,但是不能关闭最后一个窗口
q
退出当前窗口,如果是最后一个窗口,则关闭 vi
o
关闭其他窗口
2) 调整窗口大小
+
增加窗口高度
-
减少窗口高度
>
增加窗口宽
<
减少窗口宽度
=
等分窗口大小
调整窗口宽高的命令可以和数字连用,例如:5 CTRL + W +
连续 5 次增加高度。