Vi有三种基本的模式:指令模式,文本输入模式,行末模式
i,I,o,O,a,A,r,R都可进入编辑模式
在一般模式中,输入: / ?都可以进入指令模式。
复制、粘贴、删除
yy 复制
nyy 从当前行开始复制n行
p 粘贴到下一行
P 粘贴到上一行
D 当前光标删除到行尾
dd 剪切当前行
. 删除下一行
ndd 从当前行开始向后删除n行
dnG 删除第n行到当前行的数据
x 向后删除一个字符
nx 向后删除n个字符
X 向前删除一个字符
搜索
n 查找下一个
?str 从光标位置向上搜索
替换
:%s///g 替换(%全部替换,/gi忽略大小写)
:%s///gc 替换,需要用户一一确认
.,$s///g 当前位置到行尾替换
撤销
u 撤销
U 撤销当前行所有操作。
ctrl-r 重做
:e! 回复至文档原始状态
块操作
v 选中光标经过的字符
V 选中光标经过的行
ctrl-v 选中矩阵
y 复制被选中的数据
d 删除被选中的数据
多文件编辑
vim file1 file2 同时编辑file1 file2
:files 列出vim当前打开的文件列表
:n 编辑下一个文件
:N 编辑上一个文件
:sp file2(:split) 分屏显示file2
vim -o file1 file2 垂直显示
vim -O file1 file2 水平显示
ctrl-w,j 向上切换窗口
ctrl-w,k 向下切换窗口
其他操作
set nu 设置行号
set nonu 取消行号
:r filename 将文件内容插入到光标位置下一行
:!command 暂时离开vi ,执行command
:r!command 将命令输入插入光标当前位置
插入
s 删除一个字符在当前位置编辑
i 在光标前插入
I 在行首插入
a 在光标后插入
A 在行末插入
r 输入替换光标位置字符
R 进入输入替换模式
~ 大小写转换
保存
:w 保存
:w! 强制保存
:w filename 另存为
n1 n2 w filename 将第n1行,n2行另存为filename
退出
q 退出
q! 强制不保存退出
wq! 强制保存退出
:x 保存并退出
ZZ 若文档未改动,则直接离开,若改动,则保存后离开
光标移动
h 左
j 上
k 下
l 右
$ 行尾
0 行首
G 文档结尾
gg 文档第一行
w 按单词后移
b 按单词前移
( 按句子前移
) 按句子后移
{ 按段落前移
} 按段落后移
nG 光标到文档第n行
n 光标下移n行
n 光标后移n字符
n<左右方向键> 光标左右移动
pageup 向上翻页
ctrl-b 向上翻页
pagedown 向下翻页
ctrl-f 向下翻页
vim问题
vim的暂存档,救援恢复与开启时的警告讯息
当文档在编辑过程中意外中断了,再打开会出现上图所示警告提示,由于暂存盘的关系,因此vim会主动判断这个档案可能有些问题,警告提示中vim给了两点主要的问题与解决方案,分别是这样:
问题一:可能有其他人或程序同时在编辑这个档案:
由与 Linux 是多人多任务的环境,因此很可能有很多人同时在编辑同一个档案。如果在多人共同编辑的情况下, 万一大家同时储存,那么这个档案的内容将会变癿乱七八糟!为了避免这个问题,vim 会出现这个警告窗口! 解决的方法则是:
1. 找到另外那个程序或人员,请他将该 vim 的工作结束,然后你再继续处理。
2. 如果你只是要看该档案的内容并不会有任何修改编辑的行为,那么可以选择开启成为只读(O)档案
问题二:在前一个 vim的环境中,可能因为某些不知名原因导致 vim 中断 (crashed): 这就是常见的不正常结束 vim 产生的后果。
解决方案依据不同的情况而不同喔!常见的处理方法为:
1.如果你之前的vim 处理动作尚未储存,此时你应该要按下『R』,亦即使用 (R)ecover 的项目, 此时 vim 会载入 xx.swp 的内容,让你自己来决定要不要储存!这样就能够救回来你之前未储存的工作。 不过那个 xx.swp 并不会在你结束 vim 后自动删除,所以你离开 vim 后还得要自行删除 .swp 才能避免每次打开这个档案都会出现这样得警告!
2.如果你确定这个暂存盘是没有用的,那么你可以直接按下『D』删除掉这个暂存盘,亦即 (D)elete it 这个项目即可。 此时 vim 会载入要编辑的文件,并且将旧的 xx.swp 删除后,建立这次会使用的新的xx.swp 。
阅读(1644) | 评论(0) | 转发(0) |