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

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

vim一共有4个模式:

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

正常模式

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

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

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

命令模式

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

可视模式

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

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

 

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

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

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

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

vs code vim的更多相关文章

  1. VS Code - Vim 插件自动切换输入法

    前言: 在使用 Linux 的过程中,vim 是一个不错的编辑器,以至于多数人将其用成了习惯,在没有 vim 的环境下还是习惯用 vim 的快捷键来编辑文本.所以便有开发者们为众多的 IDE 和文本编 ...

  2. a great tool for automatically formating your code!

    1. make your own format file at your project's root or file's folder. (The clang-format will automat ...

  3. vscode的环境变量code

    vscode的安装路径 本质:vscode的安装路径/Applications/Visual Studio Code.app/Contents/Resources/app/bin 下面有code可执行 ...

  4. Linux 下源码编译安装 vim 8.1

    前言 目前 linux 的各个发行版基本上都是带了一个 vi 编辑器的,而本文要说的 vim 编辑器对 vi 做了一些优化升级,更好用.当我们需要远程操作一台 linux 服务器的时候,只能使用命令行 ...

  5. [转载]函数getopt(),及其参数optind

    最近用到了getopt()这个函数,对它进行了一些了解.这篇博文还是写的非常清楚的.值得学习.最近在改进一个开源项目,希望自己能静下心好好分析代码. ------------------------- ...

  6. 部署phpmyadmin登录不进去

    Centos7.5 部署phpmyadmin登录不进去 问题:明明输对了账号和密码就是登录不进去,但是用ip就能登录 解决方法:换个域名 [root@web01 code]# vim /etc/ngi ...

  7. 函数getopt()及其参数optind -- (转)

    getopt被用来解析命令行选项参数 #include <unistd.h>       extern char *optarg;  //选项的参数指针       extern int ...

  8. LNMP(5)

    目录 一.实战 1.安装 安装nginx 数据库 php wordpress 2.三者建立联系 nginx和php建立联系 php与mariadb建立关系 二.数据分离 三.理论 静态和动态 web应 ...

  9. Rewrite基本概述

    Rewrite基本概述 什么是rewrite Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程. rewrite使用场景 1.地址跳转,用户访问www. ...

随机推荐

  1. IO模式和IO多路复用详解

    网络编程里常听到阻塞IO.非阻塞IO.同步IO.异步IO等概念,总听别人装13不如自己下来钻研一下.不过,搞清楚这些概念之前,还得先回顾一些基础的概念. 1 基础知识回顾 注意:咱们下面说的都是Lin ...

  2. Docker-Zerotier

    1. 拉取镜像 docker pull zerotier/zerotier-containerized 2. 生成并运行容器 docker run \ --name=zerotier-one \ -- ...

  3. C#网络编程学习(6)---序列化和反序列化

    1.什么是序列化和反序列化 当客户端和服务器进行远程连接时,互相可以发送各种类型的数据.但都要先把这些对象转换为字节序列,才能在网络上进行传输. 序列化:就是发送方 把对象转换为字节序列的过程. 反序 ...

  4. 10分钟了解什么是BFC

    BFC对于已经是一个耳熟能详的词汇了,而且在前端面试中,这题也是一个高频题.虽然我们平时在开发的时候知道如何利用BFC来解决问题,但是我们要具体说出BFC的概念和怎么触发BFC,我相信很多小伙伴也是和 ...

  5. myclipse运行web的一些问题

    一.修改项目访问路径 项目右键>properties(属性)>输入web搜索>双击web>修改Web-Content root内容即可 二. myeclipse中web项目不自 ...

  6. JMeter - 实时结果 - InfluxDB和Grafana - 第2部分 - 添加自定义字段

    我已经使用InfluxDB + Grafana来获取我的JMeter测试的实时结果.您可以在此处找到有关基本设置的更多详细信息.在本文中,让我们看看我们如何在InfluxDB测量中添加一些自定义字段, ...

  7. Javascript专题(三)b.各种轮播和细节分析--上下滚动轮播

    这一次,我们用原生JS实现上下滚动方式的轮播.顺带学习一下用JS来创建HTML元素. 上一次写的轮播是淡入淡出效果的,相对来说其实是比较简单的. github源码: 上下轮播源码-github A. ...

  8. BZOJ 1924 && Luogu P2403 [SDOI2010]所驼门王的宝藏 恶心建图+缩点DP

    记住:map一定要这么用: if(mp[x[i]+dx[j]].find(y[i]+dy[j])!=mp[x[i]+dx[j]].end()) add(i,mp[x[i]+dx[j]][y[i]+dy ...

  9. jquery——幻灯片(只动一屏)

    制作天天生鲜的幻灯片部分 贴了全部代码: main.html: <!DOCTYPE html> <html lang="en"> <head> ...

  10. SpringMVC(二)高级应用

    一.参数绑定-----集合类型 二.数据回显(例如提交表单失败了,数据没有丢失) 三.上传图片 四.json数据的交互 五.restful 支持 六.拦截器