vim的三个功能(学好vim一篇就够了-vi和vim的使用教程)
vim的三个功能(学好vim一篇就够了-vi和vim的使用教程)
2024-11-22 07:27:46  作者:掐住那份爱  网址:https://m.xinb2b.cn/life/ndk245894.html

它是一个老式的文字处理工具,但是功能很齐全,不仅是文本处理工具,还是一个程序编辑工具,就连官方网站也说vim是一个程序开发工具而不是文字处理软件,因为它包含了很多额外的功能,如:多文件编辑,区块复制等,这些功能让我们在进行配置文件修改的时候会更方便。今天就来一起学习一下vi和vim。

什么是 vim?

Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单来说, vi 是老式的文字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。


vi和vim的小差别

Linux 系统会内置 vi 文本编辑器。

Vim 具有程序编辑的能力,可以看做是 vi 的增强版本,主动的以字体颜色辨别语法的正确性,方便程序设计;代码补全,编译及错误跳转等方便编程的功能丰富,在程序员中被广泛地使用。

由于个别版本的linux默认只安装vi,所以你需要额外安装vim的软件包,另外vim在字符界面下不能输入中文,而在图形界面下能否输入中文则取决于系统中是否安装了中文输入法。

为什么要使用vim?

虽然在linux下的文本编辑器众多,这些工具都有各自的优点,但是有几点是其它编辑工具所不能比拟的

所有的类Unix系统都内建vi,其它的编辑工具则不一定,而vim相当于是vi的升级版很多软件的编辑界面都会调用vi,如后面提到的crontab、edquota等vim具有程序编辑能力,可以主动以字体颜色标识语法的正确性,方便代码编写程序简单,编辑速度非常快三种模式

由于vi/vim是一个全屏幕的文本编辑器,它工作在三种模式下:分别是命令模式、输入模式和末行模式。

可以分别从命令模式切换到输入模式和末行模式,也可以从末行模式或输入模式切换到命令模式,但是输入模式与末行模式之间不能互相切换。


命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

i 切换到输入模式,以输入字符。x 删除当前光标所在处的字符。: 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

字符按键以及Shift组合,输入字符ENTER,回车键,换行BACK SPACE,退格键,删除光标前一个字符DEL,删除键,删除光标后一个字符方向键,在文本中移动光标HOME/END,移动光标到行首/行尾Page Up/Page Down,上/下翻页Insert,切换光标为输入/替换模式,光标将变成竖线/下划线ESC,退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有:

1、:w? ?保存文件但不退出vi?2、:w file 将修改另外保存到file中,不退出vi?3、:w!? 强制保存,不推出vi4.、:wq 保存退出5、:wq! 强制保存文件,并退出vi 6、:q 不保存文件,退出vi7、:q!不保存文件,强制退出vi?8、:e! 放弃所有修改,从上次保存文件开始再编辑9、:wq? 保存文件并退出vi?

按ESC键可随时退出底线命令模式。

常用命令

打开文件,修改文件,保存退出,另存为文件。

vi /root/file.txt 打开文件路径a 修改Esc 冒号 w 保存 或者 ZZ 保存退出。:wq!强行保存退出,只有文件所有者,或者是root用户。:w 【保存】:w /root/service.bak 【另存为】

三种模式下切换

命令模式 :插入模式 a 或者 i 或者 o编辑模式 ESC

搜索关键字

Esc /关键字 回车n下一个 shift n 上一个

插入命令

a 【在光标后附加文本】A 【在本行行末附加文本】i 【在光标前插入文本】I 【在本行开始插入文本】o 【在光标下插入新行】O 【在光标上插入新行】

定位命令

