0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中的vim命令说明

Linux爱好者 来源:csdn 作者:恋猫大鲤鱼 2021-02-23 11:06 次阅读

1.简介

vim 是 Linux 操作系统中最通用的全屏幕文本编辑器,是 vi 的增强版(vi iMproved),与 vi 完全兼容,且扩充了很多功能。

vim 编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用 vim 编辑器就必须熟练掌握这两种模式的切换。默认情况下,打开 vim 后自动进入命令模式。从编辑模式切换到命令模式使用 ESC 键,从命令模式切换到编辑模式使用 A、a、O、o、I、i 键。

2.命令格式

vim [OPTIONS] [FILE.。.] vim [OPTIONS] - vim [OPTIONS] -t TAG vim [OPTIONS] -q [ERRORFILE]

[FILE.。.]表示一系列使用 vim 编辑的文件,使用:next命令可以向前切换所编辑的文件,使用--可以向后切换。这是 vim 常用启动格式;

-:表示待编辑的文件从标准输入读取;

-t TAG:要编辑的文件和光标的初始位置取决于一个标签,一种 goto 标签。标签在标签文件中查找,与标签关联的文件成为当前文件并执行关联的命令。主要用于 C 程序,在这种情况下 TAG 可以是函数名,其结果是包含该函数的文件成为当前文件,并且光标位于函数的开头。参见::help tag-commands;

-q [ERRORFILE]:使用 quickFix 模式启动 vim,文件 ERRORFILE 将被读取并显示第一个错误。如果 ERRORFILE 省略,则默认为 AztecC.Err(Amiga 系统)或 errors.err(其它系统)。关于 quickFix 模式说明,可以使用:help quickfix查看。

3.选项说明

+NUM 打开文件时光标跳转到由 NUM 指定的行首 +/PAT 打开文件时光标跳转到匹配的模式字符串 PAT +, -c CMD 在完成对第一个文件的读取后,执行给出的指令 -b 以二进制模式打开文件,用于编辑二进制文件和可执行文件 -C 以兼容模式运行 vim,使 vim 的表现更像 vi,即使存在 .vimrc 文件 -d 以 diff 模式打开文件,当多个文件编辑时,显示文件差异部分 -e 进入 Ex 模式,即进入冒号开头的末行模式。ex是Unix编辑器 -E 进入增强 Ex 模式,就像执行命令 exim -l 使用 lisp 模式,打开 lisp 和 showmatch -m 取消写文件功能,重设 write 选项。你仍然可以修改缓冲内容,但是不可以写入文件 -M 关闭修改功能 -N 非兼容模式运行 vim,这会使 vim 表现的更好,但是可能会存在与 vi 不兼容的情况,即使存在 .vimrc 文件 -n 不使用 swap file,这可能会导致在 vim 意外崩溃的情况下无法恢复未保存的内容 -o [N] 以上下排列方式同时打开 N 个 vim 窗口,如果未指定 N ,则为每一个文件单独打开一个窗口 -O [N]

以左右下排列方式同时打开 N 个 vim 窗口,如果未指定 N ,则为每一个文件单独打开一个窗口 -R 以只读方式打开文件 -r 列出 swap file -r FILE 以指定的交换文件来恢复崩溃的编辑会话。交换文件名后缀为.swp -s 安静模式,与 -e 选项结合使用 -u VIMRC 使用指定的 vimrc 文件中的命令来初始化 vim,所有其它的初始化操作将被跳过。可以给定“NONE”来跳过所有的初始化 -U GVIMRC 使用指定的 gvimrc 文件中的命令来初始化 GUI,所有其它的 GUI 初始化操作将被跳过。可以给定 “NONE” 来跳过所有的 GUI 初始化 -V [N] 以冗余模式执行 vim,打印 vim 读取了哪些配置文件 vimrc。可选的数字 N 表示冗余级别,数值越大级别越高,取值范围是 0~10,默认是 10 -x 写文件时进行加密,会提示输入加密密钥 -h, --help 显示帮助信息并退出 --version 显示版本信息并退出

4.内置命令说明

vim 提供了丰富的内置命令,有些内置命令使用键盘组合键即可完成,有些内置命令则需要以冒号 : 开头输入。常用内置命令如下:

