Skip to content

Instantly share code, notes, and snippets.

@simonid
Created December 6, 2017 15:15
Show Gist options
  • Select an option

  • Save simonid/c47f947d887c7889c3f4dba9686c3611 to your computer and use it in GitHub Desktop.

Select an option

Save simonid/c47f947d887c7889c3f4dba9686c3611 to your computer and use it in GitHub Desktop.
vi/vim使用

VIM/VI使用总结

TIP:其实可以记住一些位置的操作和基本操作,然后基本是一样的规律

下面是普通模式下的操作:

方向操作

0:光标移动到本行开头
$:光标移动到本行结尾
^:光标移动到本哈根第一个非空字符
w:光标向前移动一个词(上一个字母与数字组成的词之后)
W:光标向前移动一个词(以空格分隔的词)
3w:光标向前移动3个词
b:光标向后移动一个词(下一个字母与数字组成的词之后)
B:光标向后移动一个词(以空格分隔的词)
3b:光标向后移动3个词
G:移动到文件末尾
gg:移动到文件开头
Fn + ->:移动到行尾
Fn + <-:移动到行首
其实上面两句适用于全部编辑器

(:跳转到上一句
):跳转到下一句

插入操作

a:在光标后插入文本
i:在光标前插入文本<br> A`:在行末插入文本

删除操作

x:删除光标处字符
d:可视模式下删除选中的内容
dw:删除一个词
d0:删除到行首
d$:删除到行尾
d(:删除到句首
d):删除到句尾
dgg:删除到文件头
dG:删除到文件末尾
dd:删除该行
dd:删除3行

注意,这里全部复制/粘贴/剪切操作都只能用在一台主机上,如果是xsell操作远程文件的内容不能拖动到本地中

复制/粘贴/剪切操作

yy:复制当前整行到存储缓冲区
yG:复制光标以下的所有行
ygg:复制光标以上的所有行
y0:复制光标到行首的内容
y$:复制光标到行尾的内容
p:在当前行之后粘贴存储缓冲区中的内容
P:在当前行之前粘贴存储缓冲区中的内容
[n]x: 剪切光标右边n个字符,相当于d[n]l。
[n]X: 剪切光标左边n个字符,相当于d[n]h。
其实剪切和删除也是用d指令:
d:剪切选定块到缓冲区; dd:剪切整行
d^:剪切至行首
d$:剪切至行尾
dw:剪切一个word
dG:剪切至档尾

撤销操作

u:撤销最后的操作
ctrl+r:重做最后撤销的操作

搜索

/搜索内容:在文档后面搜索
?搜索内容:在文档前面搜索
n:移动到后一个检索到的内容
N:移动到前一个检索到的内容

替换

:%s/original/replacement:检索第一个 “original” 字符串并将其替换成 “replacement”
:%s/original/replacement/g:检索并将所有的 “original” 替换为 “replacement”
:%s/original/replacement/gc:检索出所有的 “original” 字符串,但在替换成 “replacement” 前,先询问是否替换

选择文本

v:进入逐字可视模式
V:进入逐行可视模式

多行注释

ctrl + v进入可视模式,然后移动光标选择行,输入大写I,然后再输入#就可以注释多行了

删除全部内容

进入文件后输入ggdG
或者在终端中输入命令echo >> file

全选

进入文件后输入ggVG

复制全部内容

进入文件后输入ggyG

剪切全部内容

进入文件后输入ggxG

排版

<<: 向左缩进一个shiftwidth
>>: 向右缩进一个shiftwidth
:ce(nter): 本行文字居中
:le(ft): 本行文字靠左
:ri(ght): 本行文字靠右
gq: 对选中的文字重排,即对过长的文字进行断行

参考:
最全的vim快捷键

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment