【vim】几种模式的切换

很多初学者启动vim后,不知道怎么输入字符:按了半天字母,结果屏幕还是空的。

vim和记事本或WORD不一样,不是一打开后就可以输入文字,此时它处于正常模式。

vim一共有4个模式:

  • 正常模式 (Normal-mode) 
  • 插入模式 (Insert-mode)
  • 命令模式 (Command-mode)
  • 可视模式 (Visual-mode)

 

注意:方向键(上下左右那几个)可以在vim屏幕里跳来跳去。现在知道这个对
体验以下的模式有用。但是,通过方向箭来移动,是一个笨办法。。。讲到正常
模式时会说到更好的方法(我不会现在就告诉你h,j,k,l键分别对应左,下,上,右的:D)

正常模式

正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作。这时击键时,
一般的键/键组合会被当成功能键,而不会键入对应的字符。

在这个模式下,我们可能通过键盘在文本中跳来跳去,跳动的范围从小到大是字符、
单词、行、句子、段落和屏幕。

启动vim后默认位于正常模式。不论位于什么模式,按下<Esc>键(有时需要按两下)
都会进入正常模式。

插入模式

在正常模式中按下i, I, a, A等键(后面系列文章会详细介绍),会进入插入模式。
现在只用记住按i键会进行插入模式。插入模式中,击键时会写入相应的字符。

 

命令模式

在正常模式中,按下:(冒号)键,会进入命令模式。在命令模式中可以执行
一些输入并执行一些vim或插件提供的指令,就像在shell里一样。这些指令包括
设置环境、文件操作、调用某个功能等等。

 

可视模式

在正常模式按下v, V, <Ctrl>+v,可以进入可视模式。可视模式中的
操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候
会很方便。

 

根据需要灵活快速的切换各种模式非常有用。

配置回到正常模式的快捷键

由于不论在其他什么模式下,按一次或两次<Esc>键都可以回到正常模式,我们
可以想见,<Esc>键会经常用到。由于<Esc>键在标准qwert键盘的左上角,对
于左手小指不灵活的朋友来说,按起来比较不方便(我就是如此),因此在上一篇
中我们通过配置.vimrc把<Esc>映射成了按两下j键。

" 将ESC键映射为两次j键                                       
inoremap jj <Esc>  

j键正好在右手食指的基本键位上(一般上面还有个突起),用起来十分方便。
如果只让我保留一个vim设置的话,我会选择保留它。

 

--------------------------------------------------------------------------------

在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出,   返回到shell。   

    在末行模式下,输入命令   

    :w 

    Vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。

    [例6]   

    :w   newfile 

    此时Vi将把当前文件的内容保存到指定的newfile中,而原有文件保持不变。若newfile是一个已存在的文件,则Vi在显示窗口的状态行给出提示信息: 

    File   exists   (use   !   to   override) 

    此时,若用户真的希望用文件的当前内容替换newfile中原有内容,可使用命令 

    :w!   newfile 

    否则可选择另外的文件名来保存当前文件。 

    在末行模式下,输入命令   

    :q 

    系统退出Vi返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则Vi在显示窗口的最末行显示如下信息: 

    No   write   since   last   change   (use   !   to   overrides) 

    提示用户该文件被修改后没有保存,然后Vi并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出Vi时,可使用命令 

    :q! 

    Vi放弃所作修改而直接退到shell下。 

    在末行模式下,输入命令   

    :wq 

    Vi将先保存文件,然后退出Vi返回到shell。 

    在末行模式下,输入命令   

    :x 

    该命令的功能同命令模式下的ZZ命令功能相同

-------------------------------------------------------------------------------

 

参考原文链接:https://www.cnblogs.com/zzqcn/p/4619012.html

 

写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,文章可以转载,无需版权。希望尽自己的努力,做到更好,大家一起努力进步!

如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!

转载于:https://www.cnblogs.com/summary-2017/p/9375072.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构----顺序表与单链表(JAVA)

下面为学习顺序表和单链表的一些基本操作函数&#xff1a; 1 public class SeqList<T> extends Object {2 protected int n;3 protected Object[] element;4 5 public SeqList(int length) {6 this.element new Object[length];7 this.n 0…

SSH初体验系列--Hibernate--1--环境配置及demo

最近在学hibernate,常见的教程都是搭配mysql,因为公司本地电脑用的是pg,所以就尝试着做个pg的小demo. 自己也是边学边写&#xff0c;只当是加深印象.话不多说&#xff0c;直接开始; 一) 准备工作; 1) 本地安装postgresql ,这个不多说&#xff0c;自己去网上下载; 注: 本次使用的…

Qt学习:QAction系列详解

一、QAction类详解 【详细描述】 QAction类提供了抽象的用户界面action&#xff0c;这些action可以被放置在窗口部件中。 应用程序可以通过菜单&#xff0c;工具栏按钮以及键盘快捷键来调用通用的命令。由于用户期望每个命令都能以相同的方式执行&#xff0c;而不管命令所使用的…

H.264优秀特征

一、主要特性 1、H.264/AVC相对以前的编码方法&#xff0c;以MPEG-2为例&#xff0c;在图像内容预测方面提高编码效率&#xff0c;改善图像质量的主要特点如下&#xff1a; ● 可变块大小运动补偿&#xff1a; 选择运动补偿大小和形状比以前的标准更灵活&#xff0c;最小的…

