原文出处:
https://www.zybuluo.com/yangfch3/note/279738
Vim 模式
两种基础模式:- 命令模式(Command mode) - 编辑模式(Insert mode)
一种 - 可视化模式(Visual mode)
基本文件级操作
- 新建文件
vim newFileName
--->:w
vim
--->:w newFileName
vim
--->:new fileName
--->:w
- 打开文件
- 打开一个文件
vim fileName
vim
--->:e fileName
- 打开多个文件
vim aa bb cc
- 多个文件间切换到下一个
:n
- 多个文件间回到上一个
:N
- 多个文件间切换到下一个
- 打开一个文件
- 分窗操作
vim
--->:split fileName
- 切换窗口区域:
ctrl + w
- 切换窗口区域:
- 分栏操作:一个窗口可以包含多个
tab
栏
:tabnew
创建一个新的tab
:tabnew fileName
创建一个新的tab
并打开某个文件
- 万能切换文件法
:ls
--->:e#Num
- 修改文件名和文件类型
:f newName
基本移动操作
以下均在命令模式下操作。
光标移位
h
左移j
下移k
上移l
右移Num + Movekey
一次移动任意个,如20l
:右移二十个单位
记忆技巧:K
(3) 是上移(“山上”),其余同方向键
词间移位
w
下一个 w(ord) 开头W
跳过标点的下一个 word 的开头b
前一个 word 开头B
跳过标点的前一个e
单词的结尾(end)处
记忆技巧:word
backward
end
行间移动
0
当前行开头^
当前行第一个非空字符$
跳到行尾
记忆技巧:第0个字符
正则
段落移动
段落之间以空白行分隔
{
上一段空白分隔行处}
下一段空白分隔行处%
配对括号处
记忆技巧:P
键旁边那个;%
程序员必备,百分百配对!
跳跃移动
:Num
移动至第Num
行Num + G
移动至第Num
行gg
回到文档顶部H
回到屏幕顶部(不是文档顶部)HeaderG
去到文档底部L
去到屏幕底部(不是文档底部)LastM
去到屏幕中央ctrl+d
向下翻半页ctrl+u
向上翻半页
记忆技巧:/ # * :
基本编辑操作
进入编辑模式
i
在光标当前位置向前插入(Insert mode
)I
在本行第一个字符插入a
在光标当前位置向后插入(Insert after)A
在本行末尾插入o
向下插入一行O
向上插入一行
删除
x
向后删除字符X
向前删除字符dd
删除当前行Num + dd
向下删除多行d + Num + G
删除第Num
行dw
删除光标当前所在的词(delete word)d*
删除本行光标前的所有非空字符d0
删除本行光标前的所有字符d$
删除本行光标后的所有字符-
Num + dw
向后删除多个单词(ord+Num+w
) -
c + ↑
向上删除多个数据 c + ↓
向下删除多个数据
复制粘贴
yy
复制当前行 (yank)Num + yy
往下复制多行y + Num G
复制第Num
行yw
复制当前词 (yank word)y*
复制本行光标前的所有非空字符y0
复制本行光标前的所有字符y$
复制本行光标后的所有字符p
粘贴 pasteP
粘贴在当前位置之前
撤销
u
ctrl + r
查找、选择、替换
/xxxx
向下搜索xxxx
,n
选择下一个,N
选择上一个?xxxx
向上搜索xxxx
,n
选择下一个,N
选择上一个#
向右&下搜索光标当前所在的 word(注意是搜索 word)*
向左&上搜索光标当前所在的 word
~~~v
字符选择,选中光标经过的地方V
行选择,上下移动选中多行ctrl + v
类似sublime
一样的多行游标选择selected + d
选中后删除
~~~:Num1,Num2s/string1/string2/g
Num1
查找替换起始行Num2
查找替换终止行s
searchstring1
查找目标字符串string2
替换为该字符串g
:1,$s/string1/string2/gc
从第一行到最后一行寻找string1
字符串,并将该字符串替换为string2
!且在替换前显示提示字符给用户确认 (confirm) 是否需要替换!
保存与退出
:w
保存变更:w fileName
利用当前文本新建文档:q
退出!
强制操作:q!
强制退出,不保存:wq!
保存后强制退出:r file
引入其他文档数据到当前文档或编辑界面
其他
:set nu
显示行数:set nonu
取消显示行数:! command
暂时离开vi
到指令列模式下执行command
的显示结果;例如 『:! cat ./test
』即可在vi
当中察看当前文件夹中的test文件中的内容