文章目录
- 01. 编辑器 Gedit 介绍
- 02. 什么是 Vi(Vim)
- 03. vim工作模式
- 4.1 命令模式
- 4.2 编辑模式
- 4.3 末行模式
- 04. vim教程
- 05. vim基本操作
- 06. vim实用操作
- 7.1 命令模式下的操作
- 7.2 末行模式下的操作
01. 编辑器 Gedit 介绍
gedit 是一个 GNOME 桌面环境下兼容 UTF-8 的 文本编辑器。它使用 GTK+ 编写而成,因此它十分的简单易用,有良好的语法高亮,对中文支持很好,支持包括 gb2312、gbk 在内的多种 字符编码。gedit 是一个自由软件。
gedit 是 Linux 下的一个纯文本编辑器,类似 windows 下的写字板程序,在不需要特别复杂的编程环境下,作为基本的文本编辑器比较合适。但你也可以把它用来当成是一个集成开发环境 (IDE), 它会根据不同的语言高亮显现关键字和标识符。打开gedit图形界面如下:
02. 什么是 Vi(Vim)
vi (Visual interface) 编辑器是 Linux 系统中最常用的文本编辑器,vi 在 Linux 界有编辑器之神的美誉,几乎所有的 Linux 发行版中都包含 vi 程序。
vi 工作在字符模式下,不需要图形界面,非常适合远程及嵌入式工作,是效率很高的文本编辑器,尽管在 Linux 上也有很多图形界面的编辑器可用,但vi的功能是那些图形编辑器所无法比拟的。
vim 是 vi 的升级版,它不仅兼容 vi 的所有指令,而且还有一些新的特性,例如 vim 可以撤消无限次、支持关键词自动完成、可以用不同的颜色来高亮你的代码。vim 普遍被推崇为类 vi 编辑器中最好的一个。vim 键盘如下:
03. vim工作模式
vi 有三种基本工作模式: 命令模式、文本输入模式(编辑模式)、末行模式。
4.1 命令模式
任何时候,不管用户处于何种模式,只要按一下 ESC 键,即可使 vi 进入命令模式。我们在 shell 环境下输入启动 vim 命令,进入编辑器时,也是处于该模式下。
在命令模式下,用户可以输入各种合法的 vi 命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的 vi 命令,则 vi 在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是 vi 的合法命令,vi 会响铃报警。
4.2 编辑模式
在命令模式下输入插入命令 i(I)、附加命令 a(A) 、打开命令 o(O)、替换命 s(S)都可以进入文本输入模式,此时vi窗口的最后一行会显示“插入”。
在该模式下,用户输入的任何字符都被 vi 当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键ESC即可。
4.3 末行模式
末行模式下,用户可以对文件进行一些附加处理。尽管命令模式下的命令可以完成很多功能,但要执行一些如字符串查找、替换、显示行号等操作还是必须要进入末行模式的。
在命令模式下,输入冒号即可进入末行模式。此时 vi 窗口的状态行会显示出冒号,等待用户输入命令。用户输入完成后,按回车执行,之后 vi 编辑器又自动返回到命令模式下。
04. vim教程
deng@itcast:~/test$ vimtutor
05. vim基本操作
6.1 打开文件
vim filename:打开或新建文件,并将光标置于第一行行首,如果文件不存在,则会新建文件。打开不存在文件如下图所示:
6.2 编辑文件
如果通过 vi 打开一个已经存在的文件,首先进入命令模式,此时输入的任何字符都被视为命令,不能输入内容。
在命令模式输入 i,即可进入编辑模式,编辑文件内容。
6.3 保存文件
方式一:一定要先退出插入模式(按 Esc 进入命令模式),然后(小写状态下),shift + zz (按住 “shift” + 按两下“z”键),或者(大写状态下:ZZ) 即可保存退出当前文件。
方式二:先退出插入模式(按 Esc 进入命令模式);然后在命令模式下按下:(英文冒号)就进入了末行命令模式,末行命令模式可以输入单个或多个字符的命令,可用的命令非常多。在底线命令模式中,基本的命令有(已经省略了冒号):
- q:退出程序。
- q!:退出文件,对文件的修改不做保存。
- w:保存当前对文件的修改,但是不退出文件。
- w!:强制保存但是不退出文件。
- w file:保存当前的文件修改到 file 文件当中。
- wq:退出文件并保存对文件的修改。
- e!:放弃对文件的所有修改,恢复文件到上次保存的位置。
- saveas file:另存为 file。
06. vim实用操作
7.1 命令模式下的操作
1)切换到编辑模式
按键 | 功能 |
---|---|
i | 光标位置当前处插入文字 |
I | 光标所在行首插入文字 |
o(字母) | 光标下一行插入文字(新行) |
O(字母) | 光标上一行插入文字(新行) |
a | 光标位置右边插入文字 |
A | 光标所在行尾插入文字 |
s | 删除光标后边的字符,从光标当前位置插入 |
S | 删除光标所在当前行,从行首插入 |
2) 光标移动
按键 | 功能 |
---|---|
Ctrl + f | 向前滚动一个屏幕 |
Ctrl + b | 向后滚动一个屏幕 |
gg | 到文件第一行行首 |
G(大写) | 到文件最后一行行首,G必须为大写 |
mG或mgg | 到指定行,m为目标行数 |
0(数字) | 光标移到到行首(第一个字符位置) |
$ | 光标移到到行尾 |
l(小写L) | 向右移动光标 |
h | 向左移动光标 |
k | 向上移动光标 |
j | 向下移动光标 |
^ | 光标移到到行首(第一个有效字符位置) |
3)复制粘贴
按键 | 功能 |
---|---|
[n]yy | 复制从当前行开始的 n 行 |
p | 把粘贴板上的内容插入到当前行 |
4)删除
按键 | 功能 |
---|---|
[n]x | 删除光标后 n 个字符 |
[n]X | 删除光标前 n 个字符 |
D | 删除光标所在开始到此行尾的字符 |
[n]dd | 删除从当前行开始的 n 行(准确来讲,是剪切,剪切不粘贴即为删除) |
dG | 删除光标所在开始到文件尾的所有字符 |
dw | 删除光标开始位置的字,包含光标所在字符 |
d0(0为数字) | 删除光标前本行所有内容,不包含光标所在字符 |
dgg | 删除光标所在开始到文件首行第一个字符开始的所有字符 |
5)撤销恢复
按键 | 功能 |
---|---|
.(点) | 执行上一次操作 |
u | 撤销前一个命令 |
ctrl+r | 反撤销 |
100 + . | 执行上一次操作100次 |
6)保存退出
按键 | 功能 |
---|---|
ZZ(shift+z+z) | 保存退出 |
7)查找
按键 | 功能 |
---|---|
/字符串 | 从当前光标位置向下查找(n,N查找内容切换) |
?字符串 | 从当前光标位置向上查找(n,N查找内容切换) |
8)替换
按键 | 功能 |
---|---|
r | 替换当前字符 |
R | 替换当前行光标后的字符(ESC退出替换模式) |
9)可视模式
按键 | 功能 |
---|---|
v | 按字符移动,选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制 |
Shift + v | 行选(以行为单位)选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制 |
Ctrl + v | 列选 选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制 |
7.2 末行模式下的操作
1)保存退出
按键 | 功能 |
---|---|
:wq | 保存退出 |
:x(小写) | 保存退出 |
:w filename | 保存到指定文件 |
:q | 退出,如果文件修改但没有保存,会提示无法退出 |
:q! | 退出,不保存 |
all 表示所有 |
2)替换
按键 | 功能 |
---|---|
: s/abc/123/ | 光标所在行的第一个abc替换为123 |
: s/abc/123/g | 光标所在行的所有abc替换为123 |
:1,10s/abc/123/g | 将第一行至第10行之间的abc全部替换成123 |
:%s/abc/123/g | 当前文件的所有abc替换为123 |
:%s/abc/123/gc | 同上,但是每次替换需要用户确认 |
:1,$s/abc/123/g | 当前文件的所有abc替换为123 |
3)分屏
按键 | 功能 |
---|---|
:sp | 当前文件水平分屏 |
:vsp | 当前文件垂直分屏 |
: sp 文件名 | 当前文件和另一个文件水平分屏 |
: vsp 文件名 | 当前文件和另一个文件垂直分屏 |
ctrl-w-w | 在多个窗口切换光标 |
:wall/:wqall/:qall | 保存/保存退出/退出所有分屏窗口 |
vim -O a.c b.c | 垂直分屏 |
vim -o a.c b.c | 水平分屏 |
4) 其它用法(扩展)
按键 | 功能 |
---|---|
:!man 3 printf | 在vim中执行命令 (q退出) |
:r !ls -l | 将ls -l执行的结果写入当前文件中 |
:r /etc/passwd | 将/etc/passwd文件中的内容写入到当前文件中 |
:w /tmp/txt | 将当前文件内容写入到/tmp/txt文件中 |
:w! /tmp/txt | 强制将当前文件内容写入到/tmp/txt文件中 |
:1,10s/^g | 将第1行到10行行首添加// (^表示行首) //\转移字符 |
:1,10s#^#//#g | 将第1行到10行行首添加// (#可以临时代替/ 分隔) |
:%s/;/\r{\r\treturn0;\r}\r/g | 将;替换成{ return 0; } |
:1,10s#//##g | 将第1行到10行行首去掉// (#可以临时代替/ 分隔) |
5) 配置文件
局部配置文件(推荐局部配置,因为这样不会影响到其他用户)
deng@itcast:~/share/2nd$ vim ~/.vimrc
全局配置文件:
deng@itcast:~/share/2nd$ sudo vim /etc/vim/vimrc