vi
m 常用快捷键
vim 常用快捷键
一般模式: 移动光标
h 或 向左方向键 光标向左移动一个字符
j 或 向下方向键 光标向下移动一个字符
k 或 向上方向键 光标向上移动一个字符
l 或 向右方向键 光标向右移动一个字符
[Ctrl] + [f] 屏幕『向前』移动一页(常用)
[Ctrl] + [b] 屏幕『向后』移动一页(常用)
[Ctrl] + [d] 屏幕『向前』移动半页
[Ctrl] + [u] 屏幕『向后』移动半页
+ 光标移动到非空格符的下一列
- 光标移动到非空格符的上一列
gt n 切换到下一个标签(多标签模式:tabnew 打开一个新标签)
0 这是数字『 0 』:移动到这一行的最前面字符处(常用)
$ 移动到这一行的最后面字符处(常用)
H / shitf+h 光标移动到这个屏幕的最上方那一行
M / shift+m 光标移动到这个屏幕的中央那一行
L / shift+l 光标移动到这个屏幕的最下方那一行
G / shift + g 移动到这个档案的最后一行(常用)
nG 移动到这个档案的第 n 行。(显示行号 :set nu)
n<j>/n<k> 光标 向下/向上 移动 n 行(常用)
<Ctrl+w>j 在分割窗口中移动到下一个分割窗口
<Ctrl+w>k 移动到上一个分割窗口
一般模式: 搜寻与取代
/word 向光标之后寻找一个字符串名称为 word 的字符串。(常用)
?word 向光标之前寻找一个字符串名称为 word 的字符串。
:n1,n2s/word1/word2/g 在第 n1 与 n2 行之间寻找 word1 并替换为 word2 !(常用)
:1,$s/word1/word2/g 从第一行开始寻找字符串并替换为 word2 !(常用)
:1,$s/word1/word2/gc 取代前提示使用者确认(conform)是否需要取代!(常用)
一般模式: 删除、复制与贴上
x, X x 为向后删除一个字符, X 为向前删除一个字符(常用)
nx 向后删除 n 个字符
dd 删除游标所在的那一整列(常用)
ndd 删除光标所在的向下 n 列,例如 20dd 是删除 20 列(常用)
d1G 删除游标所在到第一行的所有数据
dG 删除游标所在到最后一行的所有数据
yy 复制游标所在的那一行(常用)
nyy 复制光标所在的向下 n 列,例如 20yy 是复制 20 列(常用)
y1G 复制游标所在列到第一列的所有数据
yG 复制游标所在列到最后一列的所有数据
p, P p 为在光标下一行贴上,P 则为贴在游标上一行!(常用)
J=<shitf+j> 将光标所在列与下一列的合并成同一列
c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u 复原前一个动作。(常用)
进入编辑模式
i, I 在光标所在处插入文字,已存在的文字会向后退;(常用)
a, A 由光标所在的下一个字开始输入,文字会向后退:(常用)
o, O 插入新的一行:从光标所在的下一行输入文字;(常用)
取代:r 会取代光标所在的那一个字符;R 会一直取代光标所在
r, R
的文字,直到按下 ESC 为止;(常用)
Esc 退出编辑模式,回到一般模式中(常用)
指令列命令模式
:w 将编辑的数据写入硬盘档案中(常用)
:w! 若档案属性为『只读』时,强制写入该档案
:q 离开 vi (常用)
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
:wq 储存后离开,若为 :wq! 则为强制储存后离开(常用)
:e! 将档案还原到最原始的状态!
:tabnew 打开一个新标签 (常用)[gt:切换到下一个标签]
:sp <file_name> 分割窗口打开文件 (常用)[(ctrl+w) j/k 在分割窗口中切换]
:sav 另存为......
ZZ 离开,若档案已经经过更动,则储存后离开!
:w [filename] 将编辑的数据储存成另一个档案(类似另存新档)
:r [filename] 插入另一个文件。把 filename 的内容加到游标所在行后面
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!
n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
暂时离开 vi 到指令列模式下执行 command 的显示结果!例
:! command
如[ :! ls /home ]
一般模式: 移动光标
h 或 向左方向键 光标向左移动一个字符
j 或 向下方向键 光标向下移动一个字符
k 或 向上方向键 光标向上移动一个字符
l 或 向右方向键 光标向右移动一个字符
[Ctrl] + [f] 屏幕『向前』移动一页(常用)
[Ctrl] + [b] 屏幕『向后』移动一页(常用)
[Ctrl] + [d] 屏幕『向前』移动半页
[Ctrl] + [u] 屏幕『向后』移动半页
+ 光标移动到非空格符的下一列
- 光标移动到非空格符的上一列
gt n 切换到下一个标签(多标签模式:tabnew 打开一个新标签)
0 这是数字『 0 』:移动到这一行的最前面字符处(常用)
$ 移动到这一行的最后面字符处(常用)
H / shitf+h 光标移动到这个屏幕的最上方那一行
M / shift+m 光标移动到这个屏幕的中央那一行
L / shift+l 光标移动到这个屏幕的最下方那一行
G / shift + g 移动到这个档案的最后一行(常用)
nG 移动到这个档案的第 n 行。(显示行号 :set nu)
n<j>/n<k> 光标 向下/向上 移动 n 行(常用)
<Ctrl+w>j 在分割窗口中移动到下一个分割窗口
<Ctrl+w>k 移动到上一个分割窗口
一般模式: 搜寻与取代
/word 向光标之后寻找一个字符串名称为 word 的字符串。(常用)
?word 向光标之前寻找一个字符串名称为 word 的字符串。
:n1,n2s/word1/word2/g 在第 n1 与 n2 行之间寻找 word1 并替换为 word2 !(常用)
:1,$s/word1/word2/g 从第一行开始寻找字符串并替换为 word2 !(常用)
:1,$s/word1/word2/gc 取代前提示使用者确认(conform)是否需要取代!(常用)
一般模式: 删除、复制与贴上
x, X x 为向后删除一个字符, X 为向前删除一个字符(常用)
nx 向后删除 n 个字符
dd 删除游标所在的那一整列(常用)
ndd 删除光标所在的向下 n 列,例如 20dd 是删除 20 列(常用)
d1G 删除游标所在到第一行的所有数据
dG 删除游标所在到最后一行的所有数据
yy 复制游标所在的那一行(常用)
nyy 复制光标所在的向下 n 列,例如 20yy 是复制 20 列(常用)
y1G 复制游标所在列到第一列的所有数据
yG 复制游标所在列到最后一列的所有数据
p, P p 为在光标下一行贴上,P 则为贴在游标上一行!(常用)
J=<shitf+j> 将光标所在列与下一列的合并成同一列
c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u 复原前一个动作。(常用)
进入编辑模式
i, I 在光标所在处插入文字,已存在的文字会向后退;(常用)
a, A 由光标所在的下一个字开始输入,文字会向后退:(常用)
o, O 插入新的一行:从光标所在的下一行输入文字;(常用)
取代:r 会取代光标所在的那一个字符;R 会一直取代光标所在
r, R
的文字,直到按下 ESC 为止;(常用)
Esc 退出编辑模式,回到一般模式中(常用)
指令列命令模式
:w 将编辑的数据写入硬盘档案中(常用)
:w! 若档案属性为『只读』时,强制写入该档案
:q 离开 vi (常用)
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
:wq 储存后离开,若为 :wq! 则为强制储存后离开(常用)
:e! 将档案还原到最原始的状态!
:tabnew 打开一个新标签 (常用)[gt:切换到下一个标签]
:sp <file_name> 分割窗口打开文件 (常用)[(ctrl+w) j/k 在分割窗口中切换]
:sav 另存为......
ZZ 离开,若档案已经经过更动,则储存后离开!
:w [filename] 将编辑的数据储存成另一个档案(类似另存新档)
:r [filename] 插入另一个文件。把 filename 的内容加到游标所在行后面
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!
n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
暂时离开 vi 到指令列模式下执行 command 的显示结果!例
:! command
如[ :! ls /home ]