vi&&vim用法

本文详细介绍Vi/Vim编辑器的各种实用快捷键,包括插入模式、操作命令、光标移动、查找替换及文件操作等。适用于初学者快速上手及进阶用户的技巧提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

插入:
命令 含义 命令 含义
a 在光标后输入(进入输入模式) A 行尾插入(进入输入模式)
i 在光标前输入(进入输入模式) I 从光标所在列的第一个非空白字元前面开始插入(进入输入模式)
o 光标所在行下面新加一行(进入输入模式) O 光标所在行上面新加一行(进入输入模式)

操作:
y 复制选择部分 yw 复制单词
yy 复制行 p 粘贴
d 删除选择部分 dd 删除行
数字n+dd 删除n行 gg 到文件头
GG 到文件尾 n+yy 复制当前开始的n行

删除和复制(普通模式、可视模式)

删除:

  • dd:    删除一行
  • dw:    删除一个单词,需将光标移到单词的第一个字母。
  • d$:    删除当前光标到该行的行尾的字母
  • daw:   删除一个单词,光标在单词任意位置
  • dnw:   删除N个单词
  • dnj:    向下删除n行
  • dnk:    向上删除n行
  • J:      删除换行符,将光标移到改行,按shift+j删除行尾的换行符,下一行接上来了。
  • x    删除光标下的字符 ("dl" 的缩写)
    X    删除光标前的字符 ("dh" 的缩写)
    D    从当前位置删除到行尾 ("d$" 的缩写)
    dw    从当前位置删除到下一个单词开头
    db    从当前位置删除到前一个单词的开头
    diw    删除光标上的单词 (不包括空白字符)
    daw    删除光标上的单词 (包括空白字符)
    dG    删除到文件末
    dgg    删除到文件首


    "dl"    删除字符 (缩写: "x")            |dl|
    "diw"    删除内含单词                *diw*
    "daw"    删除一个单词                *daw*
    "diW"    删除内含字串 (见 |WORD|)        *diW*

    "daW"    删除一个字串 (见 |WORD|)        *daW*
    "dd"    删除一行                |dd|
    "dis"    删除内含句子                *dis*
    "das"    删除一个句子                *das*
    "dib"    删除内含 '(' ')' 块            *dib*
    "dab"    删除一个 '(' ')' 块            *dab*
    "dip"    删除内含段落                *dip*
    "dap"    删除一个段落                *dap*
    "diB"    删除内含 '{ ' ' }' 大块            *diB*
    "daB"    删除一个 '{ ' ' }' 大块            *daB

复制:

  • yy:    复制一行
  • yw:    复制一个单词,需将光标移到单词的第一个字母。
  • yaw:   复制一个单词,光标在单词任意位置
  • ynw:   复制N个单词
  • ynj:    向下复制n行
  • ynk:    向上复制n行

修改:

  • cl:    更改当前字符
  • cw:    修改当前单词到结尾
  • cc:    修改当前行

粘贴:p,粘贴用x、d、y操作的文本


光标:
k 上一行 h 左移一个字符
l 右移一个字符 j 下一行
$        当前行的末尾

0        当前行的开头

^        当前行第一个字母

gg       文件头

G        文件尾

``       回到光标跳转前的位置

H        跳到屏幕上的第一行

M        跳到屏幕的中间行

L        跳到屏幕上的最后一行

w:      光标以单词向前移动至单词第一个字母

b:      与w相反,向后移动至单词的第一个字母

e:       光标以单词向前移动至单词最后一字母

ge:      与e相反,向后移动至单词的最后一字母

%:       移动到与制匹配的括号上去(),{},[],<>等

CTRL+G  得到当前光标在文件中的位置

向下翻页(page down):    CTRL+f

向上翻页(page up):    CTRL+b

向下移动半屏:CTRL+d

向上移动半屏:CTRL+u

'' 同`` -- 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查

找到某个单词后, 再输入此命令则回到上次停留的位置.

'. -- 此命令相当好使, 它移动光标到上一次的修改行.

`. -- 此命令相当强大, 它移动光标到上一次的修改点.



ctrl+d向下翻半屏 ctrl+f 向下翻屏
ctrl+b 向上翻屏 ctrl+u 向上翻半屏
0(零);^ 行首$ 行尾

GG 到文件尾 gg 到文件头


查找替换:

N找到上一个匹配字符 n 找到下一个匹配字符
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
:%s/vivian/sky/ 等同于 :g/vivian/s//sky/ 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g 等同于 :g/vivian/s//sky/g 替换每一行中所有 vivian 为 sky
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/ ;可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

推出保存:

命令 含义 命令 含义
esc 重新进入命令模式 esc + “:” 进入vi行末模式
q 退出 q! 强制退出
wq 保存并退出 w 保存
ls 执行系统命令ZZ保存退出
ZQ不保存退出:x保存退出

寄存器下的操作:

在复制前可以先指定一个寄存器,方法是在双引号后跟一个字母,例如"a指定了寄存器a,"B指定了寄存器B。所以,"ayy把当前行放进了寄存器a,以后就可以用"ap来粘贴寄存器a里的内容了。如果不确定寄存器里放了什么内容,可以使用:reg来查看。

Vim提供了一个很有用的特殊寄存器"+,它的内容就是系统剪贴板的内容。可以在Vim里用"+p粘贴出来。

多文件操作

 :ls (:buffers)     显示buffer列表

  1. :bn                  转到下一个buffer
    :bp                  转到上一个buffer
    :b 3                 转到编号为 3 的buffer
    :b index.html        转到名为index.html的buffer

2011071116465588.jpg

转载于:https://www.cnblogs.com/codelifezj/archive/2011/07/11/2103188.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值