Linux 文本编辑

王 茂南 2022年1月16日07:53:16
评论
3178字阅读10分35秒
摘要本文会介绍一个常用的 Linux 下编辑文本的工具,即 vim 的使用。本文会介绍到以下的一些内容,vim 的模式介绍;vim 中光标的移动;vim 中的删除操作;vim 中的撤销与重做;vim 中的复制粘贴和剪切;vim 中的快速查找;vim 中的查找替换;vim 中的命令行模式;vim 中的文件保存与退出;vim 中的配置;

简介

在使用 Linux 的时候,最经常需要做的就是修改和编辑一些文件。于是本文会介绍一个常用的 Linux 下编辑文本的工具,即 vim 的使用,主要会分为以下的内容(如果想使用桌面版的文字编辑工具,也可以尝试使用 gedit,这个就和记事本的使用是类似的):

  • vim 的模式介绍;
  • vim 中光标的移动;
  • vim 中的删除操作;
  • vim 中的撤销与重做;
  • vim 中的复制粘贴和剪切;
  • vim 中的快速查找;
  • vim 中的查找替换;
  • vim 中的命令行模式;
  • vim 中的文件保存与退出;
  • vim 中的配置;

 

Vim 编辑器的使用

对于所有的 Linux 发行版来说,都内置了 vi 编辑器,而 vim 是一款高级文本编辑器,除了支持 vi 编辑器的功能之外,还提供了更丰富的功能。

借用一些 vim 官方的说法。 vim 是一种高可配置的文本编辑器,通常被称为 programmer's editor,即程序员的编辑器,但是不仅仅是程序员,vim 可以适用于各种文字编辑。

 

Vim 的模式

vim 是一种模式编辑器。按照官方对于模式的分类,这里我们介绍三种基本的模式分别是普通模式normal),插入模式insert)和命令行模式command line)。在普通模式下,键入的字符会被当作命令,而在插入模式下,键入的字符会被当作文本。

对于刚刚启动的 vim,处于 normal 普通模式下(我们在终端输入 vim 来启动 vim )。

Linux 文本编辑

如果需要进到插入模式,我们可以键入 i 命令(从「普通模式」切换到「插入模式」),切换到插入模式下。在插入模式下,可以输入文本内容,并且底部会显示 insert(中文版本会显示「插入」,下图中的波浪线表示不存在的行):

Linux 文本编辑

如果要切换到「命令行模式」,需要先切换到「普通模式」。接着在普通模式下输入 :( 冒号),或者 / 或 ? ,在编辑器界面的最后一行(不是文本内容的最后一行),就会出现一个输入的冒号或/ 或 ?,在此,我们可以输入一些命令,例如下图所示,我们在标准模式下输入下图的命令:

Linux 文本编辑

此时就会显示文本内容的行号:

Linux 文本编辑

 

光标移动

在 vim 中,我们最常用的就是使用方向键来移动光标。但是有的时候我们需要移动到指定的行,这个时候就需要使用一些快捷键:

  • 移动到行首与行尾
    • HOME 键,移动到行首;
    • END 键,移动到行尾;
    • ^ 符号,普通模式下,该符号会移动到行首;
    • $ 符号,普通模式下,该符号会移动到行尾;
  • 移动到指定的行
    • gg 普通模式下,移动到文件的第一行;
    • G 移动到文件的最后一行;
    • nG 这里 n 代表跳转的行号(或是使用  :n 来跳转到指定的行);

 

删除操作

通常情况下,我们可以在 Insert 模式进行删除的操作。如果我们要删除多行,这样的方式就会略显麻烦,因此我们可以进入「普通模式」下通过命令进行操作:

  • dd 命令,删除光标所在的一整行(删除一行);
  • ndd 命令,这里 n 代表的是一个正数,例如使用 10dd,代表着从光标所在行开始计算,往下的 10 行内容都将被删除(删除多行);
  • d$ 命令,从光标位置删除到行末(在一行,删除到行末);
  • d^ 命令,从光标位置删除到行首(在一行,删除到行首);
  • dG 命令,从当前位置删除到文档的结尾(删除到最后一行);
  • d$ 命令,从当前位置删除到文档首部(向上删除,删除至首行);

 

撤销与重做命令

上面我们介绍了删除的命令。如果我们不小心误操作,删除了不该删除的行,这个时候就需要撤销刚刚的操作。在「普通模式」下:

  • u 命令,时间轴往左,相当于 office 中的撤销(朝左的撤销);
  • ctrl + R 命令,时间轴向右,相当于 office 中朝右的重做;

下图就是上面两个命令与 office 中的对应:

Linux 文本编辑

复制粘贴与剪切

