您的位置:首页 > 其它

VI使用技巧-集锦

2009-09-17 14:20 218 查看
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"/@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:宋体;
mso-font-kerning:1.0pt;}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline;
text-underline:single;}
p
{mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:宋体;
mso-bidi-font-family:宋体;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:595.3pt 841.9pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
layout-grid:15.6pt;}
div.Section1
{page:Section1;}
-->

命令 光标移动

h
或^h
向左移一个字符

l
或空格 向右移一个字符

w
移到下一个字的开头

W
移到下一个字的开头,忽略标点符号

b
移到前一个字的开头

B
移到前一个字的开头,忽略标点符号

e
移到下一个字的结尾

E
移到下一个字的结尾,忽略标点符号

(
移到句子的开头

)
移到句子的结尾

{
移到段落的开头

}
移到下一个段落的开头

0
或|
移到当前行的第一列

n|
移到当前行的第n


+
或return

移到下一行的第一个字符

-
移到前一行的第一个非空字符

j
或^j
或^n
向下移一行

k
或^p
向上移一行

G
移到文件的最后一行

nG
移到文件的第n


L
移到屏幕的最后一行

M
移到屏幕的中间一行

H
移到屏幕的第一行

^
移到当前行的第一个非空字符

$
移到当前行的最后一个字符

在vi
中添加文本


命令 插入动作

a
在光标后插入文本

A
在当前行插入文本

i
在光标前插入文本

I
在当前行前插入文本

o
在当前行的下边插入新行

O
在当前行的上边插入新行

escape
回到命令模式

^v char
插入时忽略char
的指定意义,这是为了插入特殊字符

:r file

读入文件file
内容,并插在当前行后

:nr file
读入文件file
内容,并插在第n
行后

在vi
中删除文本


命令 删除操作

x
删除光标处的字符,可以在x
前加上需要删除的字符数目

nx
从当前光标处往后删除n
个字符

X
删除光标前的字符,可以在X
前加上需要删除的字符数目

nX
从当前光标处往前删除n
个字符

dw
删至下一个字的开头

ndw
从当前光标处往后删除n
个字

dG
删除行,直到文件结束

dd
删除整行

ndd
从当前行开始往后删除

db
删除光标前面的字

ndb
从当前行开始往前删除n


:n,md
从第m
行开始往前删除n


d
或d$
从光标处删除到行尾

dcursor_command
删除至光标命令处,如dG
将从当产胆行删除至文件的末尾

^h
或backspace

插入时,删除前面的字符

^w
插入时,删除前面的字

修改vi
文本


每个命令前面的数字表示该命令重复的次数

命令 替换操作

r char
用char
替换当前字符

R text escape
用text
替换当前字符直到换下Esc


stext escape
用text
代替当前字符

S
或cctext
escape
用text
代替整行

cwtext escape
将当前字改为text

Ctext escape
将当前行余下的改为text

cG escape
修改至文件的末尾

ccursor_cmd text escape
从当前位置处到光标命令位置处都改为text

在vi
中查找与替换


命令 查找与替换操作

/text
在文件中向前查找text

?text
在文件中向后查找text

n
在同一方向重复查找
N
在相反方向重复查找

ftext
在当前行向前查找text

Ftext
在当前行向后查找text

ttext
在当前行向前查找text
,并将光标定位在text
的第一个字符

Ttext
在当前行向后查找text
,并将光标定位在text
的第一个字符

:set ic
查找时忽略大小写

:set noic
查找时对大小写敏感

:s/oldtext/newtext
用newtext
替换oldtext

:m,ns/oldtext/newtext
在m
行通过n
,用newtext
替换oldtext

&
重复最后的:s
命令

:g/text1/s/text2/text3
查找包含text1
的行,用text3
替换text2

:g/text/command
在所有包含text
的行运行command
所表示的命令

:v/text/command
在所有不包含text
的行运行command
所表示的命令

在vi
中复制文本


命令 复制操作

yy
将当前行的内容放入临时缓冲区

nyy
将n
行的内容放入临时缓冲区

p
将临时缓冲区中的文本放入光标后

P
将临时缓冲区中的文本放入光标前

"(a-z)nyy
复制n
行放入名字为圆括号内的可命名缓冲区,省略n
表示当前行

"(a-z)ndd
删除n
行放入名字为圆括号内的可命名缓冲区,省略n
表示当前行

"(a-z)p
将名字为圆括号的可命名缓冲区的内容放入当前行后

"(a-z)P
将名字为圆括号的可命名缓冲区的内容放入当前行前

在vi
中撤消与重复


命令 撤消操作

u
撤消最后一次修改

U
撤消当前行的所有修改

.
重复最后一次修改

,
以相反的方向重复前面的f
、F
、t
或T
查找命令

;
重复前面的f
、F
、t
或T
查找命令

"np
取回最后第n
次的删除(
缓冲区中存有一定次数的删除内容,一般为9)