Ctrl+u:向下滚动半屏 Ctrl+d:向上滚动半屏 Ctrl+f:向下滚动一屏 Ctrl+b:向上滚动一屏 Ctrl+e:向下滚动一行 Ctrl+y:向上滚动一行 Enter:回车向下滚动一行 Esc:从编辑模式切换到命令模式 ZZ:命令模式下保存当前文件所做的修改后退出 vim :[行号]:光标跳转到指定行的行首 :$:光标跳转到最后一行的行首 gg:跳转到首行; G:跳转到尾行 Ctrl+g:显示总行数 x, X:删除一个字符或选中的内容。当删除一个字符时,x 删除光标后的,X 删除光标前的。删除即剪切 d:删除选中的文本,删除即剪切 D:删除从当前光标到光标所在行尾的全部字符。删除即剪切 dd:删除光标所在行的整行内容。删除即剪切 ndd:删除当前行及其后n-1行,n为一个数字。删除即剪切 y:复制选中的文本 y0:复制光标前一个字符到行首的内容 y$:复制光标后一个字符到行尾的内容 yh:复制光标前的1个字符 yl:复制光标后的1个字符 nyh:复制光标前的n个字符,比如4yh复制光标前的4个字符 nyl:复制光标后的n个字符,比如4yl复制光标后的4个字符 yy:复制光标所在的当前行 nyy:复制当前行以及其后n-1行,n为一个数字; p:小写p,粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方 P:大写P,粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方; /[字符串]:向后搜索,支持正则表达式。用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示。键入字符 n 跳转到下一个,N 跳转到前一个 ?[字符串]:向前搜索,支持正则表达式。用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示。键入字符 n 跳转到下一个,N 跳转到前一个 :a,bs/F/T:替换文本操作,将a到b行之间第一个F换成T字符串。其中,“:s/”表示进行替换操作。不指定a和b,则默认为当前行;如果b为$,表示替换到末行;如果是a,b为%,即:%s/F/T,表示从第一行替换至末行 :a,bs/F/T/g:替换文本操作,替换第a行到b行,每一行所有F为T。a,b的取值规则同上一条; a:在当前字符后添加文本 A:在当前行末添加文本 i:在当前字符前插入文本 I:在当前行首插入文本 no:在当前行后面插入n个空行,n为具体的数值 nO:在当前行前面插入n个空行,n为具体的数值 :wq:执行存盘退出操作 :w:执行存盘操作 :w!:执行强制存盘操作 :q:执行退出操作 :q!:执行强制退出操作 :e [文件名]:打开并编辑指定名称的文件 :n:如果同时打开多个文件,则继续编辑下一个文件 :f:显示当前的文件名、文件总行数、光标所在行号占总行数的比例 :set number:在最左端显示行号 :set nonumber:在最左端不显示行号 jkhl或方向键:光标移动快捷键,分别为上下左右 u:撤销 ctrl+r:反向撤销 v+移动光标:使用v进行选择模式,移动光标可选择文本 w:word,右移一个单词,光标停留在单词首部 e:end,右移一个单词,光标停留单词的尾部 b:back,左移一个单词,光标停留在单词首部 ^ 或 (:移至行头 $ 或 ):移至行尾 gd:高亮显示光标所在的单词

5.vim 需知

5.1 vim 的四大模式

众所周知,vim 里面最具特色的东西就是它可以切换模式,那什么是模式呢?可以简单的理解为在不同的模式下面按相同的键而得到不同的效果。比如 vim 在插入模式下面连按两次 d,那么就会在光标位置插入两个字母 d,如果在正常模式下面连按两次 d,那么光标所在当前行将会被删除。

既然说是 vim 的四大模式,那么 vim 到底有那四大模式呢?

正常模式(normal mode)

可视模式(visual mode)

插入模式(insert mode)

命令行模式(command-line mode)

用户可以通过按 ESC 在各个模式之间进行切换。关于 vim 的模式说明,可以打开 vim 后键入 :help mode 来查看。

正常模式 (command mode)

不管用户处于何种模式,只要按一下 ESC 键,即可进入正常模式。启动 vim 命令默认情况下进入正常模式。