这里的复制,粘贴和剪切操作都是在「普通模式」下使用:

  • 普通模式中使用 y 复制
    • 普通模式中,yy 复制游标所在的整行(3yy 表示复制3行)
    • 普通模式中,y^ 复制至行首,或 y0。不含光标所在处字符。
    • 普通模式中,y$ 复制至行尾。含光标所在处字符。
    • 普通模式中,yw 复制一个单词。
    • 普通模式中,y2w 复制两个单词。
    • 普通模式中,yG 复制至文本末。
    • 普通模式中,y1G 复制至文本开头。
  • 普通模式中使用 p 粘贴
    • 普通模式中,p(小写)代表粘贴至光标后(下)
    • 普通模式中,P(大写)代表粘贴至光标前(上)
  • 普通模式种使用 dd 剪切
    • 前面讲得 dd 删除命令其实就是剪切,这里不在赘述
    • ddp,快速实现光标所在行月它下面的行的交换

 

快速查找

对于搜索字符串的方式,我们可以通过 /string 和 ?string 的方式,这里的 string 代表需要搜索的字符串,/ 和 ? 分别代表向下和向上搜索。

Linux 文本编辑

对于有多个查询结果的时候,我们可以通过 n 或 N 来定位下一个或上一个查询结果(需要输入一个「回车」,接着通过 n 或 N 来定位)。

对于搜索单词时,我们设定忽略大小写以及取消设定:

  1. :set ignorecase
  2. :set noignorecase

例如当我们忽略大小写之后,输入 mathpretty 之后就可以匹配到上面大写的 Mathpretty 了:

Linux 文本编辑

 

查找与替换

:s(substitute)命令用来查找和替换字符串,语法如下:

  1. :{作用范围}s/{目标}/{替换}/{替换标志}

例如,:%s/Ma/ba/g 会在全局范围(%)查找 Ma 并替换为 ba,通过 g 标志指示整行替换(默认只会替换每行第一个)。

Linux 文本编辑
  • 作用范围(替换搜索的范围)
    • 默认表示当前行,:s/foo/bar
    • % 表示全文,:%s/foo/bar
    • 指定开始行和结束行,:5,12s/foo/bar
    • 从当前行到接下来多少行,:.,+2s/foo/bar
  • 替换命令最后为可选的替换标志,除了前面提到的 g 整行替换,还有一些其它的。
    • i 表示大小写不敏感,I 表示大小写敏感(默认);
    • c 表示在执行每次替换前进行确认,其中 y 表示替换,n 表示不替换,a 表示替换所有,q 表示退出(:%s/foo/bar/gc);

 

命令行模式

下面介绍一些在 vim 中常用的命令:

  1. # 不兼容 vi
  2. :set nocompatible
  3. # 兼容
  4. :set compatiable
  5. # 显示行号
  6. :set number
  7. # 不显示行号
  8. :set nonumber
  9. # 行号缩写的方式
  10. :set nu
  11. :set nonu
  12. # 显示行尾为 `$` ,显示制表符即 `<tab>` 键为`^I`
  13. :set list
  14. # 设置 tab 键的字符长为 4
  15. :set tabstop=4
  16. # 文件只读
  17. :set readonly
  18. # 设置编码格式
  19. :set encoding=utf-8
  20. # 设置文件编码
  21. :set fileencoding=utf-8
  22. # 设置 tab 为4个空格
  23. :set softtabstop=4
  24. # 生成备份文件
  25. :set backup
  26. # 不生成备份文件
  27. :set nobackup

 

文件的保存和退出

当我们完成对文件的修改或是创建之后,我们需要保存与退出。常见的保存退出方式如下:

  • w 保存;
  • w filename 保存为 filename;
  • q 不保存退出;
  • q! 强制退出,使用 ! 强制执行;
  • wq 保存退出(这个会比较常用);
  • wq! 强制保存退出;
  • wq filename 保存为 filename,并退出;

 

vim 的配置

这里简单介绍 vim 的配置。vim 的配置文件是 vimrc 文件。我们可以通过打开 vim 编辑器,使用如下命令来查看,:scriptname ,会列出 vim 加载的脚本。

Linux 文本编辑

如果我们想要自定义一些 vim 的配置,之需要在用户的根目录下创建 .vimrc 文件,写入相应的配置项。就可以使配置生效。如下,给出一个 vimrc 的示例:

  1. " 设置自动缩进
  2. set autoindent
  3. " 设置显示光标位置
  4. set ruler
  5. " 显示行号
  6. set number

上面只有三行的设置,当再次打开 vim 的时候,就可以看到区别。此时就会自动显示行号:

Linux 文本编辑

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2022年1月16日07:53:16
  • 转载请务必保留本文链接:https://mathpretty.com/14424.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: