0. 前言

我打算写一个系列文章,用来详细介绍vim的使用技巧,我会从头开始,从vim入门,到vim的各种配置,这是第一篇

1. vim 的三种模式

  1. Normal mode (正常模式)
  2. Inster mode (编辑模式)
  3. command mode (命令行模式)
  • 在直接进入 vim 的时候,默认是 Normal mode 模式。
  • 如果需要进行编辑,需要进入 instert mode,即编辑模式,输入小写「i」可以进入编辑模式
  • 从编辑模式退回到正常模式的时候,只需要按 exc 键即可。
  • 命令行模式则是在你需要进行保存,使用脚本等操作的时候需要的模式,进入方法为在正常模式下输入 「:」

2. vim 的使用

  • 如果没有 vim,使用以下命令来下载
sudo pacman -S neovim
  • 注:neovim 也是 vim 的一种衍生版本,只不过更好用,唯一的区别就是启动命令的不同,分别是 vim 和 nvim
  • 使用 nvim 文件名 即可打开文件,如果文件并不存在的话,就会创建文件

3. 编辑模式

  • 在正常模式下输入 i ,进入编辑模式。

  • 在编辑模式下,编辑完成内容之后,如果需要退出的话,需要进入命令行模式,输入「:」wq,即可选择保存退出。

  • 需要注意的地方是:如果你修改了文件,那么你有两种处理方式

  1. 保存并退出 - wq
  2. 不保存退出 - q!
  • 如果选择的是不保存退出,并且是使用 nvim 创建的文件,那么在不保存退出的情况下,是不会创建这个文件的(因为文件没有内容)
  • 也就是说,在使用 vim 创建文件的时候,在退出的时候,里面必须有内容,这样的话才会创建文件。

2. 正常模式

2.1 导航

  • 在 vim 中,导航键可以使用小键盘的上下左右,但是并不建议使用它,因为会影响效率
  • vim 中导航键为 :H J K L(移动光标的操作需要进入正常模式)
    • K: 上
    • J: 下
    • H:左
    • L:右

2.2 插入

  • i 会插入到光标的左侧,如果需要插入的光标的右侧,输入「a」
  • 相对的,如果需要插入光标到最前面的位置,使用大写的 「i」或者使用快捷键 「shift + i」
  • 在最后面插入光标,则使用大写的「a」或者快捷键「shift + a」
  • 如果在行首,并不想移动到行尾再换行,则可以使用「o」来直接新增下一行,大写的「O」可以新增上一行
  • 使用大写的「G」可以将光标移动到文件末尾

2.3 复制和粘贴

  • yy:复制当前所在的行
  • p:粘贴所复制的内容 (粘贴可以指定函数,如 3p 代表粘贴 3 行)

