Vim(表示Vi iMproved)是Linux命令行界面(CLI)上可用的主要文本编辑器,用于创建和编辑文件。它提供了两种主要模式:命令模式和插入模式。
Vim命令模式旨在文本文件中快速移动,并执行诸如复制单词、复制和删除一行或多行、搜索、替换等功能。
要开始向文件中添加文本,我们必须切换到插入模式。要做到这一点,只需按下键盘上的字母“i”,然后写下你想要的内容
This is a vim tutorial
~
~
~
-- INSERT --
使用ESC退出插入模式,进入命令模式,底部的- INSERT -就消失了
当处于命令模式时,命令提示出现在vim窗口的底部
命令 | 作用 |
:w | 保存文件,但不退出vim |
:wq | 保存文件,退出vim |
:x | 保存文件,退出vim |
:q! | 不保存文件,强制退出vim |
示例:
输入:q,提示文件已经更改,但没有保存更改
This is a vim tutorial
~
~
~
E37: No write since last change (add ! to override)
输入:q!,强制退出成功
This is a vim tutorial
~
~
~
:q!
示例:使用:3切换到文件的第三行
First line
Second line
Third line
Fourth line
~
~
~
:3
命令 | 作用 |
:0 | 移动到文件开始位置 |
:$ | 移动到文件末尾位置 |
:n | 移动第n行 |
0 | 移动到行首位置 |
^ | 移动到行首非空白字符位置 |
$ | 移动到行尾位置 |
H | 移动到屏幕顶部位置 |
M | 移动到屏幕中部位置 |
L | 移动到屏幕底部位置 |
b | 移动到上一个单词位置 |
w | 移动到下一个单词位置 |
这样做将自动在当前行下创建一个空行,将光标移动到新空行的开头,并将vim切换到插入模式以允许您写入文本
auth.endpoint=/api/auth/v1
~
~
~
~
"vim_tutorial.txt" 1L, 27C
auth.endpoint=/api/auth/v1
auth.endpoint=/api/auth/v1
~
~
~
~
"vim_tutorial.txt" 2L, 54C written
auth.endpoint=/api/auth/v1
analytics.endpoint=/api/analytics/v1
~
~
~
~
"vim_tutorial.txt" 2L, 64C written
只需将光标移动到行上的某个位置,然后按dd,行将被删除
这将粘贴我们复制的所有行,紧跟在行块之后
# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
....
....
[ more lines in the file]
....
....
/AuthorizedKeysFile
当你按下Enter键时,光标将跳转到要搜索的文本的第一个位置
如果文件中出现多次相同的文本,使用字母n(仍然在命令模式下)跳到文件中下一次出现的文本
场景 | 技巧 |
为Vim添加行号 | 在命令模式下 输入 :set nonnumber |
高亮 | 在命令模式下 启用语法高亮显示 输入 :syntax on,按“Enter” 输入 :syntax off |
重做或重复最后一个命令 | 要重复执行命令,可以在命令模式下使用句点(.) 例如,尝试复制粘贴一行,使用yy和p,然后按下句点(.),就会重复粘贴 |
撤销更改 | 在命令模式下按字母' u '来撤销更改 |
上下移动行 | 将光标放在要移动的行上。 要将它向上移动,键入 :m -2 |
将行转换为大写 | 输入 gUU |
将行转换为小写 | 输入 guu |
计算单词个数 | 使用vim统计文本文件中的单词数,请键入g,然后按Ctrl-g 示例: 有30个单词,游标当前在单词22处。 |
:s/old_text/new_text/
文本内容
This is a TO_BE_REPLACED tutorial. TO_BE_REPLACED is a Linux text editor.
In this tutorial you will learn TO_BE_REPLACED commands. TO_BE_REPLACED is a very powerful editor.
输入以下命令,替换 TO_BE_REPLACED 为 'vim'
:s/TO_BE_REPLACED/vim/
执行命令后,文本内容
This is a vim tutorial. TO_BE_REPLACED is a Linux text editor.
In this tutorial you will learn TO_BE_REPLACED commands. TO_BE_REPLACED is a very powerful editor.
可以看到,唯一被替换的文本是第一行中第一次出现的TO_BE_REPLACED
:s/TO_BE_REPLACED/vim/g
与前一个命令的区别在于末尾的字母g
这会将replace命令应用于整行,而不仅仅是替换第一个文本
:1,$s/TO_BE_REPLACED/vim/g
vim vim_file1.txt
e: vim_file2.txt