在正常模式下,用户可以输入各种合法的 vim 命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的 vim 命令,则 vim 在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是 vim 的合法命令,vim 会响铃报警。

可视模式(visual mode)

可视模式简单来说就是选中一块编辑区域,然后在上面执行一些操作,比如删除,替换,改变大小写等。

在正常模式按下 v(逐个字符选择文本)、 V(逐行选择文本)、Ctrl+v(按照块的方式选择文本),可以进入可视模式。可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。

插入模式 (insert mode)

在正常模式下输入插入命令 i(insert)、附加命令 a (append)、打开命令 o(open)、修改命令 c(change)、取代命令 r(replace)或替换命令 s(substitute)都可以进入插入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,键入 ESC 键即可。

命令行模式 (command-line mode)

命令行模式又称为 ex 模式。ex 是 EXtended 的简称,是 Unix 系统上的纯文本编辑器。ex 命令可启动 vim,执行 ex 命令,并键入 visual 就可以进入 vim 的正常模式。

vim 和 ex 编辑器的功能是相同的,二者主要区别是用户界面。在 vim 中,命令通常是单个键,例如 i、a、o 等;而在 ex 中,命令是以按回车键结束的行。在正常模式下,用户按冒号即可进入命令行模式,此时 vim 会在显示窗口的最后一行显示一个冒号作为命令行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。命令执行完后,vim 自动回到正常模式。

5.2 vim 相关编码选项

文件的编码和显示是一个令人头痛的东西,真希望这个世界上只存在utf-8编码,那就没那么痛苦了。vim编码配置涉及4个选项,分别是encoding 、fileencoding、fileencodings和termencoding,四者对应的简写分别为enc、fenc、fencs和tenc。

(1)encoding

encoding是vim内部使用编码。vim运行时,其菜单、标签、以及各个缓冲区统一使用encoding作为字符编码。

(2)fileencoding

fileencoding为文件采用的编码方式。使用vim打开文件后,可以使用末行命令:set fenc=utf-8将文件编码方式更改为UTF-8,注意,前提是vim打开文件时已经正确识别出文件编码,即未出现乱码。

(3)fileencodings

fileencodings用于vim在打开文件的时候进行解码的猜测列表。文件编码没有百分百正确的判断方法,所以vim只能猜测文件编码。~/.vimrc里面fileencodings的设置一般为

set fileencodings=utf-8,gb18030,latin1

(4)termencoding

终端所使用的文本编码。这个选项的值用于告诉VIM终端使用了哪种文本编码用于文本输入和显示。如果该值为空,那么它被设置为encoding的值。

5.3 vim 读写文件时编码转换过程

(1)读文件

vim打开文件时,需要将磁盘文件内容载入缓存,并将缓存中的字符转为换终端编码,通过网络传输的方式,传输到终端进行显示。两个转换环节,有一个出错都会出现乱码。

fileencoding -》 encoding -》 termencoding

(2)写文件

通过终端编辑文件时,字符编码转换过程是vim读文件的逆过程。

termencoding -》 encoding -》 fileencoding

注意:使用vim读写文件时为避免出现乱码,至关重要的一点就是终端,比如SecureCRT或XShell的编码设置要与vim的termencoding设置相同,如果不同还是还是会出现乱码,尽管vim已经采用正确的编码格式解析了文件。比如将XShell设置为UTF-8。

5d5b5406-7567-11eb-8b86-12bb97331649.png

6.vim 常见用法

(1)vim 查看文件编码

:set fileencoding 或者简写 :set fenc

可显示文件编码格式。这个命令有致命的缺点。原因是只有正常显示文件内容时,该命令显示的文件编码格式才是文件本身的编码格式。因为该命令显示的编码格式并不是文件本身的编码格式,而是当前打开该文件所使用的编码格式。因此,这个命令在网上的说明大都是不准确的,特此说明。

(2)修改编码类型

使用vim修改:

:set fileencoding=gbk #或者 :set fenc=gbk

使用iconv来修改文件编码:

iconv -f encoding -t encoding inputfile #比如将一个GBK编码的文件转换成UTF-8编码 iconv -f GBK -t UTF-8 file1 -o file2UTF-8