n
重复前面的/
或?
查找命令

N
以相反方向重复前面的/
或?
命令

保存文本和退出vi



命令 保存和/
或退出操作

:w
保存文件但不退出vi

:w file
将修改保存在file
中但不退出vi

:wq
或ZZ
或:x
保存文件并退出vi

:q!
不保存文件,退出vi

:e!
放弃所有修改,从上次保存文件开始再编辑

vi

中的选项


选项 作用

:set all
打印所有选项

:set nooption
关闭option
选项

:set nu
每行前打印行号

:set showmode
显示是输入模式还是替换模式

:set noic
查找时忽略大小写

:set list
显示制表符(^I)
和行尾符号

:set ts=8
为文本输入设置tab stops

:set window=n
设置文本窗口显示n


vi

的状态


选项 作用

:.=
打印当前行的行号

:=
打印文件中的行数

^g
显示文件名、当前的行号、文件的总行数和文件位置的百分比

:l
使用字母"l"
来显示许多的特殊字符,如制表符和换行符

在文本中定位段落和放置标记


选项 作用

{
在第一列插入{
来定义一个段落

[[
回到段落的开头处

]]
向前移到下一个段落的开头处

m(a-z)
用一个字母来标记当前位置,如用mz
表示标记z

'(a-z)
将光标移动到指定的标记,如用'z
表示移动到z

在vi
中连接行


选项 作用

J
将下一行连接到当前行的末尾

nJ
连接后面n


光标放置与屏幕调整


选项 作用

H
将光标移动到屏幕的顶行

nH
将光标移动到屏幕顶行下的第n


M
将光标移动到屏幕的中间

L
将光标移动到屏幕的底行

nL
将光标移动到屏幕底行上的第n


^e(ctrl+e)
将屏幕上滚一行

^y
将屏幕下滚一行

^u
将屏幕上滚半页

^d
将屏幕下滚半页

^b
将屏幕上滚一页

^f
将屏幕下滚一页

^l
重绘屏幕

z-return
将当前行置为屏幕的顶行

nz-return
将当前行下的第n
行置为屏幕的顶行

z.
将当前行置为屏幕的中央

nz.
将当前行上的第n
行置为屏幕的中央

z-
将当前行置为屏幕的底行

nz-
将当前行上的第n
行置为屏幕的底行

vi

中的shell
转义命令


选项 作用

:!command
执行shell
的command
命令,如:!ls

:!!
执行前一个shell
命令

:r!command
读取command
命令的输入并插入,如:r!ls
会先执行ls
,然后读入内容

:w!command
将当前已编辑文件作为command
命令的标准输入并执行command
命令,如:w!grep all

:cd Director

y
将当前工作目录更改为directory
所表示的目录

:sh
将启动一个子shell
,使用^d(ctrl+d)
返回vi

:so file
在shell
程序file
中读入和执行命令

vi

中的宏与缩写


(
避免使用控制键和符号,不要使用字符K
、V
、g
、q
、v
、*
、=
和功能键)

选项 作用

:map key command_seq
定义一个键来运行command_seq
,如:map e ea
,无论什么时候都可以e
移到一个字的末尾来追加文本

:map
在状态行显示所有已定义的宏

:umap key
删除该键的宏

:ab string1 string2
定义一个缩写,使得当插入string1
时,用string2
替换string1
。当要插入文本时,键入string1
然后按Esc
键,系统就插入了string2

:ab
显示所有缩写

:una string
取消string
的缩写

在vi
中缩进文本


选项 作用

^i(ctrl+i)
或tab
插入文本时,插入移动的宽度,移动宽度是事先定义好的

:set ai
打开自动缩进

:set sw=n
将移动宽度设置为n
个字符

n<<
使n
行都向左移动一个宽度

n>>
使n
行都向右移动一个宽度,例如3>>
就将接下来的三行每行都向右移动一个移动宽度

1.
编辑模式:
插入/
替换 (按INSERT
键切换)

2.[ESC]
指令模式

3.
输入模式 将在指令模式下输入 a

新增(a,A


a:
从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动。

A:
从光标所在列最后面的地方开始新增资料。

插入(i,I


i:
从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。

I:
从光标所在列的第一个非空白字元前面开始插入资料。

开始(o,O


o:
在光标所在列下新增一列并进入输入模式。

O:
在光标所在列上方新增一列并进入输入模式。

4.
存盘/
退出

[ESC] :wq //
存盘退出

:w! //
存盘继续

:q //
退出 (源文件未被编辑过可用)

:q! //
强制退出

5.
删除与改修

[ESC] x //
删除光标所在字符

dd //
删除光标所在列。

r //
修改光标所在字元,r
后接着要修正的字符。

R //
进入取替换状态。

s //
删除光标所在字元,并进入输入模式。

S //
删除光标所在的列,并进入输入模式。

6.
恢复

[ESC] u //
可以恢复被删除的文字。

U //
可以恢复光标所在列的所有改变。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: