Linux的文件查看/编辑命令

vi 命令介绍
vi 是Visual Interface 的简称它在Linux 上的地位就仿佛Edit 程序在DOS上一样它可以执行输出删除查找替换块操作等众多文本操作而且用户可以根据自己的需要对其进行定制这是其他编辑程序所没有的。

命令行模式:
任何时候 不管用户处于何种模式只要按一下ESC 键即可使vi 进入命令行模式当在shell 环境下输入vi 命令启动vi 编辑器时也是处于该模式下。在该模式下 用户可以输入各种合法的vi 命令用于管理自己的文档此时从键盘上输入的任何字符都被当作编辑命令来解释若输入的字符是合法的vi 命令则vi 在接受用户命令之后完成相应的动作但需注意的是所输入
的命令并不在屏幕上显示出来若输入的字符不是vi 的合法命令vi 会响铃报警。

文本输入模式:

在命令模式下输入插入命令 i 附加命令a 打开命令 o 修改命令c 取代命令r 或替换命令s 都可以进入文本输入模式在该模式下用户输入的任何字符都被vi 当做文件内容保存起来并将其显示在屏幕上在文本输入过程中若想回到命令模式下按ESC 键即可。

末行模式:
在命令模式下用户按: 键即可进入末行模式下此时Vi 会在显示窗口的最后一行通常也是屏幕的最后一行显示一个: 作为末行模式的提示符等待用户输入命令多数文件管理命令都是在此模式下执行的如把编辑缓冲区的内容写到文件中等末行命令执行完后vi 自动回到命令模式若在末行模式下输入命令过程中改变了主意 可按ESC 键或用退格键将输入的命令全部删除之后再按一下退格键即可使vi 回到命令模式下。

vi 的进入与退出

在 shell 模式下键入vi 及需要编辑的文件名即可进入vi 例如
vi example.txt
即可编辑 example.txt 文件如果该文件存在则编辑界面中会显示该文件的内容并将光标定位在文件的第一行如果文件不存在则编辑界面中无任何内容如果需要在进入vi 编辑界面后将光标置于文件的第n 行则在vi命令后面加上+n 参数即可例如需要从example.txt 文件的第5 行开始显示则使用如下命令
vi +5 example.txt
退出 vi 时需要在末行模式中输入退出命令q 如果在文本输入模式下
首先按ESC 键进入命令模式然后输入: 进入末行模式在末行模式
下可使用如下退出命令
:q 直接退出 如果在文本输入模式下修改了文档内容则不能退出
:wq 保存后退出
:x 同 wq
:q! 不保存内容 强制退出

vi 中显示行号

在末行模式下 输入如下命令
set number
可使 vi 在编辑界面中显示行号
此外 在末行模式下可使用如下nu 命令number 的简写来显示光标
所在行的行号及该行的内容

光标移动操作

在文本输入模式下 可直接使用键盘上的四个方向键移动光标在命令模式下有很多移动光标的方法不但可以使用四个方向键来移动光标还可以用h j k l 这四个键代替四个方向键来移动光标这样可以避免由于不同机器上的不同键盘定义所带来的矛盾而且使用熟练后可以手不离开字母键盘位置就能完成所有操作从而提高工作效率。
以下命令均在命令行模式下完成光标移动
h 光标左移 如果在按h 命令前输入数字n 则光标左移n 个字符
l 光标右移 如果在按l 命令前输入数字n 则光标右移n 个字符
j 光标上移 如果在按j 命令前输入数字n 则光标上移n 个字符
k 光标下移 如果在按k 命令前输入数字n 则光标xia 移n 个字符
0 零光标移到行首
$ 光标移到行尾
H 光标移到屏幕上显示的第一行 并不一定是文件头
L 光标移到屏幕上显示的最后一行 并不一定是文件尾
M 光标移到屏幕的中间一行
nG 光标移到第 n 行
w或W 将光标右移至下一个单词的词首
e 或E 如果光标起始位置处于单词内即非单词尾处则该命令将把光标移到本单词词尾如果光标起始位置处于单词尾则该命令将把光标移动到下一个单词的词尾

文本插入操作

在命令模式下 用户输入的任何字符都被vi 当作命令加以解释执行如果用户要将输入的字符当作是文本内容时则首先应将vi 的工作模式从命令模式切换到文本输入模式切换的方式是使用下面的命令
1. 插入Insert 命令
vi 提供了两个插入命令i 和I
1 . i 命令插入文本从光标所在位置前开始 并且插入过程中可以使用
<Backspace>键删除错误的输入此时vi 处于插入状态屏幕最下行显示
--INSERT-- 插入字样
2 . I 命令该命令是将光标移到当前行的行首 然后在其前插入文本
2. 附加append 命令
vi 提供了两个附加插入命令a 和A
1 . a 命令该命令用于在光标当前所在位置之后追加新文本 新输入的文本放在光标之后在光标后的原文本将相应地向后移动光标可在一行的任何位置
2 . A 命令该命令与 a 命令不同的是A 命令将把光标挪到所在行的行尾从那里开始插入新文本当输入A 命令后光标自动移到该行的行尾
a 和A 命令是把文本插入到行尾的唯一方法

