vi/vim
光标跳转
上下左右
上下左右
#command:跳转#个字符
单词跳转
w:下个单词的词首
e:下个单词的词尾
b:上个单词的词首
#command:跳转#个单词
行首行尾跳转
^:行首非空白字符
0:行首
$:行尾
行间移动
#G:跳到第#行
G:跳到尾巴
gg:跳到开头
文本编辑
删除
d:配合光标跳转删除
d^
d$
d#command
d0
dw
de
db
dd:删除光标所在行
#dd:删除多行
ggdG:删除全部
x删除光标所在字符
#x
复制剪切粘贴撤销
y,复制,用法类d
yy 以行为单位
#yy #行
ygg
yG
p粘贴
u撤销
模式转换
插入模式
a:选中字母后
i:选中字母
o:选中一行下面新建一行
A:行尾
esc:退出
末行模式
:
#:进入第几行
w:保存
w filename:另存为
q:退出
command!:强制
x 、ZZ:保存并退出
X:加密文档
r filename:读入文件到当前行后
# r filename:读入文件到5行后
查找替换
s/old/new/选项(g全文,c交互确认) 替换
50,100 s/man/MAN/gc 把50到100的man换成MAN并确认每一个替换
,$ s/.*// 从光标所在行开始一直到最后替换为空
如果出现替换文本里面有/,担心会造成歧义,可以使用#或者@来替代/
环境配置
在vim里面输入的都是临时的配置,如需永久环境,个人修改自己目录下的.vimrc,全局修改/etc/vimrc
set nu:行号
set nonu:取消行号
set ai:自动缩进
set noai:取消自动缩进
set ic:忽略字符的大小写
set noic:不忽略
set hlsearch:高亮搜索
set nohlsearch:不高亮
set sm:括号匹配
set nosm:不匹配
help:帮助
个人答案
cd /tmp
[root@server1 tmp]# mkdir vitest
[root@server1 tmp]# cd vitest/
[root@server1 vitest]# cp /etc/man_db.conf man.config
vi man.config
set nu
58G
40l
gg
?bzip2
50,100 s/man/MAN/gc g为每行全部替换,不然只换一个,c为确认
u
65G
9yy
G
$
p
21,42 g/^#/d
w ./man.test.config
27G
d15l
gg
o
I am a student
esc
wq
评论已关闭