Focus On Oracle

Installing, Backup & Recovery, Performance Tuning,
Troubleshooting, Upgrading, Patching

Oracle Engineered System


当前位置: 首页 » 技术文章 » Oracle

Unix vi/vim editor

VIM即vi improvd,是vi的扩展和延伸,到目前已经发展成为跨平台,支持多种平台。并且在2006年被评为最流行的的unix编辑器。了解更多vim更多历史,请查看维基百科vi有2种模式:一命令模式,二插入模式。在命令模式下,按i、a、o等都可以进入插入模式,按[ESC]退出到命令模式。


http://michael.peopleofhonoronly.com/vim/


以下为vi常用的知识点:

我们可以将常用的设置保存到家目录下的.vimrc文件里。


[root@localhost ~]# cat .vimrc 
set nu ic
[root@localhost ~]#
set nu ic意思是显示行号,关闭大小写


vi -r file: 恢复上次异常退出的文件
vi + file: 从文件的末尾开始
vi +n file: 从第n行开始

i: 在光标前插入
I: 在当前行第一个非空字符前插入
a: 在光标后插入
A: 在当前行最后插入
o: 在下面新建一行插入
O: 在上面新建一行插入

ZZ or :wq or :x 保存并退出
:w 保存不退出
:n,mw file 保存第n到m行到文件file
:n,mw >>file 保存第n行到m行到文件file
:q 退出并保存
:q! or ZQ 退出不保存
:e! 并丢弃已做的改动,重新加载当前文档

:.= 显示当前行号
:= 显示文件中的总行数
Control-G 显示文件名字,当前行,总行数及当前位置百分比

h: 左移一个字符,比如5h意思是向左移动5个字符
l: 右移一个字符
j: 下移一行
k: 上移一行
w: 前移一个单词,光标停在下一个单词开头
W: 移动下一个单词开头,但忽略一些标点
e: 前移一个单词,光标停在下一个单词末尾
E: 移动到下一个单词末尾,如果词尾有标点,则移动到标点
b: 后移一个单词,光标停在上一个单词开头
B: 移动到上一个单词开头,忽略一些标点
fc: 把光标移到同一行的下一个c字符处
Fc: 把光标移到同一行的上一个c字符处
tc: 把光标移到同一行的下一个c字符前
Tc: 把光标移到同一行的上一个c字符后

0: 移动到行首
^: 移动到本行第一个非空白字符
$: 移动到行尾
n|: 把光标移到第n列上
nG: 到文件第n行
:n 移动到第n行
:$ 移动到最后一行
H: 把光标移到屏幕最顶端一行
M: 把光标移到屏幕中间一行
L: 把光标移到屏幕最底端一行
gg or 1G: 到文件头部
G: 到文件尾部

:s/A/B - 用B替换当前行第一个A
:s#A#B#g - 用B替换当前行所有的A,如果里面包含/可用#替换/
:s/A/B/g - 用B替换当前行所有的A
:n1,n2s/A/B/g - 用B替换文件n1行到n2行所有的A
:%s/A/B/g - 用B替换文件中所有的A
:%s/^/xxx/g - 在每一行的行首插入xxx,^表示行首
:%s/$/xxx/g - 在每一行的行尾插入xxx,$表示行尾

[n]x: 剪切光标右边n个字符,相当于d[n]l
[n]X: 剪切光标左边n个字符,相当于d[n]h
yy or Y: 复制整行文本
y[n]w: 复制一(n)个词
y[n]l: 复制光标右边1(n)个字符
y[n]h: 复制光标左边1(n)个字符
y$: 从光标当前位置复制到行尾
y0: 从光标当前位置复制到行首
:m,ny  复制m行到n行的内容
y1G或ygg: 复制光标以上的所有行
yG: 复制光标以下的所有行
yaw和yas:复制一个词和复制一个句子,即使光标不在词首和句首也没关系
d: 删除(剪切)在可视模式下选中的文本
d$ or D: 删除(剪切)当前位置到行尾的内容
d[n]w: 删除(剪切)1(n)个单词
d[n]l: 删除(剪切)光标右边1(n)个字符
d[n]h: 删除(剪切)光标左边1(n)个字符
d0: 删除(剪切)当前位置到行首的内容
[n]dd: 删除(剪切)1(n)行
:m,nd 剪切m行到n行的内容
d1G或dgg: 剪切光标以上的所有行
dG: 剪切光标以下的所有行
p: 在光标之后粘贴
P: 在光标之前粘贴


ci(, di(, yi(:修改、剪切或复制()之间的内容
ca(, da(, ya(:修改、剪切或复制()之间的内容,包含()


:! cmd 执行外部命令
:!! 执行上一次的外部命令
!! cmd 执行外部命令并把结果输入到当前位置
:sh 调用shell,用exit返回vi
:r !cmd 将命令的返回结果插入文件当前位置
:m,nw !cmd 将文件的m行到n行之间的内容做为命令输入执行命令

ctrl+f: 下翻一屏
ctrl+b: 上翻一屏
ctrl+d: 下翻半屏
ctrl+u: 上翻半屏
ctrl+e: 向下滚动一行
ctrl+y: 向上滚动一行
n%: 到文件n%的位置
zz: 将当前行移动到屏幕中央
zt: 将当前行移动到屏幕顶端
zb: 将当前行移动到屏幕底端

在windows下也可以使用vim,可以从下面链接下载

http://www.vim.org/download.php


从windows转化为Linux格式(可以用dos2unix,如果没有这个可以用下面的命令转化)

Windows和Linux换行符是不一样。Windows下是CRLF(\r\n或0d0a)表示,显示为^M,Linux下用LF(\n或0a)表示

回车:CR(carriage return)

换行:LF(line Feed)

%s/^M//g
Note that there ^ is a control letter. To enter the control sequence ^M press Ctrl+v,Ctrl+m.


set -o vi

通过这个选项,可以在bash/ksh下操作像在vi编辑器下操作一样。比如像查找已执行过的sqlplus命令,可以通过[ESC] /sqlplus [CR],然后根据情况下翻【j】,上翻【k】操作


Reference

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

http://tnerual.eriogerg.free.fr/vim.html
http://www.lagmonster.org/docs/vi.html

http://jrmiii.com/2009/03/06/learning-vim-the-pragmatic-way.html

http://jrmiii.com/attachments/Vim.pdf

http://sheet.shiar.nl/vi



关键词:unix vim vi 

相关文章

Unix vi/vim editor
Top