编辑器
在Linux系统中,有许多种文本编辑工具。相当于windows里的word,记事本等。常见的文件编辑器如下:
• vi 纯文本(命令行)的编辑器
• VIM 纯文本(命令行)的编辑器
• gedit 就是Windows里的记事本
• OpenOffice 就相当于MicroOffice
Vi与VIM编辑器
•VI(Visual Interface) 编辑器是Linux和Unix上最基本的文本编辑器,它可以工作在字符模式(就是纯命令行模式)下。由于不需要图形界面,使它成了效率很高的文本编辑器。尽管在Linux上也有很多图形界面的编辑器可用,但VI在系统和服务器管理中的能力,是那些图形编辑器所无法比拟的。公司很少依赖UI界面,因为占用CPU资源
•VIM(VI IMproved)是VI的一个改进版,它兼容了所有VI的所有指令。另外还添加了许多的重要特性,如:语法高亮功能, 对C语言的自动缩进等
•Vim(和Vi)一个最大的优势在于, 它最常用的命令都是简单的字符, 这比起使用复杂的控制组合键要快得多
文件的打开与新建
• vim [文件名]
• 如果文件已存在,则此文件被打开且显示文件内容
• 如果文件不存在,则vim在第一次存盘时自动新建此文件在硬盘上
Vim模式介绍
vim提供下面几种模式
• 命令模式(其它模式->ESC)
控制光标移动,删除字符,段落复制
• 编辑/插入模式(命令模式->a、i、o、A、I、O)
新增文字及修改文字
• 末行模式(命令模式-> :)
保存文件,离开vi,以及其他设置
• 可视化模式(命令模式-> v)
选取文件内容、复制、剪切
• 查询模式(命令模式-> ?、/)
查询文件中的某个关键字
命令模式(光标移动)
命令模式中,用户可输入下面的指令来移动光标
• h(←) 将光标向左移动一格
• l(→) 将光标向右移动一格
• j(↓) 将光标向下移动一格
• k(↑) 将光标向上移动一格
• 0(Home) 数字0,将光标移动到该行的行首
• $(End) 将光标移动到该行的行末
• PageUp/PageDown 上下翻屏
• H 将光标移动到该屏幕的顶端
• M 将光标移动到该屏幕的中间
• L 将光标移动到该屏幕的底端
• w或W 将光标移动到下一单词
但是w是用标点符号来分割的,W是用空格来分割的
• gg 将光标移动到文章的首行
• G 将光标移动到文章的尾行
在命令模式下可以直接删除字符
• x/<del>:删除一个字符
• nx:删除下n个字符
• dd:删除当前行 (按照回车符分割的)
• ndd:删除后n行(从光标所在的行开始算起)
• dw:删至词尾
• ndw:删除后n个词
• d$:删至行尾
• nd$:删除后n行(从光标当前处开始算起)
在命令模式下撤销操作
• u:取消上一个更动
• U:取消一行内的所有更动
• 末行模式中也有一个撤销操作
• :e! :放弃所有更动,重新编辑
编辑模式/插入模式
在Vim中可从命令模式中输入下面的指令来进入编辑模式
• i: 在光标之前插入内容
• a: 在光标之后插入内容
• o: 向下换行插入内容 (新开一行)
• I: 在光标当前行的开始部分插入内容
• A: 在光标当前行的末尾插入内容
• O: 换行插入内容(向上换行)
可视化模式
在命令模式下键入v则进入可视化操作
• 移动光标以选定要操作的字符串
• c 剪切选定块的字符串
• y 复制选定块的字符串
• 在命令模式中输入“p”指令,就可将复制或剪切的内容贴在光标所在位置的右边
*在insert状态下,用鼠标选中想要复制的内容,按一下中间滚轮可以将复制的内容粘贴到光标所在的位置
查询模式
在vim中,也支持查找操作。在命令模式中输入下面的指令就可以进入查询模式。
• /关键字 向下查询
要找/root ,需要输入//root
• ?关键字 向上查询
• 在查找到后,可以用 n 继续寻找下一个关键字段
末行模式
• 在命令模式下输入“:”进入末行模式
• :w 保存文件
• :w [文件路径] 保存当前文件到哪儿
• :q 如果未对文件做改动则退出
• :q! 放弃存储并退出
• :wq 或 :x 保存当前文件并退出
• :e 文件名/绝对路径 打开另一文件并开始编辑
• :r 文件名 在当前光标的下一行插入文件内容
比如现在的文件名为test1, 输入:r /etc/fas
,这时/etc/fas里的内容就会插入到test1文件内容中
• :r! 命令 在当前光标后插入命令执行结果
• :set nu / :set nonu显示行号/不显示行号
• :number(表示数字,不是number这个单词) 将光标定位到number行
• :[range]s/<match>/<string>/[g,c,i] 替换一个字符串
g(global全局)
s(switch替换)
c (confirm确认)
=== 基本替换 ===
将当前行第一个出现的mon替换为monday
:s/mon/monday
将当前行所有的mon替换为monday
:s/mon/monday/g
将1到3行所有的mon替换为monday
:1,3s/mon/monday/g
将开始行到最后一行所有的mon替换为monday(即替换整个文件的mon)
:1,$s/mon/monday/g
因1,$s等价于%s,也可以写成如下形式:
:%s/mon/monday/g
将所有包含pattern行的所有的mon替换为monday
:g/pattern/s/mon/monday/g
第一个g表示是在文件的所有行上执行的命令,模式pattern识别要发生替换的行