Vim 命令

Vim 中的内部命令与 vi 编辑器中的内部命令类似。表 1 提供了 Vim 中的光标移动命令。
表 1. 用于移动光标的 Vim 命令

命令动作
h将光标向左移动
j、加号 (+)、Enter 或 Return将光标向下移动
k、减号 (-)将光标向上移动
l将光标向右移动
}将光标移动到当前段落的末尾
{将光标移动到当前段落的开头
)将光标移动到当前句子的末尾
(将光标移动到当前句子的开头
^移动到当前行的第一个非空字符
$移动到当前行末尾
0 (zero)移动到当前行开头
w or W移动到下一单词的开头
b or B移动到上一单词的开头
e移动到下一单词的末尾
H移动到屏幕的第一行
M移动到屏幕的中间一行
L移动到屏幕的最后一行
G移动到文件末尾
gg移动到文件开头
:n移动到行 n

表 2 显示了用于删除文本的 Vim 命令。


表 2. 用于删除文本的 Vim 命令
命令动作
d删除选中的区域
dd删除整个当前行
10dd删除从当前行开始的 10 行,
dw从当前位置向前删除单词
db从当前光标位置左边开始向后删除单词
dl删除当前光标位置的字符
dh删除当前光标位置左边的字符
d0 (zero)删除当前光标位置到行开头之间的单词
D | d$删除从当前光标位置开始的整个行
x删除光标当前位置的字符
X删除光标当前位置之前的字符

表 3 提供了其他几个有用的 Vim 命令。


表 3. 常用 Vim 命令
命令动作
ih进入插入模式并在当前光标处插入
I进入插入模式并在当前行的开始处插入
a进入插入模式并追加到光标后面
A进入插入模式并追加到当前行末尾
c更改选中的区域
C更改从光标当前位置开始的整个行
o在光标当前所在行下方创建一个新空行,并将光标移动到这一新空行的开头
O在光标当前所在行的上方创建一个新空行,并将光标移动到这一新空行的开头
r替换光标当前位置的单个字符
R替换从光标当前位置开始的多个字符,并在退出插入模式时结束
<Esc>退出插入或可视模式
> or <Tab>向选中区域右边缩进
<向选中区域左边缩进
v启动时突出显示字符
V启动时突出显示的整个行
yy将当前行移动/复制到内存
10yy将从当前行开始的 10 行移动/复制到内存
p粘贴复制或剪切的文本;如果字符被复制(yw dwD),就在光标当前位置之后粘贴这些字符。如果复制的是行,就在光标当前所在的行下面粘贴这些行
P作用和 p 一样,但是它在光标当前位置的前面粘贴字符,在光标当前所在行上面粘贴行
u撤消最后的更改
<Ctrl> R重做
/<pattern>搜索已找到的下一个模式,并将光标放在已找到的模式的开头
?<pattern>搜索已找到的上一个模式,并将光标放在已找到的模式的开头
n重复上一次的搜索
N重复上一次的搜索,但搜索的方向相反
!<cmd>在 Vim 会话外执行 <cmd>




回页首


行模式

尽管广泛使用的是命令和插入模式,但行模式同样重要,只是有时候没有被充分理解和使用。行模式进入行编辑器,使您可以在一行或多行上处理命令。考虑到 vi 以 ex 编辑器命名,所以它只适合进入 ex 编辑器的行模式。

要从命令模式进入行模式,输入冒号(:)即可。然后将光标移动到窗口左下角。继续输入时,所有文本都会出现在窗口底部的冒号后面。单击 Enter,开始计算和执行行模式命令。如果确定不执行在行模式下输入的行,则单击 Escape 返回到命令模式。

使用编辑器的行模式时,请记住两种命令样式。首先,在输入命令时,vi 或 Vim 按原样执行命令。如果执行的命令与修改数据有关,当前行就是目标。但是,使用第二种方法可以提供行数以处理指定的行。要输入行,请在冒号后面输入要处理的行数或行范围,并用逗号(,)分隔开始和结束范围。

例如,如果只处理行 23,那么命令以 :23 开始。如果要修改 2319 到 3819 之间的行,则输入 :2319,3819。要处理从行 45 开始到文件结尾之间的一个命令,需要将最后行的参数替换为美元符号($)— 即 :45,$

以下命令只是可以在行模式下执行的最基本命令:

  • :w <file name>将文件写入磁盘。如果提供一个参数,编辑器会试图将数据写入 <file name>。

    注意:如果提供一个参数,而且存在 <file name>,编辑器不会覆盖现有文件的数据。

  • :w! <file name>将文件写入磁盘并覆盖文件中的所有数据。
  • :<x>,<y> w <file name>将从 <x> 到 <y> 之间的行写入 <file name>。
  • :q试图在不保存的情况下退出编辑器。

    注意:如果数据已修改,则需要先保存文件再退出编辑器,否则将导致文件未被保存。

  • :q!退出编辑器,不将文件写入磁盘。
  • :n如果编辑多个文件,首先编辑编辑列表中的下一个文件。
  • :e <file name>编辑 <file name>。
  • :e#如果编辑两个文件,则在两个文件之间切换。
  • :s/<str1>/<str2>/用当前行中的 <str2> 替换第一次出现的 <str1>。
  • :1,$ s/<str1>/<str2>/g从行 1 开始,在整个文件中执行,用 <str2> 替换所有的 <str1>。
  • :r <file name>将 <file name> 读入当前编辑器会话中。
  • :<x>,<y> d删除从 <x> 到 <y> 之间的行。
  • :<x>,<y> y复制从 <x> 到 <y> 之间的行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值