向左:h或方向左键 【左移一个字符】10h 向左移动10个字符,到行首会停止向下:j或方向下 【下移一行】5j 向下移动5行,或者5下箭头向上:k/方向上 【向上一行】7k #向上移动7行向右:l/方向右键 【右边移一个字符】 6l #向右移动6个字符,到行末会停止不会换行$ 【移至行尾】0(零) 【移至行首】H 【移至屏幕上端】M 【移至屏幕中央】L 【移至屏幕中下端】W或w 【定位到当前句子的开始位置】E或e 【定位到当前这句话的最后位置】:set nu 【设置行号】:set nonu 【取消行号】gg 【到第一行】G 【到最后一行】nG或4gg 【到第n行】到第四行:n 【到第n行】Ctrl b 【在文件中向上移动一页(相当于 PageUp 键)】Ctrl f 【在文件中向下移动一页(相当于 PageDown 键)】

撤销命令

这个命令很常用,要记住:

u 【撤销上一步的操作】Ctrl r 【恢复上一步被撤销的操作】

贴士:比如修改nginx的配置之后保存不退出 :w 再 ctrl z将文档放在后台,用nignx -t ,或者重启nginx服务。如果有问题则快速回到文档编辑页面fg,再按u。保存

实例:

vi /etc/nginx/nginx.confi编辑再 :w 保存ctrl z[1] Stopped vi /etc/nginx/nginx.conf# jobs[1] Stopped vi /etc/nginx/nginx.conf# nginx -t 测试nginx文档是否有错误。nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful# fg 将后台程序进入前台

删除命令

x 【删除光标所在字符】nx 【删除光标所在处后n个字符】dd 【删除光标所在行,ndd删除n行】dG 【删除光标所在行到末尾的内容】D 【删除从光标所在处到行尾】:n1,n2d 【删除指定的行】 :10,20d 【删除第十行到第20行的内容】光标移到第一行,然后dG 【删除所有内容】

小贴士,一般在操作在本地编辑好的文档,全部复制,然后将服务器文档 dG全部删除,在粘贴新的文档。

复制剪切命令

yy、Y 【复制当前行】nyy、nY 【复制当前行一下n行】 dd 【剪切当前行】ndd 【剪切当前行一下n行】p、P 【粘贴在当前光标所在行下活行上】

替换和取消命令

r 【取代光标所在处字符】R 【从光标所在处开始替换字符,按Esc结束】u 【取消上一步操作】 Ctrl r 【恢复上一步被撤销的操作】

搜索和替换命令

/string 【向前搜索指定字符,搜索时请忽略大小写:set ic】n 【搜索指定字符串的下一个出现位置】 :%s/old/new/g 【全文替换指定字符】 :%s/^#//g 【去掉以#注释】:%s/^/#/g 【在全文开头添加#】 :n1,n2s/old/new/g 【在指定范围内替换指定字符串】:n1,n2s/^/#/g:s/str1/str2/ 【用字符串 str2 替换本行中首次出现的字符串 str1】g是全局参数,如果加上这个,你文中有多少就替换多少,如果不加,就只能一个一个的替换!fa(或fb) 【查询这行a字母的的地方(或b字母)】3fa 【在这行中查找a出现的第三个位置】

应用实例

导入其他文件内容 :r 文件名在vi执行命令 :! 命令 定义快捷键: :map 快捷键 触发命令 实例: :map ^P I# <ESC> 【键盘按键实现^P:ctrl v ctrl p或者 ctrl v p 】 :map ^B 0x连续注释: :n1,n2s/^/#/g :n1,n2s/^/#//g :n1,n2s/^/\/\//g替换: :ab sammail samlee@163.com

显示行号

:set nu 显示行号(注意前面输入冒号进入底行命令模式):set nonu 不显示行号

环境变量与记录

.viminfo:记录用户的行为,之前编辑过的文件光标在什么位置,在这个文件中进行过什么操作等,自动建立

.vimrc:定义vim的默认设置,如是否显示行号等,需要手动生成

命令

说明

:set nu /:set nonu

就是设定与取消行号!

:set hlsearch /:set nohlsearch

搜索时是否高亮显示。默认值是 hlsearch

:set autoindent :set noautoindent

是否自动缩排?autoindent 就是自动缩排。

:set backup/:set nobackup

是否自动备份,一般是 nobackup 的, 如果设定 backup 的话,那么当你更动任何一个档案时,则源文件会被另存成一个档名为 filename~ 的档案。

:set ruler/:set noruler

