您的位置:首页 > 其它

vim的简单使用

2010-07-18 07:53 197 查看
简单移动光标
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 把这个字符放置到光标之后)

复制文本

复制(y) 命令把指定数量的文本复制到一个特殊的缓冲区中,这个缓冲区中的内容会一直保持到下一次复制之前,然后通过命令 p 可以把这些文本粘贴到文件中的其它位置。与修改命令和删除命令一样,复制命令后跟一个移动命令指定复制的文本的范围。

yy - 复制整行( 同 Y )

复制与删除共用同一个缓冲区,每次复制或删除会覆盖掉前一次复制或删除的内容。

.(点) - 重复执行最后执行的一个命令
u - 撤销最后一个命令所做的修改
U - 只要光标还在已经做过修改的行上,则撤销在光标所在行做的任何修改,光标一旦离开了执行过修改的行,就不能使用 U 命令了

其它插入方式

A - 在当前行结尾处追加
I - 在当前行开始处插入
o(小写) - 在当前行下一行插入一个新行
O(大写) - 在当前行上一行插入一个新行
s - 删除当前光标所在处的字符,并使用任意文本替换
S - 删除当前行,使用任意文本替换
R - 替换当前光标开始的任意个字符

所有这些命令使 vi 进入插入模式,使用 ESC 返回命令模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: