《学习vi和vim编辑器》读书笔记——vi基础篇

 

第一章 vi文本编辑器


Unix环境下的编辑器有多种,一般可以分为

行编辑器 ed ex
一次只能显示一行
全屏编辑器 vi emacs 
显示文件的一部分


vi命令的特点:
  • 字母区分大小写
  • 输入时不会显示在屏幕上
  • 不需要在命令后按Enter键

打开关闭文件
使用vi进行文本编辑的时候,是在内存里的文本副本上进行操作,也就是说是在缓冲区中进行操作,存储编辑的结果时,实际上是将缓冲区的内容写入文件中。

打开文件的命令是:

保存并离开文件
命令模式 ZZ 或者 :wq

结束不保存结果
:e! 恢复到上一次存储的文件内容
:q! 消除所有编辑结果,并退出vi

:w newfile 可将编辑的结果写入新的文件(就是另存为)


第二章 简单的文本编辑器


vi命令
刚进入vi之后,处于命令模式中,按i会进入插入模式,在插入模式中按Esc键会进入命令模式。

---------------------------------------
Windows环境下gVim的准备
(1)打开gVim,输入mkvimrc! ~/.vimrc  该命令会在用户目录下新建一个.vimrc的脚本文件,gvim每次启动的时候都会读取这个文件里的配置
(2)编辑~/.vimrc文件,加入一些脚本
set nobackup     不备份文件,避免自动产生a.txt~备份文件
syntax on              语法高亮
set number           显示行数
colo elflord            设置颜色
set guifont=Consolas:h15:cANSI  设置字体为Consolas,字体大小h15,为西欧cANSI字符
set nocompatible
set ai   自动缩进
set si   智能缩进
set nu  显示行数
set ts=4  一个tab=4个空格
set bs=indent,eol,start
set guioptions-=T  无工具条
set
 foldmethod=indent " 折叠方式为 依靠缩进
colorscheme murphy
---------------------------------------

单一的移动
h/Backspace 左移一个字符
j/Enter 下移一个字符
k 上移一个字符
l 右移一个字符

数值参数
在移动命令之前加上数字:例如4l 右移4个字符

在一行中移动
vi会以用户按Enter键作为一行的换行,而与显示行无关
:set wm=10 设置与右边界的距离是10个字符的时候就会换行
0 移动到行首
$ 移动到行尾

按照文本块移动
w 向后移动一个单词(标点、符号算作一个单词)
W 向后移动一个单词(标点、符号不算作一个单词)
b 向前移动一个单词(标点、符号算作一个单词)
B 向前移动一个单词(标点、符号不算作一个单词)
G 移动到文件的尾部
前加数字表示移动到指定行
同样支持前加数字

附加文本
a 在光标之后插入文本
i 在光标之前插入文本
更改文本
c + 光标移动命令:结束后需要按Esc键回到命令模式
cw 从光标到这个单词末尾
c2b 从光标往前2个单词
c$ 从光标到本行末尾(效果同C)
c0 从光标到此行的开头
cc 覆盖当前一正行



r用于修改单个字符
r+修改后的字符,完成后立即回到命令模式

替换文本
s 替换一个字符
S 替换一整行字符
R 进入覆盖模式

更改大小写
~ 可以更改字符的大小写,加数字可以制定从光标开始的范围

删除文本
d 删除命令
dw 删除一个单词(单词之后的空格也会被删除)
de 删除一个单词(单词之后的空格也不会被删除)
db 向前删除一个单词
d$ 或者 D 删除到一行的结尾
d0 删除到一行的开头
dd 删除一整行
x 删除光标后面的一个字符
X 删除光标前后的一个字符

恢复
u 撤销上一个命令
U 恢复一整行
p 恢复最近几次的删除的内容
vi会将最近9次删除的整行数据放在9个缓冲区中(移动文本讲解)

移动文本
vi会将删除之后的文本放在缓冲区中,此时使用放置命令p,就实现了剪切-粘贴
删除的整行,会在光标所在行的下一行粘贴文本
删除的不是整行,会在光标所在位置的下一个字符开始粘贴