是否显示右下角的一些状态栏说明

:set showmode/:set noshowmode

是否显示左下角的状态栏。

:set backspace=(012)

一般来说, 如果我们按下 i 进入编辑模式后,可以利用backspace来删除任意字符的。 但是,某些版本则不许如此。这时就可以使用这个设置2 可以删除任意;0 或 1 仅可删除刚刚输入内容

:set all

显示目前所有的环境变量设定值。

:set

显示与系统默认值不同的设置, 用户修改过的

:syntax on :syntax off

是否显示颜色

:set bg=dark :set bg=light

可用以显示不同的颜色色调,预设是『 light 』。如果你常常发现批注的字体深蓝色实在很不容易看, 那么这里可以设定为 dark 喔!试看看,会有不同的样式呢!

密码设置与取消

加密

vim filename:XWarning: Using a weak encryption method; see :help 'cm' Enter encryption key: 输入密码Enter encryption key: ******Enter same key again: ******保存(否则不加密) # cat filename VimCrypt~01!i# vim filename (不能用vi)Need encryption key for "filename"Warning: Using a weak encryption method; see :help 'cm'Enter encryption key:

取消密码

vim filename--->输入正确密码--->:X--->空密码--->保存vim filename--->:set key= --->保存注意:不要对系统文件进行加密的操作

其他命令

J(大写):将光标所在行下一行合并到该行,中间有空格间隔,光标移动到该空格处,要想达到在写字板中”[end] [del]“的效果(即光标移动到行末,然后del使下一行提到该行),可以用Jx组合命令。u(小写):撤销上一次所做的操作。多次使用 u 命令会一步一步依次撤销之前做过的操作(在一次切换到文本输入模式中输入的所有文本算一次操作)。U(大写):一次性撤销自上次移动到当前行以来做过的所有操作,再使用一次 U 命令则撤销之前的 U 命令所做的操作,恢复被撤销的内容。所以U命令是不能一直撤销的,相当于只能撤销一步,再使用就是恢复了。[ctrl] r:按住ctrl键和r,类似快捷键的用法,是恢复操作,与命令u(小写)对应,可以在多次使用u命令撤销多步后,用该命令多次恢复至最新。.(小数点):重复执行上一次的命令,注意和恢复不一样。例如重复粘贴,重复删除。

字符差异

由于linux和windows的系统差异,它们针对于文件的中的一些特殊符号表示方式也是不同的,比如说用来表示换行的符号等,如

# cat -A hello-linux.txthello$$# cat -A hello-windows.txthello^M$^M$

如果这种文件是从windows拷贝到linux的一本小说的话,基本没什么问题,但是如果是一个我们需要执行指定工作的shell脚本就会出现问题,因为linux不认识这种符号的含义,就会导致shell脚本无法执行(踩坑了很多次,都是在win编辑txt文本,再后缀名sh,导致莫名的报错)。所以此时我们就要对这种文件进行处理

# unix2dos [-kn] file [newfile]选项与参数:-k :保留文件原本的 mtime 时间格式-n :保留旧文件,将转换后的内容输出到新文件,如: dos2unix -n old new

还有一种方式就是直接在linux下编辑文件,再下载到win系统下使用IDE编辑器编辑开发,再回到linux全部粘贴。

总结

以上的常用命令和操作都是基于vim的基本原理形成的,vim的命令很强大,尤其底行命令模式甚至可以类似于一个小型的脚本语言。

如果有遗漏,欢迎留言告知,谢谢!

