Linux学习笔记(五)


VI高级用法

前面我们已经学习了vi的基本用法,现在我们将要更进一步,学习更多和vi相关的内容。

VI编辑器

只读选项

在打开某些配置文件的时候,为了安全起见应该避免修改源文件,这时候vi编辑器就提供了只读启动选项。

-R 作为vi的选项,使一个文件只读并允许用户逐行查看内容并且不会意外修改文件。

编辑多文档

在大部分情况,我们并不止打开一个文件,而是需要打开一系列文件,vi自然也提供了多文档编辑的能力,可以不退出vi而继续编辑下一个文件。

其原理来自vi的缓冲区功能。vi内部每个buffer打开一个文件,多个buffer也可以同时打开一个文件。相对应的一个tab对应了一个buffer,每个buffer可以由不同的buffer相对应。

在vi外部的话,可以一次打开多个文件,如

vi a.txt b.txt c.txt

使用:next(:n)编辑下一个文件。
:2n 编辑下2个文件。
使用:previous:N编辑上一个文件。
使用:args:ar显示文件列表。

如果打开了vi的话:

首先:tabnew创建一个标签
然后:e+文件名打开一个文件
:tabnext在窗口上打开下一个tab
:tabprevious在窗口上打开前一个tab
:q或者:tabclose关闭tab

vi/vim的定制

vi最大的优点就在于可定制化,基于你的习惯可以最大限度强化vi/vim的功能,有个vi/vim的配置网上有很多人晒出自己的配置,就不在这里叙述了。

文字重排

相关内容在三中已经总结过了,这里就跳过,如果有不明白的话就请看3中对于剪切、复制、粘贴等操作的总结。

vi操作符的域

在先前的学习中,其实就出现了有关操作域的应用。使用vi命令结合域控制键能让用户在进行编辑工作时具有更多的控制能力。这类命令格式为:

命令=操作符+域

以下是常用的域控制键:

功能
$标识域从光标所在位置到行的行尾
0标识域从光标前一个位置到该行所在行首
e或w标识域从光标所在位置到光标所在单词的末尾
b标识域从光标前一个字母到光标所在单词的开始

寄存器

vim中设计了特别的暂存机制——寄存器,用于保存拷贝和删除的文本。例如当用户键入dd命令时,vi将删除行放入缓冲区1,再次使用dd时,vi将缓冲区1中内容后移到缓冲区2,以此类推。

其中,有名寄存器a-z,一共26个,供用户使用

  • 编号寄存器0-9,10个,vim自己使用,存放删除和拷贝的文本
    • “0号寄存器是visual模式下拷贝的问题
    • “1-“9号寄存器是dd删除、yy拷贝的行文本

类似的,默认寄存器有:

  • % 当前窗口对应的文件名
  • # 当前窗口的其它文件名
  • : 命令行模式最近输入的命令
  • . 最近插入的文本
  • “ 最近删除或拷贝的文本

在命令模式下以”双引号开头引用这些寄存器。比如想要使用2号寄存器中的内容,只需要输入”2p。

指定缓冲区的格式可以总结为

"+指定寄存器+命令

命令行模式下,:reg显示寄存器。

寄存器加操作符作用域

刚刚所学的寄存器和操作符作用域是可以结合起来使用的:

寄存器+[range]+d/y+[motion]组合,完成拷贝/删除动作到寄存器,例如

“wdd 删除当前行到”w寄存器
“z7yy 拷贝从当前光标开始算,一共7行,到”z寄存器

光标定位

首先我们能够知道当前行在文本的百分之多少,在命令状态想按[Ctrl-g]可以查看当前行号。

然后是快速定位到文件的特定行:

  • :n定位到文件的第n行
  • :0或:1定位到第1行的行首
  • :$定位到最后一行
  • 1G定位到第1行的行首
  • G或0G定位到最后一行的行首
  • nG定位到第n行的行首

运行shell命令

跟多文档编辑类似的,我们希望能够不离开vi直接查看shell命令的运行结果。这也是可以实现的。

  • :shell命令切换到shell,exit回到vim
  • :!命令,执行shell命令
  • :r!命令,将shell命令输出粘贴到当前位置

搜索

vi中的搜索要结合正则表达式才能发挥强大的效果,在这里先提前学习一下。

/something: 在光标后面的文本中查找something

?something: 在光标前面的文本中查找something

n: 向后查找下一个。

N: 向前查找下一个。


文章作者: JoyTsing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 JoyTsing !
评论
 上一篇
Linux学习笔记(六) Linux学习笔记(六)
正则表达式什么是正则表达式 正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。 Unix系统偏好于以可读的文本处理,例如vi、emacs、grep、sed、awk都支持正则表达式。 Posix标准中
2020-05-02
下一篇 
Linux学习笔记(四) Linux学习笔记(四)
磁盘与文件数据存储在文件之中,而文件就保存在硬盘的某个部分之中,用户可以把磁盘分成更小的单元和子单元,分别命名,然后把相关的信息保存在同一个单元或子单元中。文件是操作系统对io设备的一个抽象,进程/线程是对执行过程的抽象。 文件在UNX
2020-04-29
  目录