LinuxDown.com
Linux系统下载网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

Linux操作系统中最通用的全屏幕文本编辑器

2023年3月15日 66点热度

1.简介

vim是Linux操作系统中最通用的全屏幕文本编辑器,是vi的提高版(viiMproved),与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常用启动格式;

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

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

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

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.1vim的四大模式

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

既然说是vim的四大模式,这么vim究竟有那四大模式呢?

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

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

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

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

在正常模式按下v(挨个字符选择文本)、V(逐行选择文本)、Ctrl+v(根据块的方法选择文本),可以步入可视模式。可视模式中的操作有点像拿键盘进行操作,选择文本的时侯有一种键盘选择的即视感,有时侯会很便捷。

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

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

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

5.2vim相关编码选项

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

(1)encoding

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

(2)fileencoding

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

(3)fileencodings

fileencodings用于vim在打开文件的时侯进行解码的猜想列表。文件编码没有百分百正确的判定方式,所以vim只能推测文件编码。~/.vimrc上面fileencodings的设置通常为

set fileencodings=utf-8,gb18030,latin1

(4)termencoding

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

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

(1)读文件

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

fileencoding -> encoding -> termencoding

(2)写文件

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

termencoding -> encoding  -> fileencoding 

注意:使用vim读写文件时为防止出现乱码,至关重要的一点就是终端,例如SecureCRT或XShell的编码设置要与vim的termencoding设置相同,倘若不同还是还是会出现乱码,虽然vim早已采用正确的编码格式解析了文件。例如将XShell设置为UTF-8。

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。

linux系统编码格式_linux查看文件编码_linux url编码解码

(6)vim输入特殊字符

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

使用字符编码:

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

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

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

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

使用二合字母(digraph):

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

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

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

Ctrl+字母:

在vim中,使用:setlist显示所有字符时雨林木风linux,常常会听到有^I、^M等符号,代表的字符可以使用:hdigraph-table查看,特殊字符列表如下:

在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系统编码格式,欢迎留言,一齐阐述解决进步。

参考文献

[1]vim(1)manual

[2]Linux命令大全.vi命令

[3]VIM乱码缘由与解决方案

[4]Vim怎么插入特殊字符

[5]让VIM彻底挥别乱码

[6]vim复制字符

[7]CSDN.Vim方法之四大模式_普通模式

[8]freecodecamp.VimEditorModesExplained

给我们公号发送命令二字,获取“每天一个Linux命令”系列的完整目录。

-EOF-

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: linux系统 vim vim命令 命令模式 字符编码
最后更新:2023年3月15日

Linux系统下载网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

Linux系统下载网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
轻松安装CentOS,EasyBCD教程上手 Windows端完全转入了Linux服务器端,语言也彻底变成C Golang开发者乱码问题的原因及解决方法设置中解析 企业Linux安全运维:10大分析实战经验 轻松搞定CentOS本地域名解析与静态IP设置 Linux命令用于显示内存使用情况的free(-bkmotV) Linux必备:64位Tomcat下载安装教程 精通Linux设备驱动开发,掌握9大关键技巧! Linux下MySQL下载安装教程,快速学会MySQL安装! 升级到7.10完成后执行一下sudo-getclean释放空间 玩转Linux C索引:3.1版本安装指南 轻松掌握Linux启动应用程序命令,提高工作效率 修改默认端口请看:修改CentOS8默认远程端口:开启防火墙 主机与虚拟机的互ping也是可以通的 嵌入式Linux USB驱动开发与应用:8个详细讨论 thunderbird linux 安装 高效管理邮件,轻松安装Thunderbird Linux。8招教你操作得心应手! 微软放弃Windows转向Linux,转而将建立在Linux内核之上 轻松掌握Linux系统基本命令大全,10个常用命令助你驾驭命令行 零基础也能轻松安装Linux系统,虚拟机10教您体验强大功能! 虚拟机装deepin,电脑焕然新生
RedHat虚拟机网络配置:9大详细分析,让你轻松上手轻松安装CentOS,EasyBCD教程上手Linux虚拟机必备:轻松安装VMwareTools网络安装Linux系统:多种方法全解析高效、易用的Linux笔记整理下载工具关于嵌入式Linux操作系统的原理和实现的详细分析Linux发行版在开机启动时拉起的服务进程中如何关闭?Linux内核通信方式详细解析:探讨八种实现方法CentOS如何安装中文输入法,让Linux操作系统更方便?有个发行版居然模仿起了Win11系统,还内置安卓虚拟机深入了解Linux内核开发,掌握基本技巧!Linux登录认证失败的8个问题,让你不再孤单一个如何记录ssh命令操作的小技巧-OpenSSH命令Linux轻松安装:VirtualBox虚拟机指南Fedora 25轻松安装智能fcitx输入法Linux系统在启动过程中都加载了哪些内容?Linux系统连接服务器:从入门到精通的技巧!Linux安装内核开发包及编译器,轻松开发!学习linux内核是需要一步一步内核的一些建议吧!Linux操作系统进程内核文件的设置文件是什么
Linux虚拟机使用教程:安装、配置、实战详解 解密Linux系统下的/dev目录:作用与意义 红帽Linux5.5下载指南:简单易懂的操作步骤 轻松掌握Linux系统服务命令,管理服务不再难 centos mysql 5.6 安装 CentOS安装MySQL 5.6,详细教程不容错过!-苏州安嘉 简单易懂的Linux RedHat安装教程,轻松搭建开发环境 Linux解压gz文件,快速高效的操作技巧! 北京周末嵌入式Linux培训,轻松掌握开发技能! 什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统 Linux基础知识:软链接文件命令模式总结 Jenkins流行的自动化工具,用于持续集成、交付和部署 轻松掌握Linux系统基本命令大全,10个常用命令助你驾驭命令行 高效稳定的开发环境,红帽Linux ISO下载指南 主机与虚拟机的互ping也是可以通的 轻松掌握!linux查看内网ip的必备命令 (通讯技术)Linux内核使用命令makemenuconfig进入内核配置界面 嵌入式Linux USB驱动开发与应用:8个详细讨论 修改默认端口请看:修改CentOS8默认远程端口:开启防火墙 传统监控技术现有系统行为监控的实现技术 CentOS上PythonGUI编程:掌握tkinter技巧
标签聚合
linux服务器 sudo centos 软件 虚拟机 linux社区 linux系统 文件目录 电脑 u盘启动
书籍
课程
技术群
技术干货大合集↓
  • 2023年3月 / 241篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 LinuxDown.com ALL RIGHTS RESERVED.

京ICP备14023444号-2