vim官网有一个经典的全键位图,如下


  • 关于李白表白的诗(李白对美女强行表白)
  • 2024-11-23李白对美女强行表白​一说到诗人这个伟大的职业,想必大家脑海中第一时间便想起了唐朝的浪漫诗人李白了,对于诗仙李白的诗词,可能连小孩子都会背上几句,那有些小伙伴也许想知道,如此一位文武双全的诗人,他在现实中又是如何的呢?​。
  • 鸟类身上有哪些虫子(自然界中的飞行捕虫神器)
  • 2024-11-23自然界中的飞行捕虫神器燕子和桃花、杨柳结下了不解之缘每当春天的时候,气候转暖,树木披上绿色的新衣,这些鸟类就长途跋涉,一路上历经艰难险阻来到中国,当我们看到这种鸟类的时候,似乎就找到了春天的气息燕子,一种与人类关系极为紧密。
  • 谢霆锋和张柏芝离婚为什么(谢霆锋和张柏芝离婚)
  • 2024-11-23谢霆锋和张柏芝离婚没有谁冤枉陈冠希,也没谁把谢张的离婚直接算在陈冠希的头上,只是有部分人在攻击张柏芝的时候经常提陈而已就陈冠希来说,在张柏芝婚后就该是没有找过她的,所以在这点来说是冤枉了而谢张会离跟他也并不是就无关,至。
  • 咖啡有什么坏处和好处(咖啡的好处居然这么多)
  • 2024-11-23咖啡的好处居然这么多曾经网上看到过这样一句话:比喝咖啡更能提神的是:不小心将咖啡倒在了白衬衫上不知你有没有这样的感觉盛夏来袭,犯困也跟着来了在办公室喝一杯咖啡,开启一天的工作,也何尝不是一种乐趣但是咖啡不仅仅只有提神的作。
  • 下午三点属于什么时辰
  • 2024-11-23下午三点属于什么时辰下午三点属于十二时辰中的申时,具体时辰划分如下:1、【子时】夜半,又名子夜、中夜:十二时辰的第一个时辰(23时至01时)2、【丑时】鸡鸣,又名荒鸡:十二时辰的第二个时辰(01时至03时)3、【寅时】平。
  • 体型分为哪几种如何判断(绝大多数人都不知道)
  • 2024-11-23绝大多数人都不知道怎么变时髦这件事,我们要去关注那些以肉眼可见的速度在进化的女明星闷声洞悉实践模仿,无往而不利提升的基础是什么?always充分了解自己的硬件条件传统的身材分类法强调对称,根据上下半身的相对体积把我们的。
  • 微信二维码怎么换成默认样式(微信个人二维码能换风格了)
  • 2024-11-23微信个人二维码能换风格了近日,微信面向iOS用户推送了8.0.27正式版,虽然更新日志依然是简单几个字“解决了一些已知问题”,但实际上还是有不少变化而在这些变化中,最惹人关注的就是新版的个人名片二维码,终于把十年前的背景风格。
  • 巴菲特选股三个标准(巴菲特怎么选股)
  • 2024-11-23巴菲特怎么选股毛利率这是毛利比上销售收入,换句话说卖出东西后,你赚了多少?这个指标反应的是一个公司的赚钱能力,如果毛利高,那就意味着这家公司躺着都赚钱巴菲特觉得,好的公司怎么毛利率也得超过40%,当然越高越好比如A。
  • 蜜枣豆沙粽子的做法(蜜枣豆沙粽子好吃做法)
  • 2024-11-23蜜枣豆沙粽子好吃做法准备食材,糯米先清洗干净,用凉水泡2小时备用将粽叶清洗干净用开水烫一下备用准备好豆沙、蜜枣准备好棉线绳取一到两片粽叶,根据粽叶大小来选折出一个三角放一勺米再放豆沙或蜜枣再放一勺米用手压实米粽叶从上往下。
  • 怎么用纸做飞船模型(具体怎么操作)
  • 2024-11-23具体怎么操作将两头对准中线折回将这好的纸继续对准中线再折一次然后,在顶头留大概四厘米的长度,将至向外翻转我们现在讲两边对折将直角边向里对折一下,然后展开再将直角边向里对折一下,这次对折比上一次的小一点,然后展开翻。
  • 橄榄油与茶油哪个更好(东方橄榄油)
  • 2024-11-23东方橄榄油茶油是我国特有的木本油脂,其脂肪酸组成与世界上公认的最好的植物油脂橄榄油相似,有东方橄榄油之美称,茶油中含有多种功能性成分,长期食用,具有明显的预防心血管硬化、降血压、降血脂等功效,和防癌抗癌的特。