您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

困扰无数人的Linux Vim退出方法,原来这么简单?

时间:2019-12-25 10:42:58  来源:  作者:

Vim作为使用最广泛的文本编辑器之一,在编程的世界中,一直流传着一个关于它的神秘问题,知道答案的人寥寥无几,却又难以启齿,那就是:怎么退出Vim?

据说,很多程序员就算退休了,也没有退出Vim,比如这位:

困扰无数人的Linux Vim退出方法,原来这么简单?

 

他已经使用Vim两年了,为什么呢?因为他不知道怎么退出来。

而另一部分程序员则表示:很简单,我重新卖了一台电脑就搞定了。

很多人打开Vim却不知道怎么退出,这可不是开玩笑,而是一个尴尬的事实。

在知名IT技术问答网站Stack Overflow上,“How to exit the Vim editor?”这个问题的总浏览量目前已经超过200万,无数的程序员前来探讨如何退出Vim。

困扰无数人的Linux Vim退出方法,原来这么简单?

 

 

而在百度经验上,类似的问题在一年里也有超过35万的浏览量。 

困扰无数人的Linux Vim退出方法,原来这么简单?

 

 

下面我们来看看这个问题下面的回答,这条回答准确无误,操作规范,却又让无数使用Vim的程序员无地自容。(该回答翻译自Stack Overflow)

 

如何退出Vim?

 

点击Esc键进入“普通模式”。然后,您可以键入:以进入“命令行模式”。冒号(:)将出现在屏幕底部,您可以键入以下命令之一。要执行命令,请Enter按键。

· :q 退出(的缩写:quit)

· :q!不保存即退出(的缩写:quit!)

· :wq 写和退出

· :wq! 即使文件只有读权限也可以写并退出(如果文件没有写权限:强制写)

· :x 写入并退出(类似于:wq,但仅在有更改时写入)

· :exit写入并退出(与相同:x)

· :qa全部退出(的缩写:quitall)

· :cq 退出而不保存并使Vim返回非零错误(即退出时出现错误)

也可以通过输入ZZ保存并退出(与:x)或ZQ直接退出(与:q!)来直接从“普通模式”退出Vim

 

如今Vim已经更新到Vim8,“怎么退出Vim”早已经成为程序员之间的一个热梗,更多的程序员是表面上不会退出,背地里俨然已经自学成Vim大佬。

既然前面我们已经学会了如何退出Vim这个重点,那么我们就可以开始深入学习Vim的旅程了。

 

在Cygwin中感受类UNIX操作体验

 

Cygwin是windows的类UNIX环境,它提供了一种命令行界面,致力于将强大的UNIX Shell命令行以及相关的支撑工具带到Windows操作系统中。

Cygwin的应用程序可能叫作Cygwin64 Terminal或Cygwin Termianl,这取决于操作系统的类型。找到其图标,如图所示。

 

困扰无数人的Linux Vim退出方法,原来这么简单?

 

 

打开它,可以看到如下的命令行提示界面,linux用户应该相当熟悉了。

困扰无数人的Linux Vim退出方法,原来这么简单?

 

 

困扰无数人的Linux Vim退出方法,原来这么简单?

 

 

Cygwin是在Windows环境下体验Linux系统Shell命令的一种方式,这意味着,一旦选择使用Cygwin时,就需要遵循Linux系统中的指令和约定。

同时,还需要注意Windows样式的换行符和Linux样式的换行符,因为Windows和Linux处理换行的方式不同。如果在Vim中遇到^M字符无法识别,则对相应的文件执行dos2unix命令就可以解决。

 

Vim的基本操作

 

1

打开文件

首先,使用者可以打开自己最喜欢的命令行终端(Linux和macOS系统中是终端,Windows系统中为Cygwin),跟随下面的步骤来编写一个非常基础的Python程序。

先从一个简单的开平方根计算器开始,运行如下命令。

$vimanimal_farm.py

这会打开一个名为animal_farm.py的文件。如果此文件存在,则读者会看到它的内容;如果文件不存在,则得到一个空白界面

困扰无数人的Linux Vim退出方法,原来这么简单?

 

 

Vim的底部状态中显示了文件名,旁边还有[New File]字样,表示这是一个新文件。现在读者已经用Vim打开了第一个文件。

如果之前已经打开过Vim,则可以用如下命令加载一个文件(别忘了命令后面要按Enter键)。

$vimanimal_farm.py

这有可能是你在Vim中运行的第一条命令。输入冒号字符:表示进入命令行模式,在此模式下输入的文字会被Vim解析为命令。按Enter键可以结束命令,通过Vim命令可以执行很多复杂的操作,包括访问系统的命令行。命令:e表示编辑(edit)。

2

修改文字

默认情况下,Vim处于正常模式(normal mode),即每个键都对应于某个命令。

输入命令i将使Vim进入插入模式(insert mode)。它会在底部的状态栏中显示-- INSERT --字样

插入模式下的行为和在其他无模式编辑器中相似。正常情况下,除添加新文本之外,不需要花太多篇幅介绍插入模式。

现在输入如下所示的代码,这就是之前提到的Python程序。

困扰无数人的Linux Vim退出方法,原来这么简单?

 

 

按下Esc键可以返回到Vim的正常模式。这时,状态栏上的-- INSERT --字样消失,可以继续在Vim中输入命令。

上述代码并不是Python编程的最佳实践,这里只是用它来展示Vim的一些功能。

3

保存和关闭文件

保存文件可执行命令:w。

注意,在输入命令后按下Enter键。

:w表示写(write)的意思。

:w命令后面也可以接一个文件名,并另存为新文件。修改后的内容会保存到这个新文件中去,当前文件也变成了这个新文件。尝试执行命令:w animal_farm2.py。

退出Vim,并检查一下文件是否已经生成。命令:q表示退出(quit)的意思。也可以将写和退出这两个命令组合为:wq,表示先保存后退出。

退出Vim之后又回到了系统的命令行,可以检查一下当前目录中的内容是否发生了变化,如下所示:

$ls$python3animal_farm.py$python3animal_farm.pycatdogsheep

 

下图中显示了这3条命令的输出结果。

困扰无数人的Linux Vim退出方法,原来这么简单?

 

 

Vim进阶实战演练,迎来升华

 

以上的基本操作你都学到了吗?



Tags:Linux Vim   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1. 前言本文主要讲解如何使用vim加密文本文件,通过设置保护密码达到保护文本文件的目的。流行的文本编辑器Vim带有一个内置特性,可以使用密码加密文件。Vim使用像Blowfish这样...【详细内容】
2020-06-25  Tags: Linux Vim  点击:(66)  评论:(0)  加入收藏
Vim作为使用最广泛的文本编辑器之一,在编程的世界中,一直流传着一个关于它的神秘问题,知道答案的人寥寥无几,却又难以启齿,那就是:怎么退出Vim?据说,很多程序员就算退休了,也没有退出...【详细内容】
2019-12-25  Tags: Linux Vim  点击:(117)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(14)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(22)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(25)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(40)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(28)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(19)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(29)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条