• vi大全



    xp
    交换两个字符位置
    ddp
    上下两行调换
    J
    上下两行合并
    dG
    删除所有行
    d$
    从当前位置删除到行尾
    y$
    从当前位置复制到行尾, 如果要粘贴到其他地方 p 就可以了

    :ab string strings
    例如 ":ab usa United States of America" ,
    当你在文见里插入 usa
    United States of America
    就蹦出来了
    :g/^/m0
    把文件内容反转
    :map keys new_seq
    定义你当前 键盘命令
    :set [all]
    vi or ex
    的编辑状态
    显示每行 :set nu
    :X
    然后系统会提示输入密码, 输入密码后存盘退出, 保存后就加密了
    下次编辑时使用vi -x filename, 系统会提示你输入密码

    在命令状态下,nyy表示拷贝从光标行起的下n行内容,p表示paste,粘贴下来在光标处。

    我常用到的单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S

    :%s/old_word/new_word/g
    这个指令是于在整个文件中替换特定字符串

    将光标移到第n行,按下 mk
    将光标移到第m行,按下 "ay'k
    即将第nm的行存到a寄存器,以此类推,bc........寄存器等

    不好意思,补充一下,想粘贴到某处,直接将光标移到某地,按下 ‘ap 即可

    删除命令操作
    d l
    删除当前字符(与x命令功能相同)
    d 0
    删除到某一行的开始位置
    d ^
    删除到某一行的第一个字符位置(不包括空格或TA B字符)
    d w
    删除到某个单词的结尾位置
    d 3 w
    删除到第三个单词的结尾位置
    d b
    删除到某个单词的开始位置
    d W
    删除到某个以空格作为分隔符的单词的结尾位置
    d B
    删除到某个以空格作为分隔符的单词的开始位置

    删除命令操作
    d 7 B
    删除到前面7个以空格作为分隔符的单词的开始位置
    d
    删除到某个语句的结尾位置
    d 4
    删除到第四个语句的结尾位置
    d
    删除到某个语句的开始位置
    d }
    删除到某个段落的结尾位置
    d {
    删除到某个段落的开始位置
    d 7 {
    删除到当前段落起始位置之前的第7个段落位置
    d d
    删除当前行
    d /t e x t
    删除从文本中出现“ t e x t”中所指定字样的位置,一直向前直到下一个该字样所出现的
    位置(但不包括该字样)之间的内容
    d fc
    删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括
    该字符)之间的内容
    d tc
    删除当前行直到下一个字符“ c”所出现位置之间的内容
    D
    删除到某一行的结尾
    d $
    删除到某一行的结尾
    5 d d
    删除从当前行所开始的5行内容
    d L
    删除直到屏幕上最后一行的内容
    d H
    删除直到屏幕上第一行的内容
    d G
    删除直到工作缓存区结尾的内容
    d 1 G
    删除直到工作缓存区开始的内容

    修改命令操作
    c l
    更改当前字符
    c w
    修改到某个单词的结尾位置
    c 3 w
    修改到第三个单词的结尾位置
    c b
    修改到某个单词的开始位置
    c W
    修改到某个以空格作为分隔符的单词的结尾位置
    c B
    修改到某个以空格作为分隔符的单词的开始位置
    c 7 B
    修改到前面7个以空格作为分隔符的单词的开始位置
    c 0
    修改到某行的结尾位置
    c
    修改到某个语句的结尾位置
    c 4
    修改到第四个语句的结尾位置
    c
    修改到某个语句的开始位置
    c }
    修改到某个段落的结尾位置
    c {
    修改到某个段落的开始位置
    c 7 {
    修改到当前段落起始位置之前的第7个段落位置
    c tc
    修改当前行直到下一个字符c所出现位置之间的内容
    C
    修改到某一行的结尾
    c c
    修改当前行
    5 c c
    修改从当前行所开始的5行内容

    替换命令操作
    s
    将当前字符替换为一个或多个字符
    S
    将当前行替换为一个或多个字符
    5 s
    将从当前字符开始的5个字符替换为一个或多个字符
    下载

    vi
    替换使用规则:
    :g/s1/s/s2/s3/g
    第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换
    s
    表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串

    fx
    往右移动到 x 字符上
    Fx
    往左移动到 x 字符上
    tx
    往右移动到 x 字符前
    Tx
    往左移动到 x 字符后
    (注意:以上四个命令中,其中x是键入的字符)
    ;
    分号,配合 f t 使用,重复一次
    ,
    逗号,配合 f t 使用,反方向重复一次

    建议谁把 :set all 出来的参数及其用法说明一下。注意注明UNIX平台,我发现几个平台下有些差异。

    加密码我在8 上(bsh 实验成功 所以大家最好还是加上 环境!!

    vi
    环境选项 Solaris ksh
    noautoindent nomodelines noshowmode
    autoprint nonumber noslowopen
    noautowrite nonovice tabstop=8
    nobeautify nooptimize taglength=0
    directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags
    noedcompatible prompt tagstack
    noerrorbells noreadonly term=vt100
    noexrc redraw noterse
    flash remap timeout
    hardtabs=8 report=5 ttytype=vt100
    noignorecase scroll=11 warn
    nolisp sections=NHSHH HUuhsh+c window=23
    nolist shell=/bin/ksh wrapscan
    magic shiftwidth=8 wrapmargin=0
    mesg noshowmatch nowriteany

    For C-Shell:
    setenv EXINIT "set nu"
    For Bourne or Korn Shell:
    EXINIT="set nu"; export EXINIT
    For Korn Shell Only (alternate method):
    typeset -x EXINIT="set nu"

    .profile 里设置 vi 的环境选项 , 以上均测试过

    怎么没有介绍标记的,做标记对那种大的程序文件阅读十分有帮助。
    建议大家使用。

    标记文本
      mchar   用字母char标记当前光标的位置
      `char   移至char所标记处
      'char   移至char标记所在行的开头处
      "     移至当前行上一次所在位置(在光标移动之后)――一个双引号
      ''    移至当前行上第一次所在位置的行的开头处(在光标移动之后)――两个单引号

    .
    重复上一次修改!

    大家都说了这么多了,我也来说两句
    在当前屏幕中
    H
    跳到第一行
    M
    跳到中间一行
    L
    跳到最后一行

    同时vi多个文件时,CTRL-SHIFT-6回到上一个文件,在本次vi的文件和上次vi的文件之间切换。其实就是一些文档写的 ^^
    但是我发现一个BUG:在用CTRL-SHIFT-6切换到上一个文件后,用:args查看多文件vi状态时,屏幕底部仍然显示目前vi的是刚才的文件。
    (
    HP-UX,Solaris,AIX上通过)

    还是使用
    :e#
    切换比较好,呵呵

    %s/^/
    要加的内容/g 要在文本后同样的字符加
    %s/$/
    要加的内容/g vi的使用确实太多,大家多多总结交流!!!

    追加到缓冲区
    对于已经有内容的缓冲区,可以继续追加内容在其后面,例如:
    "Ad4w
    删除光标后4个字,并附加到缓冲区a
    "Ay)
    取样从光标到文件尾的内容,并附加到缓冲区a
    "K3yy
    取样从光标所在行起的3行内容,并附加到缓冲区k

    注意:在追加缓冲区的命令中,原缓冲区的名字一定要大写,才能将内容追加进去,否则是覆盖原缓冲区的内容。追加内容在原缓冲区末尾另起一行。

    清理掉DOS文本中的^M可以在:1,$s/^M//g,其中^MCTRL+V, CTRL+M


    删除从当前行开始到最后一行的所有内容
    :.,$d
    :命令行模式下,首先可以确定命令的范围
    .
    表示当前行;数字表示行号,如1表示第一行,2表示第二行;$表示最后一行
    范围用,分隔
  • 相关阅读:
    javascript设计模式——链式模式学习
    浏览器debug常用技巧
    前端到底要不要学后台
    坑爹的JS闭包,怎么去理解才是正确的
    如何更加简单的理解JS中的原型原型链概念
    前端那么多框架,我们到底学哪一个
    大前端之——数据交互
    随便写一点自己对前端的感受
    如何手动使用webpack搭建一个react项目
    浅谈 CSS 预处理器: 为什么要使用预处理器?
  • 原文地址:https://www.cnblogs.com/goodloop/p/151824.html
Copyright © 2020-2023  润新知