慈溪超市转让:vi键盘操作

来源:百度文库 编辑:中财网 时间:2024/05/04 09:07:22

简单移动光标

h - 光标左移一个字符
j - 光标下移一个字符
k - 光标上移一个字符
l(小写 L) - 光标右移一个字符

也可以使用方向键,向各个方向移动一个字符。
在上面的命令前加一个数字键,表示执行上面命令的次数。例如 4l 表示执行 l 命令 4 次,即四次向右移动一个字符。
 
 
行内移动
 
0(数字零)、^ - 光标移动到行首
$ - 光标移动到行尾
 
以文本块为单位移动
 
w - 光标向前移动一个单词,特殊符号以及标点符号同样作为单词处理
W - 光标向前移动一个单词,特殊符号以及标点符号不作为单词处理,即会忽略特殊符号和标点符号
b - 光标向后移动一个单词,特殊符号以及标点符号作为单词处理
B - 光标向后移动一个单词,特殊符号以及标点符号不作为单词处理,即会忽略特殊符号和标点符号
 
G - 光标移动到文件最后一行
nG - 光标移动到文件的第 n 行
 
插入
 
i - 进入插入模式,在当前光标处插入文本,直到按下 ESC 为止,当按下 ESC,退出插入模式,返回到命令模式
 
追加
 
a - 在当前光标后追加文本,当输入 a 命令后,光标向后移动一个字符,直到按下 ESC 键为止
 
修改
 
使用 c 命令修改文本。修改的时候需要使 c 命令知道哪些文本是需要修改的,在 c 命令后紧接一个移动命令。如果修改仅仅影响到当前行,vi 则会在待修改的文本末尾使用 $ 标识。( 注 :在 vim 中,使用命令 :set cp 使 vim 的行为兼容 vi,:set nocp 则使 vim 的行为不兼容 vi,vim 只有在兼容模式下才能在待修改文本的末尾使用 $ 标识 )
 
执行修改命令后,可以使用任意多个字符或文本来替换以前的文本,在执行修改命令后输入的文本都会替换掉以前的文本,直到按下 ESC 键为止,如果输入命令紧接着按下 ESC 键,则会删除待修改的文本。
 
cw - 修改一个单词,同样可以修改单词的一个部分,例如把 spelling 修改为 spelled,只要把光标移动到 i 上,执行 cw 命令,并输入 ed 并按下ESC 就可以了
cc - 修改光标所在行整行的内容。cc 命令与 cw 所不同的是,cw 首先会标识出整个待修改的文本,在输入的文本长度超过待修改的文本之前,待修改的文本以及 $ 符号会一直显示,直到输入的文本长度超过待修改的文本的长度为止,如果新文本的长度比待修改的文本短,当按下 ESC 后,剩余的文本则会被删除;然而 cc 命令首先会删除当前文本行,把光标移动到行首,并进入插入模式等待用户输入。
C - 修改当前光标到行尾的文本,效果与 c$ 等同
r - 修改当前光标所在的那个字符,r 命令不需要使用 ESC 返回命令模式
 
vi 命令的通用格式
 
很多 vi 命令都遵循以下的模式( 括号仅是为了区分不同的部分 ):
 
(command )(text object )
 
command 可以是修改命令 c 或删除命令 d 等,text object 则是移动命令。
由于移动命令前面可以添加一个可选的数值参数表示命令执行的次数,所以上述的模式可以扩展成以下的通用模式:
 
(command )(number )(text object )
 

 
(number )(command )(text object )


 
 
替换
 
如 果仅仅希望修改几个字符,而不是整个单词,那可以使用 s 命令。s 命令仅替换单个字符,使用一个数值参数则可以修改多个字符。如果仅使用 s 命令替换一个字符,那么一旦执行 s 命令,就会删除光标所在字符,如果使用命令 ns 替换 n 个字符,那么 vi 同样会使用 $ 标识 n 个字符的末尾,同样使用 ESC 来结束修改。
 
S - 替换当前行整行的文本
R - 替换从当前光标开始向后的文本,直到按下 ESC 键。执行 R 命令后,vi 会进入插入模式,输入的任何字符会替换掉当前光标所在位置的字符,直到按下 ESC。R 命令最多仅能替换当前行的内容,如果修改到行尾,输入 ENTER 则会创建一个新行,如果在到达行尾之前输入 ENTER,光标后面的字符会转到下一行,新输入的字符同样会替换掉已存在的字符。
 
改变大小写
 
~ - 改变当前光标处字符的大小写,并把光标向后移动一个字符
n~ - 改变当前光标开始的 n 个字符的大小写
 
删除
 
使用删除命令 d 可以删除文件中的文本,与修改命令 c 一样,删除命令需要一个 text object。
 
删除单词
 
dw - 删除当前光标到单词末尾 的字符,并删除单词后面的空白
de - 删除当前光标到单词末尾 的字符,不包括单词后面的标点,也不包括单词后面的空白
dE - 删除当前光标到单词末尾 的字符,包括单词后面的标点,但不包括单词后面的空白
db - 删除当前光标到单词开头的字符
 
dd- 删除光标所在行
D - 删除当前光标到行尾的所有字符,效果与 d$ 相同
 
x - 删除当前光标处的字符
X - 删除当前光标之前的字符
 
移动文本
 
在 vi 中移动文本是先删除文本,然后把删除的文本放置到新的位置。每次删除一些文本的时候,这些文本被临时地保存在一个特殊的缓冲区中。
 
p(小写) - 把缓存中的文本放置到光标之后。如果删除一行或多行文本,p 把文本放置到光标所在的下一行;如果删除的不足一行,p 则把文本放置到光标所在行
P(大写) - 把缓存中的文本放置到光标之前
 
xp - 把光标所在位置的字符后移一个字符的位置(x 先删除光标所在位置的字符,使用 p 把这个字符放置到光标之后)
 
复制文本
 
yank (y) 命令把指定数量的文本复制到一个特殊的缓冲区中,这个缓冲区中的内容会一直保持到下一次 yank 之前,然后通过命令 p 可以把这些文本复制到文件中的其它位置。与修改命令和删除命令一行,yank 命令后跟一个移动命令指定 yank 的文本的范围。
 
yy - yank 整行( 同 Y )
 
yank 与删除共用同一个缓冲区,每次 yank 或删除会覆盖掉前一次 yank 或删除的内容。
 
.(点) - 重复执行最后执行的一个命令
u - 撤销最后一个命令所做的修改
U - 只要光标还在已经做过修改的行上,则撤销在光标所在行做的任何修改,光标一旦离开了执行过修改的行,就不能使用 U 命令了
 
其它插入方式
 
A - 在当前行结尾处追加
I - 在当前行开始处插入
o(小写) - 在当前行下一行插入一个新行
O(大写) - 在当前行上一行插入一个新行
s - 删除当前光标所在处的字符,并使用任意文本替换
S - 删除当前行,使用任意文本替换
R - 替换当前光标开始的任意个字符
 
所有这些命令使 vi 进入插入模式,使用 ESC 返回命令模式。
 
合并
 
J - 把光标的下一行合并到光标所在行,在当前行与合并的行之间添加一个空格,并把光标移动到这个空格处

 

movement by screens

 

ctrl + F - 向前滚动一屏,光标移动到下一屏的第一行

ctrl + B - 向后滚动一屏,光标移动到上一屏的最后一行

ctrl + D - 向前滚动半屏,光标移动到屏幕中间一行

ctrl + U - 向后滚动半屏,光标移动到屏幕中间一行

ctrl + E - 向前滚动一行,光标位置保持不变

ctrl + Y - 向后滚动一行,光标位置保持不变

 

