Vim教程

Vim教程

vim移动大法

hjkl

  1. 左移光标:h
  2. 下移光标:j
  3. 上移光标:k
  4. 右移光标:l

在单词之间飞舞

w/W移到下一个word/WORD开头。

e/E移动下一个word/WORD结尾。

b/B回到上一个word/WORD开头,可以理解为backward。

word指的是以非空白符分割的单词,WORD以空白符分割的单词。

行间搜索移动

同一行快速移动的方式其实是搜索一个字符并且移动到该字符

  • 使用f{char}可以移动到char字符上,t移动到char的前一个字符

  • 如果第一次没搜到,可以用分号;或者,继续搜索该行下一个或者上一个

  • 大写的F表示反过来搜索前面的字符

vim的水平移动

  • 如何快速移动到一行的行首或者行尾呢?
    • 0(数字0)移动到行首第一个字符,^移动到第一个非空白字符。
    • $移动到行尾,g_移动到行尾非空白符
    • 记住常用的0$就可以满足日常需求

vim的垂直移动

我们还可以在句子(sentence)和段落(paragraph)间移动(不常用)

  • 使用()在句子间移动,可以使用:help(查看帮助
  • 使用{}在段落之间移动

vim页面移动

翻页命令太多,2/8定律,记住常用的就能满足需求。

  • gg/G移动到文件开头或结尾,可以使用ctrl+o快速返回
  • H/M/L跳转到屏幕的开头(Head),中间(Middle),结尾(Lower)。
  • Ctrl+u/f上下翻页,(upword/forward)。zz把屏幕置为中间。

vim快速增删改查

vim增加字符

增加字符就是进入插入模式,开始敲键盘。

  • 进入插入模式编辑文本
  • 使用a/i/o进入插入模式
  • 使用A/I/O进入插入模式

vim快速删除

如何删除一个字符或者单词

  • vim在normal模式下使用x快速删除一个字符
  • 使用d(delete)配合文本对象快速删除一个单词daw(d around word)
  • dx都可以搭配数字来执行多次

vim快速修改

相比删除,更常用修改,一般是删除之后成我们期望的文本

  • 常用的有3个,r/c/s(replace,change,substitute)
  • normal模式下使用r可以替换一个字符。s替换并进入插入模式
  • 使用c配合文本对象,可以快速进行修改。
  • 使用C删除一整行并进入插入模式

vim查询

查询单词也是常用操作

  • 使用/或者?进行前向或者反向搜索
  • 使用n/N跳转到下一个或者上一个匹配
  • 使用*/#进行当前单词的前向或者后向匹配

vim如何搜索替换

substitute命令允许我们查找并替换掉文本,并且支持正则式

  • :[range]s[ubstitute]/{pattern}/{string}/[flags]
  • range表示范围,比如:10,20表示10-20行,%表示全部
  • pattern是要替换的模式,string是替换后的文本

替换标志

Flags有几个常用的标志

  • g(global)表示全局范围内执行
  • c(confirm)表示确认,可以确认或者拒绝修改
  • n(number)报告匹配到的次数而不替换,可以用来查询匹配次数,比如::% s/print//n查找print在文件中出现多少次

vim多文件操作

概念:

  • Buffer是指打开的一个文件的内存缓冲区
  • 窗口是Buffer可视化的分割区域
  • Tab可以组织窗口为一个工作区

Buffer-什么是缓冲区?

  • vim打开一个文件后会加载文件内容到缓冲区
  • 之后修改都是针对内存中的缓冲区,并不会直接保存到文件
  • 知道我们执行:w命令的时候才会把修改内容写入文件

Buffer切换

如何在buffer之间切换呢?

  • 使用:ls会列举当前缓冲区,然后使用:b n跳转到第n个缓冲区
  • :bpre/:bnext/:bfirst/:blast
  • 或者使用:b buffer_name加上Tab键补全来跳转

Windows窗口

窗口是可视化的分割额区域

  • ​ 一个缓冲区可以分割成多个窗口,每个窗口也可以打开不同的缓冲区
  • <Ctrl+w>s水平分割,<Ctrl+w>v垂直分割 。或者使用:sp/:vs

如何切换窗口

切换窗口的命令都是使用Ctrl+w作为前缀

命令 用途
<C-w>w 在窗口间循环切换
<C-w>h 切换到左边的窗口
<C-w>j 切换到下边的窗口
<C-w>k 切换到上边的窗口
<C-w>l 切换到右边的窗口

未完待续……