iconv的参数说明:

-f, --from-code=名称,原始文本编码 -t, --to-code=名称,输出编码 -l, --list 列举所有已知的字符集 -c 从输出中忽略无效的字符 -o, --output=FILE,输出文件 -s, --silent,关闭警告 --verbose,打印进度信息

(3)vim 指定编码类型浏览文件

如果知道了文件的编码类型,可显示指定编码类型来解析文件,而不用vim去猜测文件的编码类型,事实上猜测的往往是错误。命令如下:

vim file_name -c “e ++enc=utf-8”

或者在使用 vim 打开文件之后,在末行模式使用如下命令:

:e ++enc=utf-8

(4)vim 新增空白行

新增一行空白,在命令行模式下输入 o。如果想添加三行的话,键入 3o ,如果想添加 n 行则键入 n 个 o。如果键入 3o 后立即退出插入模式的话,就可以添加三个空白行。如果输入一些内容再退出,可以添加三行相同的内容。

如果想在每一行执行相同的命令,在 vim 里可以用 :g 实现。一般的语法是:

:g/pattern/cmd

它表示在匹配 /pattern/ 这个正则表达式的行上执行 cmd 命令(也称冒号命令)。而 /^/ 这个表达式,用于匹配行首。因为任何一行都有行首,你的要求就很容易实现了:

:g/^/norm 3o

norm这个命令的意思是,把后面的参数看成是在普通模式下的按键,即命令模式下的按键。

(5)vim 高亮显示选中的单词

将光标移到需要高亮显示的单词上,在命令模式下输入gd,那么就可以将当前的单词在当前文本中全部高亮显示,如下图所示,高亮显示dwBeInvitedUinLen。

5da8896a-7567-11eb-8b86-12bb97331649.png

(6)vim 输入特殊字符

有三种方法,第一种是使用字符编码,第二种是使用二合字母(digraph),三是使用快捷键(Ctrl+字母)。

使用字符编码:

vim可以用字符编码插入任意字符,使用此功能可以方便地输入键盘上找不到的字符。使用步骤如下:

(1)编辑模式下按下Ctrl+v;

(2)如果是ASCII字符,则输入三位十进制ASCII码值,不足三位,前补0。比如输入大写字母A,则输入065;如果是Unicode字符,则输入“u+四位十六进制码值”。比如输入大写字母A,则输入u0041。

更多详情内容可参见vim的帮助文档,末行模式输入:h i_ctrl-v_digit。

使用二合字母(digraph):

二合字母顾名思义,使用两个字母的组合来标识特殊字符。使用步骤如下:

(1)编辑模式下按下Ctrl+k;

(2)输入特殊字符对应的二合字母。可以使用:dig或:h digraph-table查看对应二合字母。比如回车符(Carriage Return) 的二合字母是CR。

Ctrl+字母:

在vim中,使用:set list显示所有字符时,经常会看到有^I、^M等符号,代表的字符可以使用:h digraph-table查看,特殊字符列表如下:

5e06af90-7567-11eb-8b86-12bb97331649.png

在vim的编辑模式下,可使用“Ctrl+字母”进行输入,例如使用“Ctrl+i”或“Ctrl+I”可以输入字符^I(Tab),使用“Ctrl+m”或“Ctrl+M”可以输入字符^M(回车)。

(7)vim其它常见操作

#显示行号 :set number #取消行号 :set nonu #取消高亮显示查找后的字符串 :nohl #显示换行符 :set list #不显示换行符 :set nolist

7.小结

vim 仍有很多未知的东西等待我们去发现,如果 vim 使用过程中有问题,欢迎留言,一同探讨解决进步。

原文标题:每天一个 Linux 命令(122):vim 命令

文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10986

    浏览量

    206723
  • 操作系统
    +关注

    关注

    37

    文章

    6278

    浏览量

    121866
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21848