如果想滚动屏幕但却不希望移动光标的位置,可以使用 z 命令。

 

zENTER - 滚动屏幕使光标所在行移动到屏幕第一行

z.(点号) - 滚动屏幕使光标所在行移动到屏幕中间

z-(减号) - 滚动屏幕使光标所在行移动到屏幕最后一行

 

在 z 命令前添加 n 前缀表示把第 n 行移动到屏幕的相应位置,如 200zENTER 表示把第 200 行移动到屏幕第一行。

 

有时系统中会出现一些系统消息影响你的编辑工作,这时使用命令 ctrl + L 可以使 vi 刷新屏幕。

 

H - 光标移动到当前屏的第一行

M - 光标移动到当前屏的中间一行

L - 光标移动到当前屏的最后一行

nH - 光标移动到当前屏从第一行开始向下的第 n 行

nL - 光标移动到当前屏从最后一行开始向上的第 n 行

 

ENTER、+ - 光标移动到下一行的第一个字符

-(减号) - 光标移动到上一行的第一个字符

上面三个命令把光标移动到一行中第一个不是空白或 tab 字符的位置。

^ - 光标移动到行内第一个非空白的字符处

0 - 光标移动到行内的第一个字符处,包括空白

n| - 光标移动到当前行的第 n 个字符处

 

movement by text blocks

 

e - 光标移动到单词末尾

E - 光标移动到单词末尾,忽略标点

( - 光标移动到当前句的开头

) - 光标移动到下一句的开头

{- 光标移动到当前段落的开头

} - 光标移动到下一段落的开头

[[ -光标 移动到当前 section 的开头

]] -光标 移动到下一 section 的开头

 

寻找句子的结尾,vi 查找标点:? , . !。有两种情况 vi 认为是句子的结尾,上述标点后面紧跟两个以上的空格,或是一行的最后一个非空白字符为上述标点中的一个。

 

movement by searchs

 

/pattern - 从光标所在位置开始,向文件的结尾搜索 pattern,如果能够搜索到,光标会移动到 pattern 的第一个字符处

pattern - 从光标所在位置开始,向文件的开头搜索 pattern,如果能够搜索到,光标会移动到 pattern 的第一个字符处

 

n - 在同一个方向搜索下一个匹配的 pattern

N - 在相反的方向搜索下一个匹配的 pattern

/ENTER - 效果同命令 n

ENTER - 效果同命令 N

 

set 选项 wrapscan 设置是否循环搜索。如果开启 wrapscan 选项,当搜索到最后一个 pattern 后则会从文件的开头或结尾继续搜索,如果关闭 wrapscan 选项,搜索到最后一个 pattern 后会显示一个错误消息。

 

行内搜索

 

下面这些命令仅在当前行执行搜索,不会把光标移动到其他行。( 以下命令中的 x 可以为任何字符 )

fx - 从光标所在处向后查找字符 x,并把光标移动到字符 x 上

Fx - 从光标所在处向前查找字符 x,并把光标移动到字符 x 上

tx - 从光标所在处向后查找字符 x,并把光标移动到 x 前一个字符上

Tx - 从光标开始处向前查找字符 x,并把光标移动到 x 后一个字符上

; - 在同一个方向重复执行前一个行内搜索命令

, - 在相反方向重复执行前一个行内搜索命令

 

:set nu 显示行号,:set nonu 不显示行号。命令 ctrl + G 会使 vi 在屏幕的最下方显示如下信息:当前行号,文件的行数,当前显示的行数占文件总行数的百分比。

 

``(反引号) - 光标移回上一次光标移动之前光标所在的位置。如果执行了一些编辑后使用 G 命令移动光标,那么 `` 会把光标移回执行编辑的位置;如果刚执行过搜索,`` 则会把光标移回开始搜索时光标所在位置。

''(两个单引号) - 光标移回上一次光标移动之前光标所在行的第一个字符处