命令简介 vim
是 Linux 系统中一款非常强大和流行的文本编辑器。它不仅功能丰富、高度可定制,而且操作高效、占用资源少,是系统管理员和程序员的首选编辑工具。
命令格式
其中:
选项: 指定 vim
命令的选项。
文件名: 指定要编辑的文件。
参数说明
参数
说明
备注
-c cmd
在打开文件后执行指定命令
如 -c "set number"
-r file
恢复上次异常退出时的文件
-
-R
以只读模式打开文件
不能编辑或保存文件
-m
禁止修改文件,强制成只读模式
-
-y
启动易用的 vim 模式
类似于 evim
程序
-u file
使用指定的 vimrc 文件
用于自定义 vim 配置
-U file
同上,并跳过系统 vimrc 文件
-
命令实例 基本用法 vim 有通俗的三种模式,分别为:一般模式、编辑模式和命令模式。下面对这三种模式分别加以说明
一般模式 当你使用 vim 打开一个文件时,一进入该文件就是一般模式了。在这个模式下,你可以做的操作有,上下移动光标;删除某个字符;删除某行;复制、粘贴一行或者多行。
一般模式下的光标移动
键
说明
备注
h 或向左方向键
光标向左移动一个字符
-
l 或向右方向键
光标向右移动一个字符
-
k 或向上方向键
光标向上移动一个字符
-
j 或向下方向键
光标向下移动一个字符
-
PgUP 键
屏幕向前(上)移动一页
-
PgDn 键
屏幕向后(下)移动一页
-
ctrl + u
屏幕向前(上)移动半页
-
ctrl + d
屏幕向后(下)移动半页
-
+
光标移动到非空个符的下一行行首
-
-
光标移动到非空个符的上一行行首
-
n 空格 (n 代表数字,非字母 n)
按下数字 n 然后按空格,则光标向右移动 n 个字符。如果改行字符数小于 n, 则光比继续从下行开始向右移动,一直到 n。
-
0 (数字 0,非字母 o) 或者 shift 6
移动到本行行首
-
shift 4
即 $
移动到本行行尾
-
H
光标移动到当前屏幕的最顶行行首
-
M
光标移动到当前屏幕的中央那一行行首
-
L
光标移动到当前屏幕的最底行行首
-
G
光标移动到文本的最末行行首
-
nG (n 是数字,非字母 n)
光标移动到该文本的第 n 行
-
gg
光标移动到该文本的首行
-
n 回车 (n 是数字,非字母 n)
光标向下移动 n 行
1.导航和移动
1 2 3 4 5 6 7 8 9 10 11 hjkl 0/$ gg/G <Ctrl+f>/<Ctrl+b>
一般模式下的查找与替换
键
说明
备注
/word
向光标所在之处的后面查找字符串名为 word 的字符串,当找到第一个 word 后,按字母 n 继续搜索下一个
-
?word
向光标所在之处的前面查找字符串名为 word 的字符串,当找到第一个 word 后,按字母 n 继续搜索下一个
-
:n1,n2s/word1/word2/g
在n1 和 n2 行之间查找 word1 这个字符串并替换为 word2, 你也可以把 /
换成 #
n1,n2 表示的是数字范围(比如1,5 代表第一行到第五行);g
表示全部替换,不加的话只替换第一个匹配的字符串;/
表示间隔符,替换的字符中间用 /
隔开
1,$s/word1/word2/g
从第一行到最末行,查找 word1 并替换成 word2
-
1,$s/word2/word2/gc
从第一行到最末行,查找 word1 并替换成 word2,只是在替换前需要用户手动确认
c
交互
1.查找和替换
1 2 3 4 5 6 7 8 /pattern 1,$s /old/new/ 1,$s /old/new/g
一般模式下的删除、复制及粘贴
键
说明
备注
x
向后删除一个字符
字母小写 x
X
向前删除一个字符
字母大写 X
nd (n 为数字,非字母)
向后删除 n 个字符
-
dd
删除光标所在的那一行
-
ndd (n 为数字,非字母)
删除光标所在的向下 n 行
-
d1G
删除光标所在的行到第一行的所有数据
-
dG
删除光标所在行到末行的所有数据
-
yy
复制光标所在的那行
-
nyy(n 为数字,非字母)
复制从光标所在行起向下 n 行
-
p
复制的数据从光标下一行粘贴
小写字母 p
P
复制的数据从光标上一行粘贴
大写字母 P
y1G
复制光标所在行到第一行的所有数据
-
yG
复制光标所在行到末行的所有数据
-
J
将光标所在行与下一行的数据结合成同一行
-
u
还原操作
没执行一次 u 的操作就会向上还原一次文件的改动
1.复制、粘贴和删除
2.撤销和重做
编辑模式 编辑模式:一般模式下,是不可以修改某一个字符的,只能到编辑模式了。从一般模式进入编辑模式,只需你按一个键即可(i, I, a, A, o, O, r, R)。当进入编辑模式时,会在屏幕的最下一行出现“INSERT或REPLACE”的字样。从编辑模式回到一般模式只需要按一下键盘左上方的ESC键即可。
键
说明
备注
i
在当前字符前插入字符
-
I
在当前行行首插入字符
-
a
在当前字符后插入字符
-
A
在当前行行末插入字符
-
o
在当前行下插入新的一行
小写字母 o, 非数字 0
O
在当前行上掺入新的一行
-
r
替换光标所在的字符,之替换一次
-
R
一直替换光标所在的字符,直到按下 ESC
-
命令行模式 命令模式:在一般模式下,输入 ”:” 或者 “/” 即可进入命令模式。在该模式下,你可以搜索某个字符或者字符串,也可以保存、替换、退出、显示行号等等。
键
说明
备注
:w
将编辑过的文件保存
-
:w!
若文本属性为只读时,强制保存
-
:q
退出 vim
-
:q!
不管编辑或未编辑都不保存退出
-
:wq!
保存,退出
-
:e!
将文档还原成最原始状态
-
ZZ
若文档没有改动,则不储存离开;若文档改动过,则存储后离开,等同于 :wq
-
:w [filename]
编辑后的文档另存为 filename
-
:r [filename]
在当前光标所在的行的下面读入 filename 文档的内容
-
:set nu
在每行行首显示行号
-
:set nonu
取消行号
-
n1,n2 w [filename]
将 n1 到 n2 的内容另存为 filename 这个文档
-
:! command
暂时离开 vim 一运行某个 linux 命令,例如: :! ls /home 暂时列出 /home 目录下的文件,然后会提示按回车回到 vim
-
1.基本编辑操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 vim file.txt i <Esc> :wq :q!
扩展用法 1.配置 .vimrc
文件
.vimrc
是 vim 的配置文件,可以自定义各种设置和快捷键映射。
1 2 3 4 5 6 7 set numbersyntax on set tabstop=4set paste nnoremap <C-s> :w<CR> inoremap <C-h> <Left>
基本设置
set number: 在 Vim 中,set number 命令用于显示行号。启用此选项后,Vim 会在每一行的左侧显示行号,便于用户在编辑文件时快速定位到某一行。
syntax on: syntax on 命令用于在 Vim 编辑器中启用语法高亮功能。启用此选项后,Vim 将根据文件的语法类型自动着色代码,以便更容易地识别关键字、注释、字符串等部分。这有助于提高代码的可读性,并帮助开发者更有效地编写和修改代码。
set tabstop=4: 在 Vim 中,set tabstop=4 命令用于设置制表符的宽度为 4 个空格。这意味着当你按下 Tab 键时,Vim 会自动插入四个空格,而不是一个制表符字符。这样可以确保在不同的编辑器或显示器上显示相同的缩进,并且能够更好地控制代码的排版。
set paste: 在 Vim 中,使用 set paste 命令可以将编辑器切换到”粘贴模式”。在粘贴模式下,Vim 会禁用自动缩进、自动格式化等功能,以便更好地处理粘贴的文本,特别是从其他应用程序中复制的文本。这样可以避免因自动格式化引起的格式混乱和错误缩进。当你想粘贴文本到 Vim 中时,尤其是从终端或其他应用程序中复制的文本时,建议先执行 set paste 命令,粘贴完毕后再执行 set nopaste 命令以返回正常模式。
键盘映射
nnoremap <C-s> :w<CR>
: 这个命令是在 Vim 中设置一个键盘映射,它的作用是在普通模式下按下 Ctrl + s 键时,执行保存当前文件的操作(相当于输入 :w<CR>
)。
解释一下:
nnoremap 表示在普通模式下(normal mode)进行键盘映射。它会忽略递归映射,这样做可以避免一些意外的行为发生。
<C-s>
表示 Ctrl + s 键,这是你按下的键的组合。
:w<CR>
是 Vim 的命令模式下保存文件的命令,其中 :w 表示保存操作,<CR>
表示回车键,用于执行命令。
因此,这个键盘映射的作用就是在普通模式下按下 Ctrl + s 键时,执行保存当前文件的操作。
inoremap <C-h> <Left>
: 在 Vim 中,inoremap <C-h> <Left>
的作用是将组合键 Ctrl + h 映射为光标向左移动一格。这样,在插入模式下按下 Ctrl + h 就相当于按下了左方向键,光标会向左移动一格。
2.插件管理
vim 支持各种插件,可以扩展其功能。常用的插件管理工具有 Vundle
、Pathogen
等。
1 2 3 4 5 6 7 8 9 10 11 12 " 使用 Vundle 管理插件 set nocompatible filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' " Vundle 插件管理器Plugin 'preservim/nerdtree' " 文件树浏览器 Plugin 'dense-analysis/ale' " 代码检查工具call vundle filetype plugin indent on
3.多文件编辑
vim 支持同时编辑多个文件,可以在不同缓冲区之间切换。
1 2 3 4 5 6 7 vim file1.txt file2.py file3.js :bn " 下一个缓冲区 :bp " 上一个缓冲区:b 2 " 切换到第二个缓冲区
高级用法 1.录制宏
vim 可以录制一系列操作为宏,以后可以直接执行该宏来重复这些操作。
2.使用分屏功能
1 2 vim -o file1.txt file2.txt " 水平分屏 vim -O file1.txt file2.txt " 垂直分屏
3.使用标签页功能
1 2 vim -p file1.txt file2.txt " 打开多个文件,每个文件在一个标签页中显示 :tabe file3.txt " 在当前标签页中打开新文件
通过以上实例和扩展用法,相信你已经对 vim
命令有了更深入的了解。它是一款功能强大、高度可定制的文本编辑器,值得每一位 Linux 用户学习和掌握。如果你还有任何疑问或需要进一步探讨,欢迎随时向我提出。