vim的三个功能(学好vim一篇就够了-vi和vim的使用教程)
vim的三个功能(学好vim一篇就够了-vi和vim的使用教程)
2024-11-22 07:50:33  作者:掐住那份爱  网址:https://m.xinb2b.cn/tech/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-22中式婚礼和西式婚礼大家好,我们奇妙君,今天我们来聊下一个有趣的话题,那就是,中式婚礼和西式婚礼,你更喜欢哪一个?说道婚礼,那可是我们人生中大事,在举办婚礼的时候,有一道选择题摆在我们的面前,那就是究竟是选择洋气的西式婚。
  • 女孩子的叛逆期(有关女孩的叛逆期)
  • 2024-11-22有关女孩的叛逆期女孩叛逆期一般从10-12岁开始,叛逆的高峰年龄段是14岁,一般在16-20岁时候结束,因此女孩的叛逆期一般是6年左右,具体几年还是要看孩子的情况,以及家长对孩子的教育引导方式叛逆期是指青少年正处于心。
  • 婆媳间的调和剂(也是婆媳矛盾激化的助燃剂)
  • 2024-11-22也是婆媳矛盾激化的助燃剂文/仙仙有网友留言道:“我嫂子嫁到我们家差不多八年了,做饭的次数不超过五个指头(这个倒也不指望,只要不挑剔就好了),前几年衣服什么的都是我妈给她洗,这两年还好点,衣服、房间的地开始自己洗,自己拖了前两。
  • 金银菊花茶的好处(喝金银菊花茶有什么优点)
  • 2024-11-22喝金银菊花茶有什么优点增强抵抗力金银菊花茶可以加强机体白细胞的吞噬细菌效果,可以帮助加强人们的抵抗力金银花有着一种物质叫绿原酸能够促进人们身体代谢能力,从而提高人体的抵抗力护肝明目金银菊花茶对肝火旺、用眼过度导致的双眼干涩。
  • 海南大学第四轮专业评估(教育部最新公布)
  • 2024-11-22教育部最新公布近日,教育部发布了《教育部办公厅关于公布2021年度国家级和省级一流本科专业建设点名单的通知》(教高厅函〔2022〕14号),海南大学“金融学”等20个本科专业获批2021年度国家级一流本科专业建设点。
  • 脸上长斑怎么才能处理干净(脸上有斑怎么办)
  • 2024-11-22脸上有斑怎么办脸上有色斑影响美观,黄褐斑、老年斑、晒斑、雀斑等都让人烦恼,脸上有斑要怎么调理呢?1.保证睡眠时间熬夜、睡眠不足,会让皮肤衰老,色素沉着会更厉害保证8小时的睡眠时间,最好睡前做做轻柔运动,提高睡眠质量。
  • 重生类言情种田文(书单25本三月完结文)
  • 2024-11-22书单25本三月完结文1.《眷》作者:温昶2.《阿蓉(系统)》作者:朱女4.《狼崽子》作者:后紫5.《凤凰台》作者:怀愫6.《以嫡为贵》作者:木嬴7.《生姜红糖》作者:深海与月光8.《我的城池》作者:君约9.《四嫁》作者:。
  • 小苏打水怎么配(如何配呢)
  • 2024-11-22如何配呢配方:小苏打1.5克,柠檬酸1.5克,砂糖少许,果汁适量用一只干净的汽水瓶,把冷开水倒入瓶中,不要太满,大概占瓶子容积的70%,加一些砂糖和一定量的果汁然后放入1.5克小苏打,再放1.5克柠檬酸立即用。
  • 东北榛蘑生长在几月份(东北榛蘑长在哪里)
  • 2024-11-22东北榛蘑长在哪里东北榛蘑生长在7-8月份,一般生长在针阔叶树的干基部、代根、倒木以及埋在土中的枝条上榛蘑是一种主要分布在长白山山区林区千山区的榛柴岗上的菌类,其口感滑嫩,味道鲜美,被人们称为“山珍”、“东北第四宝”。
  • 新西兰有什么资格成发达国家(孤悬海外的农业国)
  • 2024-11-22孤悬海外的农业国新西兰能够成为世界发达国家,简直就是一个奇迹,新西兰被称为“地球上最后一片净土”,但实际上就是一座孤悬海外的岛国,它的西面是距离1600公里的澳大利亚,南边是距离2500公里的南极洲,东边是太平洋,这。
  • 拥抱春天的罗曼史动漫有几集(大家可以去看看)
  • 2024-11-22大家可以去看看两集OVA,冬之蝉是它的番外,共三话:《江户恋歌》、《虾夷战记》、《东京悲话》《拥抱春天的罗曼史》是新田祐克创作的耽美漫画该作品讲述一个发生在两个男人之间的故事做为AV男优的香藤洋二在一次电影试镜中喜。
  • 杭州美食攻略必去的地方(宁可不忌嘴也要吃的6道小吃)
  • 2024-11-22宁可不忌嘴也要吃的6道小吃杭州亚运会如火如荼的进行着,五湖四海的人相聚杭州,火爆的不仅有杭州亚运会和旅游景点、名胜古迹;还有各种美食小吃,每座城市都有自己的美食名片,杭州自然也不例外,来到杭州亚运会,怎能不食杭味?世人皆知“上。