-
Notifications
You must be signed in to change notification settings - Fork 112
vim_base
- 1.切换模式
- 2.存盘 & 退出
- 3.插入
- 4.删除
- 5.拷贝 & 粘贴
- 6.定位
- 7.Undo & Redo
- 8.重复
- 9.组合
- 10.区域选择
- 11.自动提示
- 12.可视化选择
- 13.分屏
- 其他
- vim 技巧
+-------------+
|shell 提示符 |
+--+----------+
退出 vi | | 启动 vi
+--------+----+
| 一般模式 |
+-------------+
/ \
/ \
文本插入 / Esc键 自动 \ :
/ \
/ \
+--------------+ +-------------+
| 插入模式 | | 命令行模式 |
+--------------+ +-------------+
i
→ Insert 模式,在光标前插入
ESC
→ 回到 Normal 模式,Normal 模式下,所有键都是功能键
:help <command>
→ 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(退出帮助需要输入:q)
:e file
→ 打开一个文件
:w
→ 存盘
:saveas file
→ 另存为
:x
, ZZ
或 :wq
→ 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
:q!
→ 退出不保存
:qa!
强行退出所有的正在编辑的文件,就算别的文件有更改。
:bn
和 :bp
→ 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(:n
到下一个文件)
a
→ 在光标后插入
o
→ 在当前行后插入一个新行
O
→ 在当前行前插入一个新行
cw
→ 替换从光标所在位置后到一个单词结尾的字符
x
→ 删当前光标所在的一个字符。
dd
→ 删除当前行,并把删除的行存到剪贴板里
d
→ 删除,常用于组合
yy
→ 拷贝当前行当行于 ddP
p
→ 粘贴(小写后)
P
→ 粘贴(大写前)
y
→ 拷贝,常用于组合
vim有12个粘贴板,分别是
0 1 2 ... 9 a " +
用:reg
命令可以查看各个粘贴板里的内容,在vim中简单用y
只是复制到"
粘贴板里,同样用p
粘贴的也是这个粘贴板里的内容。
"Ny
指定N
粘贴板复制(主意引号)
+
粘贴板是系统粘贴板,"+y
复制,"+p
粘贴
hjkl
(←↓↑→)
0
→ 数字零,到行头
^
→ 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$
→ 到本行行尾
g_
→ 到本行最后一个不是blank字符的位置。
fa
→ 到本行下一个为a
的字符处
Fa
→ 到本行上一个为a
的字符处
ta
→ 到a
前的第一个字符
Ta
→ 到a
后的第一个字符
NG
→ 到第 N
行 (命令中的G是大写的)
:N
→ 到第 N
行
gg
→ 到第一行。(相当于1G,或 :1)
G
→ 到最后一行。
w
→ 到下一个单词的开头。(默认单词形式)
e
→ 到当前单词的结尾。(默认单词形式)
W
→ 到下一个单词的开头。(包含空格?
)
E
→ 到当前单词的结尾。(包含空格?
)
%
→ 到匹配的括号处,包括 ( { [
(需要把光标先移到括号上)
*
→ 到下一个
匹配单词
#
→ 到上一个
匹配单词
/pattern
→ 搜索 pattern
的字符串(需要回车,如果搜索出多个匹配,可按n
键到下一个)
u
→ undo
<Ctrl-r>
→ redo
.
→ (小数点) 可以重复上一次
的命令
N <command>
→ 重复某个命令N次
,command可以为.
使用
.
时,若上一次的命令为N <command>
,则原样执行N <command>
使用
N <command>
时,若command
为.
,则N
会覆盖.
自带的次数
<start><command><end>
例如
0y$
→ 从行头拷贝到行尾
ye
→ 从当前位置拷贝到本单词的最后一个字符
y2/foo
→ 拷贝2个foo之间的内容
<action>Na<object>
包括object
<action>Ni<object>
不包括object
-
action
可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。 -
object
可能是:w
一个单词,W
一个以空格为分隔的单词,s
一个句字,p
一个段落;也可以是成对出现的字符:" ' ) } ]
-
N
表示选取第N层,不写默认为1
<Ctrl-n>
或 <Ctrl-p>
v
可视
V
可视行
<Ctrl-v>
可视块
选择了可视化范围后,可做如下操作:
J
→ 把所有的行连接起来(变成一行)
<
→ 左缩进
>
→ 右缩进
=
→ 自动缩进
在所有被选择的行后加上点东西:
<Ctrl-v>
选中行
$
到行最后(不加将在每行行首编辑)
A
块操作中进入插入模式
输入
ESC
split
→ 创建分屏
vsplit
→ 创建垂直分屏
<Ctrl-w>方向
→ 方向可以是 hjkl 或 ←↓↑→,用来切换分屏。
<Ctrl-w>_
→ 最大化尺寸
<Ctrl-w>|
→ 垂直分屏最大化尺寸
<Ctrl-w>+
→ 增加尺寸
<Ctrl-w>-
→ 减小尺寸
帮助文档 → :help usr_02.txt
- % 跳转到配对的括号(小括号,方括号,大括号都在次范围),一般用于查看if,while的范围
- 多行注释: vim多行注释,ctrl+v,选好行以后I(大写很重要),然后//,然后两次ESC
- 格式对齐: vim一样可以把混乱的格式排列整齐,只要输入"gg=G" 这个是直接在 normal模式按的, gg=G , 不是 :gg=G
- 缩进:
和<< >>和c++的输入输出流用的符号一样,这个缩进或者反缩进的量由shiftwidth控制,默认是8个空格. 一般来说,这个功能都会和v命令一起用,以实现整块缩进,当和v一起使用的时候,只需要>和<即可,也就是只输入一次
- 搜索关键字:* 定位至当前光光标所指单词的下一次出现的地方,# 定位至当前光光标所指单词的上一次出现的地方,n 定位至跳至已被标记出的单词下一次出现的地方,shift+n 定位至跳至已被标记出的单词上一次出现的地方
欢迎使用 Vim IDE