此前编辑脚本一直使用的是nano,nano简单易用,但是功能相对较少,故在实际工作中很少使用。
Linux提供了一个非常强大的文本编辑器——VIM编辑器。
这里需要注意的是,VIM编辑器是文本编辑器,它用于处理只包含ASCII码的数据,这和windows操作系统下的文字处理软件诸如word,wps等是不同的,word等文字处理软件能处理非ASCII码编写的文件。
文本编辑器主要分为两种:
1)全屏编辑器:
a) VI—Visual Interface (可视化接口)
b) VIM—Visual Interface Improved(VI的增强版)
c) nano
2)逐行读取编辑器:sed
VIM提供模式化操作,其功能非常强大,它的基本用法为:
# vim [option] [/path/to/somewhere]
如果只输入vim而不给定路径,则编辑的文本将会保存到内存中。
一.VIM的三种模式
1)使用vim命令打开的模式是默认的模式——编辑模式。
编辑模式主要是指可以进行选择、复制、删除等操作的模式
2)如果要向文件中输入内容,则需要转换为输入模式,此时绝大多数的键盘操作都会反映成文本内容。
3)在文件末尾处进行操作,即为末行模式。所有在编辑模式下能进行的操作,在末行模式下都能进行;一些在编辑模式下不能实现的功能,末行模式也能进行,如查找替换等。
在输入模式下输入一些简单的内容,然后使用Esc 键进入末行模式,然后使用 : 键,以及wq FileName保存退出。这样就创建了一个文本文件:
二、模式转换
1. 从编辑模式 --> 输入模式
i: insert,实现在当前光标所在处转换为输入模式
a:append, 实现在当前光标所在处的字符后面转换为输入模式
o:open,实现在当前光标所在行的下方新建一个空白行并转换为输入模式
I:在当前光标所在行行首转为输入模式
A:在当前光标所在行行尾转换为输入模式
O:在当前光标光标所在行上方新建一行空白行并转换为输入模式
2.
从输入模式-->编辑模式
按下Esc键
3. 从编辑模式-->末行模式
键入 : (冒号) 即可
4.
从末行模式--> 编辑模式
按下Esc键(通常需要按下两次)
5. 从输入模式--> 末行模式
无法直接转换,需要先由输入模式转换为编辑
模式,再由编辑模式转换为末行模式。
三、实现光标的跳转(编辑模式)
1. 字符间进行跳转:
H:向左移动
L:向右移动
J:向下移动
K:向上移动
跳转键+数字键:表示向某个方向跳N个字符
2. 单词间进行跳转:
W:移动到下一个单词的词首
E:移动到下一个单词的词尾,但若光标不在当前单词的词尾,则先跳至当前单词
的词尾
B:移动到上一个单词的词首,但若光标不在当前单词的词首,则先跳至当前单词
的词首
3. 句子间跳转
):跳转至下一句
(:跳转至上一句
4. 段落间跳转
}:跳转至下一段
{:跳转至前一段
5. 行间跳转
1G 或 gg:跳转至第一行
G:跳转至最后一行
nG:跳转至第n行
6. 行内跳转
^:跳至行首的第一个非空白字符
$:跳至绝对行尾
0: 跳至绝对行首
四、关闭文件
关闭文件通常在末行模式下进行,通常有以下命令可以使用:
:w 保存
:q 退出
:wq 保存退出
:x 保存退出
:! 强行进行某操作,如 q! 表示强行退出不保存;w!表示强行保存
在编辑模式下,输入ZZ也能保存退出
五、打开文件
打开文件的基本命令为:
vim [oprions] /path/to/file
如果想要打开文件,并将光标置于特定的行,可以使用以下命令:
vim +# /path/to/file
如要在打开文件functions的同时,光标跳转至该文件的第10行,可以输入:
# vim +10 functions
Vim可以同时打开多个文件,例如再复制两个文件到当前目录里,然后使用vim命令同时打开三个文件:
# cp /etc/fstab ./
# cp /etc/inittab ./
# vim functions fstab inittab
此时当前页面显示的是第一个文件,即functions。如果要切换到下一个文件,可以在末行模式下输入next命令;如果要切换回第一个文件,可以输入first命令;如果要切换至前一个文件,可以使用prev命令;如果要切换至最后一个文件,可以使用last命令。
如果想在同一个屏幕里显示多个文件,则可以使用-o或 -O选项:
# vim -o functions fstab inittab //水平分割
# vim -O functions fstab inittab//垂直分割
按下Ctrl+W键松开后,再按上下箭头键,可在上下文件中切换;按下左右箭头键,可在左右文件中切换。在末行模式下输入q,则退出光标所在的文件;输入qall则退出所有文件。
转载于:https://blog.51cto.com/wuyelan/1427508