Vim学习笔记-基本命令和操作

今天看到一句话,很喜欢:

学习vim就像学习钢琴一样,一旦学会,受益无穷。

刚好身边有朋友在学钢琴,我也凑热闹弹了几下。弹钢琴和编程还是有很多相通之处,不仅仅是按键盘的感觉和努力的练习。两者更有相似的节奏和韵律之美。

在开始之前,强烈建议打开vim自带的教程,花半个小时练习一遍

1
2
3
4
#默认语言
vimtutor
#中文
vimtutor zh

在后文中将用a表示按键a,用A表示大写的a,用^a表示ctrl+a

概述

vim主要有以下四种模式:

  • Normal模式,就是刚打开vim的默认模式,可以使用命令,在其他模式下按Esc可以回到该模式
  • Insert模式,插入模式,也就是一般的编辑模式,在Normal模式下按i/I/a/A/o/O可以进入该模式
  • Visual模式,可以选择文本,在Normal模式下按v/V/^v可以进入该模式
  • Replace模式,可以替换文本,在Normal模式下按R可以进入该模式

一般来说,你可以在左下角看到当前使用的模式。

基本操作

最基本的操作就是控制光标、插入和删除,其实文本编辑器的本质也就是如此。

vim使用hjkl来控制光标,分别是j下、k上、h左、l右。

  • i 在光标前面插入文本
  • I 在行首插入文本
  • a 在光标后面插入文本
  • A 在行尾插入文本
  • o 在下面新起一行插入
  • O 在上面新起一行插入
  • u 撤销上一步操作
  • ^r 重复上一步操作

:w可以保存文件;:q退出vim;:wq保存并退出vim;:q!不保存强制退出vim。

OK 现在你已经可以编辑和保存文件了,但是刚脱离鼠标难免感觉有点生硬。别急,vim作为编辑器之神自然有着超越鼠标效率的操作方式。

光标移动

  • 0 跳到行首
  • ^ 跳到本行第一个非空字符(^往往在程序中表示“前面”的意思)
  • $ 跳到行尾($往往在程序中表示“结尾”的意思)
  • 数字+G 跳到指定行
  • gg 跳到首行
  • G 跳到末行
  • w 跳到下个“单词的开头”(注意不是“下个单词”的开头,下同)
  • e 跳到下个“单词的结尾”
  • 数字+w/e 分别表示跳过指定个单词的开头/结尾
  • W/E 和上面的类似,但是它们的“单词”是指用blank隔开的字符串

现在开始有点感觉了吧,可以总结一下上面的规律,后面经常需要控制光标,也经常出现类似的命令规律。

增删改查

  • x 剪切一个字符(vim中所有的删除操作,其实都可以理解为剪切)
  • dd 剪切一行
  • d2d 剪切两行(还记得前面的规律么)
  • dw 剪切一个单词
  • d3w 剪切三个单词(也是类似规律)
  • d^ 删除到行首
  • d$ 删除到行尾(感受一下)
  • y 复制在Visual模式下选择的文本(可以根据d命令猜测一下其它y命令)
  • p 在当前位置之后粘贴
  • P 在当前位置之前粘贴(还记得o和O么)
  • r 替换一个字符
  • R 进入Replace模式替换多个字符,按Esc回到Normal模式
  • /str 查找字符串str,可以使用正则,n查找下一个,N查找上一个

小结

现在基本上已经可以自如地使用vim了,更高级的操作会在下次继续写。现在来小结一下vim命令操作的规律:

  • ^ 表示开始
  • $ 表示结束
  • g 表示跳
  • d 表示剪切
  • y 表示复制
  • p 表示粘贴
  • 小写往往表示“向后”
  • 大写往往表示“向前”
  • 数字往往表示“若干个”
  • 多种命令可以组合使用