原文地址:Vim实战指南(一):基础编辑命令

Introduction

Vim和Emacs作为两大神级文本编辑器各有利弊,本实战指南不加讨论的介绍Vim.
本实战指南不是教你按照Vim的键位图来编辑文本,而是从实战的角度,教你如何快速的用Vim来开发你的程序,节省你的开发时间。
为什么不用IDE?IDE固然强大,但并不是每一个环境都有现成的IDE可用,尤其是SSH远程计算机,就一个bash解析器可以使用,完全没有图形化界面。IDE的另一个弊端就是需要反复的安装升级更新。
当然IDE也有省事的时候,例如开发Java和C#,IDE自带的debug调试工具,可以非常便利的调试程序。
但是在类Unix系统上开发,我还是推荐学习熟练地使用Vim。何为熟练?完全舍弃你的鼠标,只使用键盘快速的进行开发即为熟练。
介绍Vim(全称是vi improved)之前,自然首先要从vi(全称是visual editor)开始。
对于初学者来说,vi的学习曲线可能比较陡峭。vi分为插入模式(insert mode)以及命令行模式(command mode)。

vi

在Unix/Linux的bash下,输入vi来编辑文本。注意,当你使用vi修改文本时,并不是真正的修改了存放在磁盘上的文件,而是修改了该文件在内存中的拷贝副本。只有当你显示的保存文件时,该内存中的副本才会被写入磁盘,并覆盖文件。

$ vi testfile

Command Mode

在命令行模式下,vi的常用命令可以按以下方式速记:

编辑类

i: insert,进入插入模式,新字符插入在光标前
a: append,进入编辑模式,新字符插入在光标后
c: change,修改
d: delete,删除
p: put,放置,可以将d删除的内容,放置在光标后面
y: yank,拷贝
r: replace,替换,和c不同在于,不必进入编辑模式即可替换
s: substitute,替代,和c不同在于,可以只修改一个字符而非整个字
x: x,和d不同在于,可以只删除一个字符而非整个字
~: change case,替换大小写
.: repeat,重复上一条命令
u: undo,撤销上一条命令
J: join,将两行合并为一行

保存退出类

q: quit,退出,如果有未保存的修改则无法退出
q!: force quit,强制退出
w: write edits to disk (save file),保存文件
w!: force write,强制保存
ZZ: quit and save edits,保存文件并退出
e!: revert your changes,回滚所有修改至原始状态

移动光标类

h: left,向左移动光标
j: down,向下移动光标
k: up,向下移动光标
l: right,向由移动光标
0: digit zero, move to beginning of line,移动到行首
$: move to end of line,移动到行尾
w: move by word,按字向后移动光标(包括标点)
W: move by large word,按字向后移动光标(忽略标点)
b: move backward by word,按字向前移动光标(包括标点)
B: move backward by large word,按字向前移动光标(忽略标点)
e: move to end of word,移动到字尾(包括标点)
E: move to large end of word,移动到字尾(忽略标点)
G: go to end of the file,移动到文件末尾最后一行

记住,vi对于命令区分大小写,I和i不是同一个命令。vi的命令不会显示在屏幕上,每一个命令后面不需要敲击回车(Enter)。
当你不知道你处于哪个模式下时,连续按3下Esc总能让你回到命令行模式。

组合命令

vi的便捷性在于你可以组合命令,通过数字+字母,或者字母+字母,甚至数字+字母+字母,可以将单命令构造出你想操作的组合命令

3h: 3 left,向左移动3次光标,等同于lll
3W: 3 move by large word,按3个字向后移动光标(忽略标点等)
1G: go to line 1,移动到文件首行
3G: go to line 3,移动到文件第三行
cw: change, move by word,修改后面的一个字
c3b: change, move backward by 3 words,修改前面的三个字
c$: change, move to end of line,修改光标后面整行文字
c0: change, move to beginning of line,修改光标之前整行文字
dw: delete word,删除字
d3w: delete 3 words,删除三个字
3p: put 3 times,重复放置3次

甚至你可以重复组合

cc: change line,修改整行
dd: delete line,删除整行
3dd: delete 3 line,删除三行
yy: yank line,拷贝整行

Summary

上述的基本命令一定要熟记于心,加强练习。不要觉得命令太多,仔细研究会发现命令之间有规律可循。只需要记住几个基础命令,通过场景构造便可以得到组合命令,这也是vi的便利以及魅力所在。