Linux 文件系统 EXT4 的前世今生

在先前关于Linux文件系统的文章中&#xff0c;我写了一份说明书去介绍Linux文件系统&#xff0c;里面有一些高级的概念&#xff0c;比如说&#xff0c;一切都是文件。我很想去深入地讨论更多EXT文件系统的特性的信息。所以&#xff0c;首先让我们来回答这个问题&#xff1a;什么…

windows 添加开始菜单

C:\Users\用户名&#xff08;为你设置的电脑名称&#xff09;\AppData\Roaming\Microsoft\Windows\Start Menu C:\ProgramData\Microsoft\Windows\Start Menu 注&#xff1a;默认状态下AppData和ProgramData文件夹为隐藏状态&#xff0c;所以要查看需要先显示隐藏的文件。 具体…

awesome-go:很全的go语言资源合集

awesome-go:一个很全的go语言框架&#xff0c;库&#xff0c;软件合集 前面发过关于awsone-python, awsone django&#xff0c; flask。最近在学习golang&#xff0c;所以找到awsone-go 非常赞的go语言 Audio & 音乐类安全认证 & OAuthCUI数据库数据库驱动日期时间Emai…

zabbix监控系列(5)之通过trap模式监控网络设备

转载于:https://www.cnblogs.com/liaojiafa/p/7216749.html

struts2框架下的一个简单的ajax例子

举个例子 jsp页面&#xff1a; <% page language"java" import"java.util.*" pageEncoding"utf-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://"request.getServerName()":…

C语言的指针初始化特别注意一点

void func2(int *value) { *value 2; /// value为空指针&#xff0c;不能被取值&#xff0c;所以*value是错误的 } void func1() { int *p 0;//此处相当于PNULL func2(p); } / void func2(int *value) { *value 2; /// 正确} void func1() { int a0; int *p &…

小程序—九宫格心形拼图

说明 前几天在朋友圈看到好几次这种图片。 这种图片&#xff0c;是用九张图片拼成的一个心形。 感觉很有趣&#xff0c;就上网查了查怎么做&#xff0c;大部分的说法就是用美图秀秀的拼图功能来做&#xff0c; 在微信小程序中也有专门做心形拼图的小程序&#xff0c;我都试了试…

第二部分:志愿录取标准

第二部分&#xff1a;志愿录取标准 零、概况一、传统志愿录取过程二、平行志愿录取过程三、17年志愿录取过程 零、概况自1977年&#xff0c;恢复高考以来&#xff0c;高考录取标准&#xff0c;作为公平线&#xff0c;都是相当透明的。这部分分享&#xff0c;以录取标准&#xf…

100. Same Tree

Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value. 递归遍历左子树和右子树 /*** Definition for a binary tree node.* struct T…

关于RTP时间戳及多媒体通信同步的问题/H264关于RTP协议的实现

http://www.rosoo.net/a/201101/10776.html http://hi.baidu.com/fairygardenjoy/blog/item/e56c5cca95829e37b600c88e.html H264关于RTP协议的实现:http://www.rosoo.net/a/201108/14896.html RTP协议包头的格式&#xff1a; 10~16 Bit为PT域&#xff0c;指的就是负载类型…

程序员懂点经济学-股票投资

2019独角兽企业重金招聘Python工程师标准>>> ▍写在前面 前面有文章 关于程序员如何赚点小钱 讲过 合理的投资理财&#xff0c;可以了解一下. 再次建议&#xff0c;不要将全身家当投入股市&#xff0c;建议投入10~30%就好了. (不要拿输不起的钱来炒股&#xff0c;比…

彻底弄懂响应式设计中的em和rem

前一阵子在响应式开发中遇到了em和rem的问题&#xff0c;也上网搜过一些文章&#xff0c;篇幅很长&#xff0c;也没有仔细看&#xff0c;今天来总结一下。 rem是指&#xff1a;根元素&#xff08;root element&#xff0c;html&#xff09;的字体大小&#xff0c; em是指&#…

JAVA字符串

字符串 1. 字符串 1.1 字符串概述和特点 java.lang.String类代表字符串。 API当中说&#xff1a;Java 程序中的所有字符串字面值&#xff08;如 "abc" &#xff09;都作为此类的实例实现。 其实就是说&#xff1a;程序当中所有的双引号字符串&#xff0c;都是String类…

21分钟 MySQL 入门教程

转自 21分钟 MySQL 入门教程 一、MySQL的相关概念介绍二、Windows下MySQL的配置配置步骤MySQL服务的启动、停止与卸载三、MySQL脚本的基本组成四、MySQL中的数据类型五、使用MySQL数据库登录到MySQL创建一个数据库选择所要操作的数据库创建数据库表六、操作MySQL数据库向表中插…

node-sass报错解决方法

node-sass报错解决方法 node-sass报错解决方法 在Vue.js中&#xff0c;每一个vue文件都是一个组件&#xff0c;在.vue文件中可以将模板&#xff0c;脚本&#xff0c;样式写在一起&#xff0c;便于组织整个组件。在使用template&#xff0c;script时&#xff0c;编写css样式时&a…