当前位置 主页 > 网站技术 > 代码类 >

    最全的VI命令与快捷键大全集合建议收藏(4)

    栏目:代码类 时间:2020-02-06 18:06

    %s/vivian/sky/g # (等同于 g/vivian/s//sky/) 替换每一行的每一个 vivian 为 sky

    s#vivian/#sky/# # 替换当前行第一个 vivian/ 为 sky/(可以使用 #或+作为分隔符,此时中间出现的 / 不会作为分隔符)

    s/p1/p2/g # 将当前行中所有p1均用p2替代

    n1,n2s/p1/p2/g # 将第n1至n2行中所有p1均用p2替代

    g/p1/s//p2/g # 将文件中所有p1均用p2替换

    寄存器

    “?nyy # 将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字

    “?nyw # 将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字

    “?nyl # 将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字

    “?p # 取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字

    ndd # 将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

    选项设置

    set number # 显示行号

    set number! # 不显示行号,其它选项同理加!号

    set all # 列出所有选项设置情况

    set term # 设置终端类型

    set ignorance # 在搜索中忽略大小写

    set list # 显示制表位(Ctrl+I)和行尾标志($)

    set report # 显示由面向行的命令修改过的数目

    set terse # 显示简短的警告信息

    set warn # 在转到别的文件时若没保存当前文件则显示NO write信息

    set nomagic # 允许在搜索模式中,使用前面不带“”的特殊字符

    set nowrapscan # 禁止vi在搜索到达文件两端时,又从另一端开始

    set mesg # 允许vi显示其他用户用write写到自己终端上的信息

    插入命令

    i 在当前位置生前插入

    I 在当前行首插入

    a 在当前位置后插入

    A 在当前行尾插入

    o 在当前行之后插入一行

    O 在当前行之前插入一行

    查找命令

    /text #查找text,按n健查找下一个,按N健查找前一个。

    ?text #查找text,反向查找,按n健查找下一个,按N健查找前一个。

    vim #中有一些特殊字符在查找时需要转义 .[]^%/?~$ :set ignorecase #忽略大小写的查找 :set noignorecase #不忽略大小写的查找。查找很长的词,如果一个词很长,键入麻烦,可以将光标移动到该词上,按或#键即可以该单词进行搜索,相当于/搜索。而#命令相当于?搜索。

    :set hlsearch #高亮搜索结果,所有结果都高亮显示,而不是只显示一个匹配。

    :set nohlsearch #关闭高亮搜索显示

    :nohlsearch #关闭当前的高亮显示,如果再次搜索或者按下n或N键,则会再次高亮。

    :set incsearch #逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成。

    :set wrapscan #重新搜索,在搜索到文件头或尾时,返回继续搜索,默认开启。

    替换命令

    ra #将当前字符替换为a,当期字符即光标所在字符。

    s/old/new/ #用old替换new,替换当前行的第一个匹配

    s/old/new/g #用old替换new,替换当前行的所有匹配

    %s/old/new/ #用old替换new,替换所有行的第一个匹配

    %s/old/new/g #用old替换new,替换整个文件的所有匹配

    :10,20 s/^/ /g #在第10行知第20行每行前面加四个空格,用于缩进。

    ddp #交换光标所在行和其下紧邻的一行。

    移动命令

    h 左移一个字符

    l 右移一个字符,这个命令很少用,一般用w代替。

    k 上移一个字符

    j 下移一个字符

    以上四个命令可以配合数字使用,比如20j就是向下移动20行,5h就是向左移动5个字符,在Vim中,很多命令都可以配合数字使用,比如删除10个字符10x,在当前位置后插入3个!,3a!,这里的Esc是必须的,否则命令不生效。