Vim实战指南(一):基础编辑命令相关推荐

  1. 转:Vim实战指南(二):光标移动技巧

    原文地址:Vim实战指南(二):光标移动技巧 Introduction 提升Vim/vi的打字效率的一个技巧就是快速移动光标.或许你觉得这不值一提,用hjkl或者上下左右也能移动,不过相信我,我下面要 ...

  2. Vim实战指南(二):光标移动技巧

    原文地址:Vim实战指南(二):光标移动技巧 Introduction 提升Vim/vi的打字效率的一个技巧就是快速移动光标.或许你觉得这不值一提,用hjkl或者上下左右也能移动,不过相信我,我下面要 ...

  3. Vim 上手指南【基础、中级】

    前言: vi 编辑器是所有 Unix 及 Linux 系统下标准的编辑器,他相当于 windows 系统中的记事本,但远比 Windows 下的记事本强大上百倍.是我们使用 Linux 系统不能缺少的 ...

  4. Apache Beam实战指南 | 玩转KafkaIO与Flink

    AI前线导读:本文是 Apache Beam实战指南系列文章 的第二篇内容,将重点介绍 Apache Beam与Flink的关系,对Beam框架中的KafkaIO和Flink源码进行剖析,并结合应用示 ...

  5. 《Windows PowerShell实战指南(第2版)》——3.4 使用帮助找命令

    本节书摘来自异步社区<Windows PowerShell实战指南(第2版)>一书中的第3章,第3.4节,作者:[美]Don Jones(道·琼斯) , Jeffery Hicks(杰弗瑞 ...

  6. 《内网安全攻防:渗透测试实战指南》读书笔记(一):内网渗透测试基础

    目录 前言 一.内网基础知识 1.工作组 2.域 3.活动目录 (1)活动目录的功能 (2)DC和AD区别 4.安全域的划分 (1)DMZ (2)内网 5.域中计算机的分类 6.域内权限 (1)组 ( ...

  7. 黑客零基础入门教程《Python安全攻防:渗透测试实战指南》极致经典,学完即可包吃包住

    前言 网络江湖,风起云涌,攻防博弈,从未间断,且愈演愈烈.从架构安全到被动纵深防御,再到主动防御.安全智能,直至进攻反制,皆直指安全的本质--攻防.未知攻,焉知防! 每一位网络安全从业者都有仗剑江湖的 ...

  8. 三分钟解决文档编辑难题-【文档编辑命令- cat echo vi/vim tail rmdir 】

    文档编辑命令集合 一.cat 命令详解 二.echo 命令详解 三.vi/vim文本编辑器详解 四.tail 命令详解 五.rmdir 命令详解 一.cat 命令详解 1. 简介: 在终端上上显示文件 ...

  9. 详解Linux系统Vi 和 Vim中正常模式、编辑模式、命令模式相互转化,以及vim命令使用

    详解Linux系统Vi 和 Vim中正常模式.编辑模式.命令模式相互转化 vi 和 vim 的基本介绍 vi 和 vim 的三种常见模式 正常模式 正常模式常用命令 插入模式/编辑模式 命令行模式 v ...

最新文章

  1. C++ while 循环与 do...while 循环
  2. 【简译】关于依赖反转原则、控制反转和依赖注入的抽象的初学者指南
  3. 当Android工程中提示你找不到头文件,但你已经设置头文件路径了
  4. 算法:程序设计之并查集
  5. Codeforces 365C - Matrix(hash + yy)
  6. 微型计算机接口期末,微机接口技术期末复习题及其答案 (2)
  7. rmmod无法卸载驱动_从hello world到LED驱动
  8. conda 安装本地包_export包本地安装以及R包被CRAN移除后如何继续安装
  9. 关于mac 和其它osx系统添加 微软雅黑字体 适用于安装字体报错或者安装失败
  10. yolov3-tiny
  11. 【滑动窗口协议模拟】
  12. 技术指南 | 理解零知识证明算法之Zk-stark
  13. 利用逆矩阵解线性方程组_经典Jacobi方法用于求解矩阵特征值
  14. Unable to read entire header; 80 bytes read; expected 512 bytes
  15. jquery 实现的省市区级联,无ajax
  16. Grasshopper脚本电池处理全站仪数据,生成建筑、线状地物和地形
  17. 多元回归分析(multiple regression)及其应用
  18. apicloud打包成apk
  19. Python 初学者趣味练习题汇编(共42题,中文版)
  20. 北大计算机楼口语考试,(转自未名)北大考点最全攻略及国外考试经验。。。...

热门文章

  1. HashMap存自定义对象为什么要重写 hashcode 和 equals 方法?
  2. 【Android基础】 Launch Mode
  3. (0046) iOS开发之View的frame和bounds之解惑
  4. python关闭浏览器、未过期的session_session.cookie_lifetime = 0时,为什么会话在浏览器关闭时不会过期?...
  5. 心态很容易受别人影响_心理学:为什么我越来越容易被别人和环境影响
  6. Swift之Delegate/闭包
  7. OpenSUSE 11 安装Qt5.0,失败,失败,失败,留个坑,以后来填,万一实现了呢
  8. JS数组转字符串和字符串转数组
  9. LeetCode171——Excel Sheet Column Number
  10. 网络安全导论课程-windows开启远程