热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

困扰无数人的LinuxVim退出方法,原来这么简单?,Go语言社区,Golang程序员人脉社

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

来源 | 异步

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进阶实战演练,迎来升华

以上的基本操作你都学到了吗?熟练之后我们就可以结合专业教程进行Vim8的实战演练了。

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

购买请到异步社区

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

作为全面介绍Vim使用方法的教程,本书介绍了各种常用的文本编辑方法和程序设计中的实用操作,深入Vim内部的数据结构和VimScript脚本编程,内容详实。

本书基于Vim 8平台,介绍了前沿分支Neovim,还推荐了更先进的Oni编辑器,兼容并包,集Vim社区典型使用经验和发展趋势于一体。

本书适用于初级、中级和高级程序员。本书将介绍如何高效地将Vim应用于日常工作流程的方方面面。虽然书中涉及了Python,但Python或Vim的经验并不是阅读本书所必需的。

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

下滑看目录:

● 第1章

开始Vim之旅。

介绍基本概念。

● 第2章,

高级编辑和文本浏览。

介绍了光标移动方法和更复杂的编辑操作,另外,还介绍了几种插件。

● 第3章

使用先导键——插件管理。

介绍了模式、键盘映射和插件管理。

● 第4章

理解文本。

介绍如何基于语义地使用代码库,并在代码库中浏览文件。

● 第5章

构建、测试和执行。

介绍如何在编辑器内外运行代码。

● 第6章

用正则表达式和宏来重构代码,深入介绍代码重构操作。

● 第7章

定制自己的Vim。

讨论了如何进一步定制个人的Vim工作流程。

● 第8章

卓尔不凡的Vimscript。

深入介绍了Vim提供的强大脚本语言。

● 第9章

Neovim。

推介了一种新的Vim变体。

● 第10章

还要学些什么。

本章为读者提供了一些建议以供参考,并推荐了一些读者可能会感兴趣的资源站点。

-END-


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • python怎么关闭红线提示_手把手教你安装Python开发环境
    Python在window环境下安装图解1、下载最新版本Windows的Python开发64位安装包目前最新版本是Python-3.7.22、下载完成后,获取安装包& ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 本文介绍了在Python中使用getpass模块隐藏密码输入的方法,以保护用户的密码不被其他人员看到。同时还提到了在PyCharm中运行该命令无效的问题,需要在terminal中运行。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • PL2303HXD电路图(USB转UART)介绍及应用
    本文介绍了PL2303HXD电路图(USB转UART)的特性和应用,该电路图可以实现RS232和USB信号的转换,方便嵌入到手持设备中。PL2303HXD作为USB/RS232双向转换器,可以将USB数据转换为RS232信息流格式发送给外设,并将RS232外设的数据转换为USB数据格式传送回主机。通过利用USB块传输模式和自动流量控制,PL2303HXD能够实现更高的数据传输吞吐量比传统的UART端口。 ... [详细]
  • 目前Miniconda3的主要版本已经不支持python3.6,以Windows为例,在官网Miniconda—Condadocumentation中只有python3.7 ... [详细]
  • scrcpy通过adb调试的方式来将手机屏幕投到电脑上,并可以通过电脑控制您的Android设备。它可以通过USB连接,也可以通过Wifi连接(类似于隔空投屏),而且不需要任何ro ... [详细]
  • 本文摘自JavaGuide。1、简单易学;2、面向对象(封装,继承,多态);3、平台无关性(Java虚拟机实现平台无关性);4、可靠性;5、安全性;6、支持多线程(C++语言没有内 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • gitlab重置password
    ruby没怎么学,自己搭建的gitlab的rootpassword又忘了。幸好看见此帖子,试验okhttp:roland.kierkels.netgitreset-your-git ... [详细]
  • 很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意 ... [详细]
  • 原因:在vm上装7.9到sp3,打补丁到1644,再往后别打了,就打就打不开终端了,这个是java安全问题,以下只是终端的一些命令,记录一下:在系统下查看当前的串口:lsdev-C ... [详细]
author-avatar
梦魇心芽_932
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有