对调2个字符
xp x是删除一个字符,p是粘贴

复制文本
使用y拖拽、p放置
同样可以配合移动键使用
yw y$ yy
不同的是Y是复制一整行
拖拽命令和删除命令共享缓冲区

重复撤销命令
上一个命令会保存在一个缓冲区中
. 重复上一个命令

插入文本的其他方法
A 行尾附加文本
I 行首添加文本
o 在下一行添加文本
O 在上一行添加文本
s 删除光标所在位置的一个字符后,进入插入模式
S 删除一整行后,进入插入模式
R 在光标坐在位置进入替换模式


合并
J 合并当前行和下一行
3J 合并3行


第三章 快速移动位置


根据屏幕移动
^F 往前滚动一整屏
^B 往后滚动一整屏
^D 往下滚动半屏
^U 往上滚动半屏

z命令调整屏幕位置
z Enter 当前行作为屏幕顶端行 光标移动到屏幕顶端
z. 当前行作为屏幕中间行 光标移动到屏幕中间
z- 当前行作为屏幕底端行 光标移动到屏幕底端
z之前加数字表示处理的行号

屏幕重绘 ^L

H
移动到屏幕顶端
M 移动到屏幕中间
L 移动到屏幕底端
nH 移动到屏幕顶端开始往下的第n行
nL 移动到屏幕底端开始往上的第n行

行移动
Enter 移动到下一行的第一个字符
+ 移动到i下一行的第一个字符
- 移动到上一行的第一个字符



当前行移动
^ 移动到当前行第一个非空字符处
n| 移动到当前行第n列

文本块移动
e 移动到单词的结尾
E 移动到单词的结尾(忽略标点符号)
( 移动到句子开头
) 移动到句子结尾
{ 移动到段的开头
} 移动到段的结尾
[[ 移动到这一节的开头
]] 移动到这一节的结尾

搜索
/ 向下搜索
? 向上搜索
n 与上一搜索相同方向,继续搜索
N 与上一搜索相反方向继续搜索
/Enter 往下继续搜索
?Enter 往上继续搜索

通过搜索修改文本
搜索命令之前加上文本操作
d/sad 删除向下搜索到的第一个sad

一行之内的搜索
fx 搜索本行中下一个出现x的地方
Fx 搜索本行中上一个出现x的地方
; 重复上一个搜索,方向相同
, 重复上一个搜索,方向相反

行间跳转
G 跳转到最后一行
nG 跳转到第n行
^G 查看当前所在行
:set nu 设置行号
`` 回到上次跳转的光标位置
'' 回到上次所在行的首位置


第四章 越过基础的藩篱


打开文件选项
前进到特定文位置
vi +n file 在第一行打开file
vi + file 在最后i韩打开file
vi +/pattern file 在第一个出现pattern的地方打开file
pattern中如果出现空格
可以 +/"you can"
或者+/you\ can指定

只读模式
vi -R file
view file 可以指定打开文件的位置
强制写入文件可以保存
:w!
:wq!

缓冲区
恢复删除
对于删除的行级别的数据,每次删除都会放在缓冲区中,最后一次删除的内容放在缓冲区1中,倒数第二次放在缓冲区2中。
"2p 恢复缓冲区2中的数据
"1pu.u.u 对于不确定删除的缓冲区编号,可以一直按u.来确认
因为每按一次.缓冲区的编号会相应增加

命令缓冲区
命名缓冲区要使用"加小写字母的形式
"dyy 将当前行粘贴到缓冲区d中
"dP 将缓冲区d的内容放置在光标前
"dp 将缓冲区d的内容放置在光标后

标记
mx 将当前光标位置标记为x
'x 将光标移动到x标记的所在行的行首
`x 将光爆移动到x标记所在的位置
'' 回到上次标记所在行的行首
`` 回到上次标记所在位置
标记仅对当前会话有效




你可能感兴趣的:(vi)