2.4 删除

  • dd: 删除所在的一整行
  • dG: 删除光标后面的所有内容
  • dw:删除光标左边的字符
  • cw:删除当前字符并进入编辑模式
  • Ci{ : 删除 「{ } 」中的内容,小括号和中括号使用的时候,只需要替换掉括号的符号

2.5 跳转

  • W: 跳到每个单词的开头,会把括号当为一个单词

3. 命令行模式

  • 在命令行模式中,输入「/ 」可以进入搜索模式, 搜索内容会以高亮显示。

  • 替换: :%s /旧字符/新字符/g ,g 代表全局替换

01. vim入门的更多相关文章

  1. Redis 笔记 01:入门篇

    Redis 笔记 01:入门篇 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...

  2. Vim入门基础

    公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础.在网上搜集各方资料,按照自己的框架整理一份Vim入门基础教程,分享出来.特点是偏向基础,但对入门者来说足够全面 ...

  3. Ubuntu学习小结(二)PostgreSQL的使用,进程的查看关闭,编辑器之神Vim入门

    距离上次发布文章已经过去了很久.在过去的半年中,虽然写的代码不多,但是在接触了计算机一些其他的知识,包括数据库.网络之后,感觉能够融会贯通,写代码水平又有了一定的提高.接下来,将会发表几篇文章,简单介 ...

  4. Vim入门操作整理

    根据小甲鱼的vim入门视频整理,供查阅 移动指令:上下左右 k j h l 翻页: ctrl + b  ctrl + f 保存退出:ZZ 普通模式:vim fileName 首次进入的就是普通模式 从 ...

  5. Vim 入门教程

    Vim 入门教程 转载请保留以上信息 Vim 的教程相对比较零散,系统的教程比较少,我也阅读过不少教程,走过很 多弯路.借着 Vim-china 组织组建这一契机,整理下自己学习过的内容, 分享给大家 ...

  6. vim入门过程

    先下载了一本VIM的用户手册. 看到可以使用vimtutor(VIM的入门教程,很不错,由浅入深)作为入门. Unix系统中,请在命令行输入:vimtutor,进入教程. MS-Windows系统中, ...

  7. [vim] vim入门

    1. 概述 工欲善其事 必先利其器.vim是非常好用的文本编辑器,可以将它看作是vi的进阶.绝大多数Unix系统都会内置vi编辑器,vi是文本编辑器,vim是程序编辑器.相比vi,它可以根据文件的类型 ...

  8. Vim入门学习之Vim解析

    Vim解析... ----------------------- 首先你要会从官网上下载你想要的Vim版本:   官网: http://www.vim.org/==================== ...

  9. SpringMVC札集(01)——SpringMVC入门完整详细示例(上)

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  10. 01 Linux入门介绍

    一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以及游戏支持度不足 L ...

随机推荐

  1. 页面-vue

    1.安装node.js 语言-页面-开发环境-node.js,webpack,安装 - hehehenhen - 博客园 (cnblogs.com) 2.安装webpack 语言-页面-开发-webp ...

  2. (jmeter笔记)jmeter打印日志

    Bean Shell常用内置变量   JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.l ...

  3. gin 使用gorilla 关闭 websocket 时候设置close code 和message

    gin 使用gorilla 时建立websocket的教程很多博客都有写,但是很少有人讲关闭websocket时自定义 close code 和message.主要是使用:websocket.Form ...

  4. 单文件WSDL,非模块化

    最近在使用CXF做WebService Sever端,接口与实现类不在一个包下. 实现类如下: 1 @WebService(serviceName = "Demo" 2 , tar ...

  5. 「SOL」序列 (LOJ/NOI2019)

    准备写新博客的时候发现自己草稿箱里还有一篇咕了十几天的题解 思路挂在了费用流之前-- 题面 > Link LOJ #3158 解析 这道题的本质是一个二分图带权匹配的问题,一个经典的做法是直接做 ...

  6. 第一课 基本的DOS命令

    常见的DOS命令 1.#切换盘符 F: 2.#查看当前目录下所有文件 dir 3.#切换目录 cd change directory cd ..返回上一级 4.#清理屏幕 cls {clear scr ...

  7. 如何避免reblance

    reblance是什么? 什么时候会发生rebalnce? 如何尽量避免这些情况? 若不可避免的要发生reblance?怎么尽量减少影响? reblance是什么? Reblance是Kafka协调者 ...

  8. 48. Rotate Image via java

    need to use scratch to find the pattern class Solution { public void rotate(int[][] matrix) { int n= ...

  9. STM32F103RCT6驱动AD7705(cubeide)

    首先在cubeide上配置spi,使用spi1,由于正点开发板上的nr24l01与ad7705正好相同,因此根据引脚配置PA1为DRDY,PC4为CS片选 根据手册上所写,配置寄存器初始化 uint8 ...

  10. AdaptSegeNet 代码分析

    先G后D 训练 G: --S:pred1, pred2 = model(images) :  loss_seg1 = loss_calc(pred1, labels) :   loss.backwar ...