3. 打开open 命令
不论是 Insert 命令也好还是append 命令也好所插入的内容都是从当前行中的某个位置开始的若我们希望在某行之前或某行之后插入一些新行则应使用open 命令
vi 提供了两个打开命令o 和O
1 . o 命令该命令将在光标所在行的下面新开一行 并将光标置于该行的行首等待输入文本要注意当使用<Backspace>删除字符时只能删除从插入模式开始的位置以后的字符对于以前的字符不起作用
2 . O 命令和 o 命令相反O 命令是在光标所在行的上面插入一行并将光标置于该行的行首等待输入文本

文本修改操作

1. 文本删除/移动
在编辑文本时 经常需要删除一些不需要的文本我们可以用<Backspace>键将输错或不需要的文本删除但此时有一个限制就是当删到行头之后再想删上面那行的内容是不可能的
在命令模式下 vi 提供了许多删除命令这些命令大多是以d 开头的常用的有
1 . 删除单个字符
x 删除光标处的字符 若在x 之前加上一个数字n 则删除从光标所在位置开始向右的n 个字符
X 删除光标前面的那个字符若在X之前加上一个数字n 则删除从光标前面那个字符开始向左的n 个字符显然这两个命令是删除少量字符的快捷方法
2 . 删除多个字符
dd 删除光标所在的整行 在dd 前可加上一个数字n 表示删除当前行及其后n-1 行的内容
D 或d$ 两命令功能一样 都是删除从光标所在处开始到行尾的内容
d0 删除从光标前一个字符开始到行首的内容
dw 删除一个单词 若光标处在某个词的中间则从光标所在位置开始删至词尾同dd 命令一样可在dw之前加一个数字n 表示删除n 个指定的单词
如果用户不小心进行了误删除操作也不要紧vi 提供了恢复误操作的命令并且可以将恢复的内容移动放在文本的任何地方恢复命令用np 其中n 为需要恢复的次数例如使用dd 命令删除了一行内容然后使用2p命令则被删除的内容会被重新插入两遍通过 dd 命令及p 命令的结合使用可以很方便的实现文本行的移动操作。

2. 文本复制命令
yy 复制光标所在的整行 在yy 前可加上一个数字n 表示复制当前行及其后n-1 行的内容
文本行复制后 通过使用上面介绍的p 命令可以将文本行粘贴到任何地方
dd yy 及p 命令在vi 中的作用类似于Windows 中图形编辑程序的剪切复制及粘贴命令

文本搜索与替换操作

在进行文本编辑的时候 您可以需要搜索或定位特定的单词或单词的一部分vi 编辑器有向前或向后搜索指定模式的功能/ 是vi 编辑器的模式搜索命令键入/ 后屏幕的底部会出现一行同时一个斜扛会出现在底行的行首上且光标被放置在斜扛之后此时您可以在光标位置键入你需要搜索的模式输入完成并按下ENTER键后编辑器将开始从光标所在的位置起向文件尾部搜索你键入的模式如果输入的模式被找到光标将停留在找到的模式上在找到一个匹配的模式后如果您还需要搜索下一个匹配的模式使用命令n 即可如果需要找到上一个匹配的模式则使用N 命令即可此外 ? 命令也是模式搜索命令与/ 的区别在于/ 是从光标当前所在位置向文件尾部搜索而? 命令则是由光标当前所在位置向文件头部搜索文本替换操作需要使用末行模式进行操作 即所有文本替换操作命令均以:开头
文本替换命令的格式为
:s/text1/text2 用于将光标所在段落搜索到的第一个 text1 替换为text2
:s/text1/text2/g 用于将光标所在段落的所有 text1 替换为text2
:m,ns/text1/text2/g 用于将从 m行开始至n 行结束的所有搜索到的text1替换为text2 其中可以使用$表示末行即1,$ 表示替换文档中的所有符合条件的字符

head 及tail 命令介绍

当需要查看一个文本文件的头部或尾部时 head 命令及tail 命令可以非常方便的完成该操作head 命令用于查看一个文本文件的开头部分而tail 命令则用于显示文本文件的末尾几行这两个命令举例如下
head example.txt 显示文件 example.txt 的前十行内容
head -n 20 example.txt 显示文件 example.txt 的前二十行内容
tail example.txt 显示文件 example.txt 的后十行内容
tail -n 20 example.txt 显示文件 example.txt 的后二十行内容
tail -f example.txt 显示文件 example.txt 的后十行内容并在文件内容增加后自动显示新增的文件内容(最后一条命令非常有用 尤其在监控日志文件时可以在屏幕上一直显示新
增的日志信息)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值