原文标题:每天一个 Linux 命令(122):vim 命令

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux基本命令总结

    都说Linux命令多,实际工作中我们又有多少命令会接触用到呢?本文跟大家分享Linux运维工作中常用的600个命令,可以说这些
    的头像 发表于 01-11 10:32 576次阅读

    vim编写一个程序后怎么运行

    当你用 Vim 编写完一个程序后,你需要执行一系列步骤来运行程序。下面是详尽的说明: 保存文件:在 Vim 编辑器中,按下 Esc 键,然后输入 :w ,最后按下 Enter 键。这将保存你的文件
    的头像 发表于 11-28 15:27 1274次阅读

    linux怎么执行vim编辑的程序

    Linux系统中执行vim编辑的程序非常简单,只需要依次执行以下步骤: 打开终端:在Linux系统中,按下Ctrl+Alt+T组合键可以快速打开终端。 输入vim
    的头像 发表于 11-28 15:23 370次阅读

    linux怎么进入vim命令窗口

    进入 Vim 命令窗口可以通过以下几种方法实现: 在普通模式下使用冒号命令(:):在 Vim 的普通模式下按下冒号键,即可在底部输入栏中输入命令
    的头像 发表于 11-28 15:21 1203次阅读

    linux使用vim新建并编辑文件

    Linux系统下,Vim是一款功能强大的文本编辑器。它可以用于新建并编辑文件,具有很多高级功能和快捷键。下面是关于如何在Linux上使用Vim新建并编辑文件的细致的
    的头像 发表于 11-28 15:17 1002次阅读

    linux怎么保存退出vim

    Linux系统中,使用vim作为编辑器是非常常见的。vim是一个强大的文本编辑器,拥有丰富的功能和快捷键。保存并退出vim可以通过以下步骤完成: 打开
    的头像 发表于 11-27 14:19 3493次阅读

    linux怎么执行vim编辑的程序

    Linux中,你可以通过以下步骤执行Vim编辑器中编写的程序: 打开终端或命令行界面。 使用Vim编辑器打开你的程序文件。假设你的程序文件名为"program.c",可以使用以下
    的头像 发表于 11-26 15:45 517次阅读

    linux怎样进入vim编辑模式

    Linux中,要进入Vim编辑器的编辑模式,可以按照以下步骤进行操作: 打开终端或命令行界面。 输入以下命令来启动Vim编辑器:
    的头像 发表于 11-26 15:43 1714次阅读

    linuxvim三种模式切换

    Linux中,Vim编辑器具有三种模式,分别是命令模式、插入模式和末行模式。这三种模式有着不同的作用和功能,用户可以在它们之间进行切换以完成不同的操作。 命令模式
    的头像 发表于 11-26 15:39 1435次阅读

    linux重启命令有哪些

    Linux是一种自由和开放源代码的操作系统,被广泛应用于服务器和嵌入式设备。在Linux中,有多种命令用于重启系统。在本文中,我们将详细介绍常用的Linux重启
    的头像 发表于 11-17 09:49 1137次阅读

    shell命令linux命令一样吗

    Shell命令Linux命令并不完全一样。 首先,Shell是一种命令行解释器,它是用来解释和执行用户输入的命令的。Shell既是一种
    的头像 发表于 11-08 10:51 1360次阅读

    常用Linux命令要记牢!

    linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,
    的头像 发表于 08-07 15:31 444次阅读

    介绍一些实用的Linux命令

    作为一名软件开发人员,掌握 Linux 命令是必不可少的技能。即使你使用 Windows 或 macOS,你总会遇到需要使用 Linux 命令的场合。例如,大多数 Docker 镜像都
    发表于 08-01 16:12 187次阅读
    介绍一些实用的<b class='flag-5'>Linux</b><b class='flag-5'>命令</b>

    一款运行于windows上的linux命令神器-Cmder

    Cmder是一款Windows的命令行工具,用起来和Linux命令一样顺畅。可以使用大量的Linux 命令,比如 grep, curl,
    的头像 发表于 05-05 10:30 1600次阅读
    一款运行于windows上的<b class='flag-5'>linux</b><b class='flag-5'>命令</b>神器-Cmder

    vim编辑器操作指令大全

    vim编辑器的完整操作命令Linux下,可以键入vimtutor命令,有一个包含实操的vim教程。 1.VI的三种
    发表于 04-28 16:25 0次下载