目录
vim编辑器
1、vim 编辑器的工作模式
2、vim 的基本操作
1)、进入 vim 编辑器
2)、保存和退出 vim
3、普通模式下的操作
1)、光标移动
2)、复制删除与粘贴
3)、撤销与重做
编辑模式下的操作
命令模式下的操作
1)、搜索与替换
2)、高亮显示和取消高亮
3)、显示和取消行号
4)、保存和退出
5)、在 vim 中运行 shell 命令
其他常用功能
1)、编辑多个文件
2)、区块选择
3)、多窗口显示
gedit 编辑器
Linux 操作系统中很多文本编辑器,如 vi / vim 、emacs 、xemacs 、kedit 、gedit 、e3 等,各编辑器各有其优缺点。这里主要介绍适用范围最为广泛的 vim 编辑器。vim 代表 vi improved ,即 vi 编辑器的升级版,它不仅兼容 vi 编辑器的所有指令,而且在 vi 编辑器的基础上增加了颜色显示,便于程序开发人员编写程序,同时 vim 也加入了很多额外的功能,如支持多文本编辑、多窗口显示等。vim 可以运行于 Windows 、Mac、Unix 和 Linux 等多种操作系统平台,利用 vim 可以很方便地编辑文本和开发应用程序。
vim 共分为三种模式,分别是普通模式、编辑模式和命令模式。这三种模式的作用分别是:普通模式:使用 vim 打开一个文档文件时,首先进入的就是普通模式,在这个模式中,用户可以使用方向键(上下左右)来移动光标,可以使用 “删除字符” 或 “删除整行” 来处理文件内容,也可以复制和粘贴用户的文件数据;编辑模式:在普通模式中可以进行删除、复制、粘贴等操作,但是无法向文档中输入字符。此时按下字母 “ i ”、“ I ”、“ o ”、“ O ”、“ a ”、“ A ”、“ r ” 或 “ R ” ,编辑器将从普通模式转入编辑模式,同时在屏幕下方会出现 “INSERT” 或 “REPLACE” 的字样,此时就可以向文档中输入字符,在整个输入过程结束后,按 “ Esc ” 键即可返回普通模式,此时光标将处于刚才输入的最后一个字符的位置;命令模式:在普通模式中,输入 “ : ”、“ / ” 或 “ ? ” ,编辑器将从普通模式转入命令模式,此时屏幕左下角将出现 “ : ”、“ / ” 或 “ ? ” 的标志。在命令模式中,用户可以完成搜索、替换、高亮显示、行号显示、保存、退出甚至执行 shell 指令等操作。
在系统终端中输入 vim 及文件名后,就进入 vim 的普通模式,如果系统内还没有该文件,就意味着先创建文件然后再进行编辑;如果系统中存在该文件,就意味着直接去编辑文件。
在普通模式下,按冒号 “ : ”,可以进入命令模式,此时屏幕左下角显示冒号,在冒号后输入 “ w ”并回车,则把文件保存;输入 “ wq ” 并回车,表示存盘并退出 vim ;输入“ q ” 并回车,不存盘退出;输入 “ q! ” 并回车,表示不存盘强制退出 vim ,此方法可以强制修改只读文件。
在普通模式下,可以使用一些字符命令来移动光标位置,有的字符在大小写状态下的功能也是不同的,一般在普通模式下移动光标都是用方向键进行移动,至于通过利用其他字符来达到相关操作目的的我在这就不详细介绍了,我认为没那个必要,方向键简单方便挺好的,其他那些移动命令有兴趣的见 vi / vim 光标移动命令 。
在 vim 编辑器中,与 “复制-粘贴” 等价的处理过程是先用 “yy” 命令复制当前行,再用 “p” 或 “P” 命令实现粘贴;与 “剪切-粘贴” 等价的处理过程是先用 “dd” 命令删除当前行(删除前已复制过),再用 “p” 或 “P” 命令实现粘贴。如果在 “yy” 或 “dd” 命令之前再输入适当的数字,还可以实现若干行的复制和删除操作。详细命令如下:
x : 删除光标所在位置的一个字符,并把该字符放在剪切板中。
nx : 删除光标所在位置的后面 n 个字符,并把这些字符放在粘贴板中。
X : 删除光标所在位置的前面一个字符,并把该字符放在剪切板中。
nX : 删除光标所在位置的前面 n 个字符,并把这些字符放在粘贴板中。
yy : 复制光标所在行,并把该行内容存放在剪切板中。
nyy :复制光标所在行开始的 n 行,并把这些行的内容存放在剪切板中。
dd : 删除光标所在行,并把该行内容存放在剪切板中。
ndd : 删除光标所在行开始的 n 行,并把这些行的内容存放在剪切板中。
p : 把剪切板中的文本数据复制到光标所在行的下面。
P :把剪切板中的文本数据复制到光标所在行的上面。
编辑文本时,有时候需要放弃某些编辑操作,可以使用撤销命令来撤销先前执行的编辑命令,使 vim 回到处理前的状态,详细命令如下:
u : 撤销命令,使用 “u” 命令可以撤销上一步执行的编辑命令。
Ctrl + r : 重做命令,把 “u” 命令撤销的编辑命令重做。例如在用 “u” 命令之后发现刚才撤销的命令应该执行,则可用 “Ctrl + r ”重做该命令。
vim 在编辑模式下才能输入字符,要进入编辑模式,必须在普通模式下输入相应的命令,进入编辑模式后,屏幕左下角会显示 “INSERT” 或 “REPLACE” 的字样。输入结束后,需要按 “Esc” 键退出编辑模式。常用的进入编辑模式命令一般用 “ i ”,也是方便简单,当然还有其他进入编辑模式的命令,我在这就不啰嗦了,详见 vim : 编辑模式与命令模式 。
在普通模式下,输入 “:”、“ / ” 或 “ ? ” ,编辑器将从普通模式转入命令模式,在命令模式中,用户可以完成搜索、替换、高亮显示、行号显示、保存、退出甚至执行 shell 指令等操作。
搜索与替换常用的命令如下:
/word : 向下搜索,即向光标所在位置之后查找名称为 “word” 的字符串。在普通模式下输入 “ / ” 命令进入命令模式,再输入需要查询的字符串 “word” 即可在文档中搜索位于其位置之后的字符串。
?word : 向上搜索,即向光标所在位置之前查找名称为 “word” 的字符串。在普通模式下输入 “ / ” 命令进入命令模式,再输入需要查询的字符串 “word” 即可在文档中搜索位于其位置之前的字符串。
n : 重复前一个操作。
N : 与 n 命令相反,反向进行前一个操作。例如刚进行 “/word” 向下搜索,则按下 N 键后,会执行 “?word”向上搜索。
:s /word1/word2/g : 在光标当前行中,把字符串 “word1” 用 “word2” 替换。注意 “ s ” 和 “ / ” 之间有空格。
:s /word1/word2/gc : 在光标当前行中,把字符串 “word1” 用 “word2” 替换,并在替换前提示用户确认是否要替换。
:%s /word1/word2/g : 将文档中所有字符串 “word1” 用 “word2” 替换。
:%s /word1/word2/gc : 将文档中所有字符串 “word1” 用 “word2” 替换,并在替换前提示用户确认是否要替换。
:n1,n2 s /word1/word2/g : “n1” 和 “n2” 是数字,在 “n1” 和 “n2” 行之间寻找字符串 “word1” ,并将该字符串用 “word2” 替换,书写时注意逗号和空格的存在。
:n1,n2 s /word1/word2/gc : 在 “n1” 和 “n2” 行之间寻找字符串 “word1” ,并将该字符串用 “word2” 替换,在替换之前提示用户是否确认要替换。
:set ic : 搜索时忽略大小写。
:set noic : 取消在搜索时忽略大小写。
vim 编辑器对语法会进行高亮显示,而默认情况下 vim 编辑器自动高亮显示。如果不需要高亮显示语法,可以取消此功能,修改 /etc/vimrc 文件,将其中的 “syntax on” 删除或者注释掉(#),然后保存文件即可,此时查找时就可用到上面搜索命令快速定位。
若文档内容过多,无法很快知道所需内容在哪一行,此时可以用显示行号命令辅助,其命令如下:
: set nu : 在文件中的每一行前面列出行号。
: set nonu : 取消在文件中每一行前面列出行号。
前面已提到用 “ :w ”、“ :wq ”、“ :q ” 、 “ :q! ” 等命令来进行 vim 编辑器的保存和退出,这里再介绍两个在普通模式下的命令,不过貌似不经常能用到:1)、在普通模式下直接输入大写字母 “ ZZ ” ,其功能同 “ :wq ” 存盘退出;2)、在普通模式下直接输入大写字母 “ ZQ ” ,其功能同 “ :q! ” 不保存退出。
在 vim 编辑文档过程中可能需要运行命令,如查看当前位置或系统时间等,在 vim 中可以直接运行 shell 命令,主要有三种方法:
:!command : 在普通模式下输入 “ :! ” ,在后面输入所要执行的命令即可。比如按 “Esc” 退回普通模式下,然后输入 “ :!pwd ” 命令就可看到文档当前所处的目录。
:r!command : 用法同上,该命令是执行所需命令后把命令结果插入当前行的下一行。
:sh : 保留 vim 的状态,并切换到字符模式,此时可以正常输入各种 shell 命令,输入结束后可用 “exit” 或 “Ctrl + d” 回到 vim 编辑器中,继续编辑刚才的文档。
vim 允许用户同时编辑多个文件。例如若想在编辑 file1 文件的同时,也编辑 file2 文件,可以使用命令 vim file1 file2 :此时,vim 首先显示的是第一个文件 file1 ,因此可以先编辑 file1 文件,编辑结束后输入 “ :w ” 命令保存,接着若要编辑 file2 文件,再输入 “:n file2” 命令,编辑结束后同样用 “ :w ” 保存 file2 文件。所有的编辑结束后,可以使用 “ :q ” 命令,退出 vim 编辑器。
在编辑过程中,可以随时用 “ :n filename ” 命令去转入到编辑指定的文件,如 “ :n file1 ” 可转入编辑文件 “file1” , “ :n file2 ” 可转入编辑文件 “ file2 ” ,转换文件时,若刚才处理的文件未保存,vim 将提示保存或者强制转换文件,若强制转换文件,则刚才未保存的修改将丢失。
有时需要对文档中的某些区块进行操作,如对文档中第 1~13 行中的第 2~10 列进行操作,这就需要用到区块选择和操作,其一些命令如下:
v : 字符选择,将光标经过的地方反白选择。
V : 行选择,将光标经过的行反白选择。
Ctrl + v : 区块选择,可反白选择所需要的矩形字符块。
y : 将反白的地方复制。
d : 将反白的地方删除。
例:需要删除第 1~3 行中的第 2~5 个字符,则可以进行操作:先将光标移动到第 1 行的第 2 个字符,按 “Ctrl + v ” 键,此时屏幕左下角显示 “ visual block ” 或 “ 可视块 ” 的字样,然后移动方向键到第 3 行第 5 个字符,则从第 1~3 行中的第 2~5 个字符所处的区块高亮显示,表示已被选中,此时按 “d” 键就可以把所选的区块删除。
像这区块操作,一般是涉及范围比较大的时候,这种方法比较好用,否则还不如直接对文档进行插入操作,然后在其中进行删除来的方便快捷。
虽然 vim 支持编辑多个文件,但是需要不断切换文件,不能在一个屏幕上同时显示这些文件的内容,当需要对多个文件的内容作对比时显得极不方便,因此 vim 还提供了多窗口显示的功能来解决这个问题。
多窗口显示指的是可以在同一屏幕上同时打开多个文件,也可以重复打开同一个文件,多窗口状态下常用的命令如下:
:sp [filename] : 开启一个新窗口,如果加上 filename ,表示在新窗口打开名为 “filename” 的文档;如果不加 filename,则新窗口将再次打开当前文档。
Ctrl + 6 : 下一个文件。
:bn : 下一个文件。
:bp : 上一个文件。
:split : 左右分隔窗格。
:vsplit : 上下分隔窗格。
Ctrl + w + j : 移动光标到下面的窗口。
Ctrl + w + k : 移动光标到上面的窗口。
:wq : 保存退出光标所在的窗口。使用 “Ctrl + w + j ” 或 “Ctrl + w + k” 移动到需要关闭的窗口,然后输入 “ :wq ” 并回车即可保存退出。
也是编辑器的一种,不过不是很常用,我在这里随便提一下。
gedit 编辑器打开文件是在一个新的窗口中对文件的打开,在视觉习惯上是比用 vim 要舒服一些,只不过 gedit 编辑器在修改文件时需要取得 root 权限,在这点上要比 vim 稍显复杂一些。用法同 vim 一样,gedit filename 直接打开。详细见:gedit 百度百科 。