4

Linux 文本编辑

 2 years ago
source link: https://mathpretty.com/14424.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

摘要本文会介绍一个常用的 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. :set compatiable
  4. # 显示行号
  5. :set number
  6. # 不显示行号
  7. :set nonumber
  8. # 行号缩写的方式
  9. :set nu
  10. :set nonu
  11. # 显示行尾为 `$` ,显示制表符即 `<tab>` 键为`^I`
  12. :set list
  13. # 设置 tab 键的字符长为 4
  14. :set tabstop=4
  15. # 文件只读
  16. :set readonly
  17. # 设置编码格式
  18. :set encoding=utf-8
  19. # 设置文件编码
  20. :set fileencoding=utf-8
  21. # 设置 tab 为4个空格
  22. :set softtabstop=4
  23. # 生成备份文件
  24. :set backup
  25. # 不生成备份文件
  26. :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 文本编辑


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK