vi/vim
新建
vi [filename] 打开或新建一个文件,如: vi test.txt
按i
切换到输入模式,以输入字符。
按 ESC
键可随时退出到命令模式,操作命令都是在命令模式下的。
在命令模式下(即按ESC键后再操作)
移动光标
用键盘[Page Up] 或 [Page Down] 或[→][←][↑][↓]来移动光标。
[Ctrl] + [f] 屏幕『向下』移动一页。
[Ctrl] + [b] 屏幕『向上』移动一页。
[Ctrl] + [d] 屏幕『向下』移动半页。
[Ctrl] + [u] 屏幕『向上』移动半页。
搜索
/word向下搜索
?word 向上搜索 再按n键继续搜索
再按n键继续正向搜索
再按N键继续反向搜索
按下"*"键,取当前光标所在的word并将它作用目标字符串进行搜索。
按下"#"键,"#"命令是"*"的反向版。
匹配特殊字符在字符串前面加反斜杠
开启高亮显示用":set hlsearch"
关闭高亮显示用":set nohlsearch"
替换
:n1,n2s/word1/word2/g
在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2
:1,$s/word1/word2/g 或 :%s/word1/word2/g
从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc
从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!
选择
v 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。
V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束。
Ctrl + v 矩形区域选择,再按一下Ctrl + v结束。
ggVG 选中全部的文本, 其中gg为跳到行首,V选中整行,G末尾
删除
x 为向后删除一个字符 (相当于 [del] 按键)
X 为向前删除一个字符(相当于 [backspace] 亦即是退格键)
nx 向后删除连续 n 个字符,n 为数字。举例来说,我要连续删除 10 个字符, 『10x』。
dd 删除游标所在的那一整行
ndd 向后删除连续 n 行
d0 删除游标所在处,到该行的最前面一个字符。
d$ 删除游标所在处,到该行的最后一个字符。
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
复制
yy 复制游标所在的那一行。
nyy 向后复制连续 n 行。
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
y1G 复制游标所在行到第一行的所有数据
yG 复制游标所在行到最后一行的所有数据
粘贴
小写p将已复制的数据贴在光标下一行位置。
大写P将已复制的数据贴在光标上一行位置。
保存
:w 保存文件。
:w! 强制保存,到底能不能保存,跟你权限有关。
:q 离开vi
:q! 不保存直接离开vi
:wq 保存并离开vi
:wq! 强制保存后离开
:w [filename] 另存为新的文档,[filename]为新文件名。
:r [filename] 读入另个[filename]文件的数据,写在游标所在行后面。
行号
:set nu 显示行号
:set nonu 取消行号
总结:
Operator + Scope = command
Operator
v 选择
d 删除
y 复制
p 粘贴
c 修改
u 后退
Scope
e 由游标所在位置至该字串的最后一个字元。
w 由游标所在位置至下一个字串的第一个字元。
b 由游标所在位置至前一个字串的第一个字元。
$ 由游标所在位置至该行的最后一个字元。
0 由游标所在位置至该行的第一个字元。
G 全部。