Vim基本命令
[Ctrl]+[f] 屏幕向下移动 一页,相当于 Page Down
[Ctrl]+[b] 屏幕向上移动一页,相当于 Page Up
0(数字) 移动到这一列最前面字符处
$ 光标移动到最后面字符处
H 光标移动到屏幕最上方那一列的第一个字符(不是整篇文档的第一列)
M 光标移动到屏幕的中央那一列的第一个字符
L 光标移动到屏幕的中央那一列的第一个字符(不是整篇文档的最后一列)
G 光标移动到最后一列 (功能和 L 相似)
/jackie 向光标之下寻找名为 jackie 的字符串
?jackie 向光标之寻找名为 jackie 的字符串
d1G 删除光标所在到第一列的所有数据
dG 删除光标所在到最后一列的所有数据
d$ 删除光标所在到该列的最后一个字符
d0 删除光标所在到该列的最前面一个字符
y1G 复制光标所在列到第一列的所有数据
yG 复制光标所在列到最后一列的所有数据
y0 复制光标所在的那个字符到该列行首的所有数据
y$ 复制光标所在的那个字符到该列行末的所有数据
J 将光标所在列与下一列的数据结合成同一列
u 复原前一个动作
[Ctrl]+ r 重做上一个动作
gu 选中区域转为小写
gU 选中区域转为大写
g~ 大小写互调
ctrl + q 进入块可视化模式
gv 进入前一次可视化模式选择的文本
VG 当前光标之后内容全部选中
指令模式
:n1,n2s/jackie/roy/g 在第n1 与 n2 列之间寻找 jackie 这个字符串,并将该字符串取代为 roy 字符串
:w [filename] 将编辑的数据储存成另一个文件(相当于另存新文档)
:r [filename] 在编辑的数据中,读入另一个文件的数据,即将[filename]这个文件内容加到游标所在列后面
:n1,n2 w[filename] 将n1 到 n2 的内容储存成 filename 这个文件
:set nu 显示行号
:set nonu 取消行号
:set backup 自动储存备份档
:set nobackup 取消自动备份档
:set autoindent 自动缩排
:%s/String/newString/g 全局替换
可视模式
块选择方式一 : v 进入可视模式, ctrl + q 再通过hjkl 进行块选择
块选择方式二: Ctrl + v,可进入可视模式,Shift+ g 进行块选择
寄存器
命令行模式下查看寄存器 registers即可
寄存器分类
1. 无名(unnamed)寄存器:"",缓存最后一次操作内容;
2. 数字(numbered)寄存器:"0 ~ "9,缓存最近操作内容,复制与删除有别, "0寄存器缓存最近一次复制的内容,"1-"9缓存最近9次删除内容
3. 行内删除(small delete)寄存器:"-,缓存行内删除内容;
4. 具名(named)寄存器:"a ~ "z或"A - "0Z,指定时可用;
5. 只读(read-only)寄存器:":, "., "%, "#,分别缓存最近命令、最近插入文本、当前文件名、当前交替文件名;
6. 表达式(expression)寄存器:"=,只读,用于执行表达式命令;
7. 选择及拖拽(selection and drop)寄存器:"*, "+, "~,存取GUI选择文本,可用于与外部应用交互,使用前提为系统剪切板(clipboard)可用;
8. 黑洞(black hole)寄存器:"_,不缓存操作内容(干净删除);
9. 模式寄存器(last search pattern):"/,缓存最近的搜索模式。
数字寄存器
最常用的 从0-9。 如果不指定寄存器的名字,那么删除的内容,vim默认是存到 1 ,复制内容是存到 0 号寄存器。 如果继续删除,那么原来 1 的内容就转到 2,类推,当删除超过9的时候, 原先的 8号数字寄存器就转到9, 原先9的数字寄存器内容就会丢失。
具名寄存器(字母寄存器)
完成一个需求:给每一行加上一对 quotation
思路:执行一系列操作,把这一系列操作记录为一个具名寄存器
normal-mode 环境下
* qa
* ^ (至行首)
* " (插入一个引号)
* $ (至行尾)
* " (插入一个引号)
* 进入 normal-mode
* q
在需要加引号的一行 @A 即可,或者按两个 @@ 可重复执行上一个寄存器过程
同时编辑多行
1. ctrl + v 进入可视模式
2. 使用 j 或者 k 选择要编辑的行
3. shift + i 或者 shift + a 在目标位置添加要更改的内容
4. 按 esc 即可完成