aide vim zh aide vim

Vim帮助

back to the home page

version available in : en it ru es ja de nl fr

date of creation : 20220618- date of update : 20220618- generation date : 20240612_171233

1.谷维姆

vim vim_25_presentation_by_bram_moolenaar_on_2016_november_2 mastering_the_vim_language

2.开始使用vi



- vi是任何UNIX发行版上的标准编辑器。.vi自诞生以来就没有进化过,这使得它成为一个生疏的编辑器.
但它的原始设计非常符合unix的精神"^。.
- vi的进化就是vim编辑器 (六-改进的Bram Moolenar公司)见下文.
- 以要处理的文件名为参数启动编辑器 "vi toto.txt" - 编辑器启动了一个全屏窗口,其中出现了几行文字.以"开头的空行~"是可见的,如果数字 文件中的行数少于窗口中的行数.
- 默认情况下,我们处于编辑器的命令模式,即键盘上的所有按键都是一个命令.
- 例如,移动时,使用h、j、k、l键。 . touches de déplacement vi  - 如果要插入文本,请使用"i"键,用于"插入","a用于追加","R"用于替换。 - 当你完成了文本编辑,按"esc"键退出编辑模式。.
- 在vi下,有必要退出编辑模式来改变这一行:你必须切换到命令模式才能进行操作。 幸运的是,在vim下,这个限制被取消了.
- 所有订单见 . vimaz  - 也有一个 . mode ligne de commande vi 通过键入"键获得。:" 并允许启动全局命令 在文件中选择几行.
- 在这个介绍的最后,在质朴甚至古老的外表下,vi是一个独特的编辑器的概念,它本身就是一个编辑器的类型。 单独的.正是这种最初的设计使vim成为公认的最强大的编辑器。.
3.开始使用vim

你刚刚进入vim编辑器.
你可以使用方向键 (箭头和分页)在这个文本周围移动.
最重要的是要知道,使vim (vi)独特之处在于,vim (vi)是一个多模式的编辑器.
vim编辑器的主要特点 (vi)主要是在以下方面进行运作 . mode commande vi 我们可以说有两种编辑器,一种是默认的,主要是在编辑模式下工作。 (你在键盘上打字,它就会写出文字。)和那些默认的、主要在命令模式下运行的产品 (你在键盘上打字,它就会做事).
在第一种情况下,除了vi和vim之外,有所有的编辑器 (emacs, ultraedit, notepad, ...开始使用vim)在第二种情况下,有vi和vim.
vim是历史性的扩展,是unix系统中原始vi的发展,除了vim之外,它没有发展。.
vim的模式有:

  • . mode commande vi :这是vim的默认模式,在这种模式下,键盘上的按键不用于输入字符,而是全部用于命令。.
    令人惊讶的是,这些控制装置非常符合人体工程学,比方说。 . vimaz  事实上,如果你寻找导致选择字母的英语单词,它们很容易被记住。.
    如果我们比较一下WORD的人机工程学,与功能键和控制键SHIFT、CTRL、ALT的组合,我们可以立即看到,要成为一个有经验的WORD用户是非常困难的,而成为一个有经验的vim用户在开始时可能需要努力适应,但后来变得非常容易,因为在命令的命名中有一个潜在的顺序.
  • . mode ligne de commande vi :如果你输入字符":"我们进入vim命令行,在那里我们可以输入命令.
    要退出这个模式,你可以通过以下两种方式来实现 . ENTER  它验证了所输入的命令,或通过 . ESCAPE  退出命令模式,但不执行任何操作.
  • . mode de saisie vi :这是输入文本的模式.
    这种模式存在于所有的编辑器中.
    要进入这个模式,你必须输入一个命令 . commande de modification vi 它允许你输入,例如,通过输入"i"键,你进入插入模式.
    的条目 . ESCAPE  允许你退出这个模式,并返回到基本模式。 . mode commande vi .

    4.输入模式 vi

    
    
    在vim中,输入模式与记事本这样的编辑器相同.

    这个模式是由 . mode commande vi 通过输入以下命令: - "a" 添加文本 (在当前字符后添加) - "i"用于插入文本 (恰好插入在当前字符之前) - "R"用于文本替换 (替换当前字符中的文本) - "o"开一个新行 ("O"打开它在当前的上面。) - "s"为代用品 (相当于"R").

    文字是用通常的键来输入的,而运动是用 箭头、分页键,你可以改变模式"插入"。 "replace", 删除一个字符,用 并使用 菜单,保存更改,出去搜索。 用鼠标选择,使用复制和粘贴.

    因此,我们可以认为vim是notepad的超集.

    因此,如果你有vim,就没有理由继续使用notepad。.

    用转义键退出输入模式 . . Suppr ESCAPE  .

    5.命令行模式 vi

    这些实际上是"teletype"编辑器的命令,它是vi的前身,即"ed"编辑器。.
    当计算机输入可以在屏幕上而不是在电传上查看时,"ed"演变成了"vi"。 (这是对"视觉"的缩写。).
    这意味着"vi"包含了"ed"的基因.
    ed的方式产生了指令"sed",它可以表示"stream ed",例如.
    通过输入"字符可以进入该模式。:"来自 . mode commande vi .
    在vim下,可以通过上下箭头的导航来检索已经输入的命令.
    你甚至可以输入一个命令的开头,然后用箭头只选择与输入的前缀对应的命令。.

    具体的vim
    秩序note_zh 行动  
    :b nn    缓冲区 (文件)识别为"nn",关于缓冲区的列表见命令 :ǞǞǞ  
    :e文件    编辑路径被输入的文件  
    :g/expr/    全球 :选择包含正则表达式"exp"的行和 :  
    :g/expr/l    -列表中的线条  
    :g/expr/d    -破坏了线条  
    :g/expr/s///    -将替换命令"s"应用于选定的行中  
    :ǞǞǞ    列出会话期间已经编辑的缓冲区,并显示其编号 (见订单 :b nn)  
    :n    next - 如果有多个文件被请求,则输出下一个缓冲区  
    :q    离开编辑部 ":q!" 强制输出而不保存  
    :r    :n文件"  
    :s    . substitution de chaine   
    :w    保存当前文件 ":w!"在警告的情况下强制改写  
    :x    eXit保存当前的缓冲区并退出vi  
    :map_zh    创建一个新的 . mode commande vi 通过这种模式的命令组合  
    !    . shell vi 允许与方案的外部环境互动 vi,提供无限的可能性  
    / 或 :/    寻找一个 . expression régulière  (目标显示为黄色)"n"命令允许你浏览搜索。
    :gf    go file,打开光标下路径的文件。  
    :ǞǞǞ    split ,将工作区一分为二,打开第二个缓冲区,通过ctrl-W切换。  
    :标签新    增加了一个工作区标签  

    5.1.命令行模式提示 vi

    • - 惊叹号字符 "!"表示 :
      • 或强调命令 (命令被强制执行而不考虑相关的警告。)
      • 或与外部世界的互动:shell,这最后一种可能性使vi成为一个开放的编辑器,见 . shell vi .
    5.2.贝壳六

    使用"字符的情况!在不同的情况下,"允许你发布系统命令.

    例如,在vi命令行中输入":!dir " 打开一个shell并运行dir命令。.
    或在 . mode commande vi , "!" 后面是一个移动命令 (霓虹灯 如果只有ENTER)显示一个提示,你可以在上面输入一个命令 系统.移动所选择的缓冲区会被发送到标准输入的 (stdin) 和标准输出的 (stdout)检索,并将结果放置在划定的缓冲区中。 通过移动 (旧的缓冲区丢失).

    我们可以用isql命令启动一个SQL查询,通过perl脚本转换一个文本。 编写C语言程序来创建新的编辑命令。 ...可能性是无穷无尽的.

    5.3.地图 cmd

    秩序 :地图允许你创建一个新的命令.
    例如,命令 :"map ² j.
    "创建命令"²",定位到下一行的最后一条命令.

    5.3.1.命令图例类比vim mq
    我忍不住要在这里做一个有趣的比喻,即用 <mécanique_quantique_zh_nweb>(fr.wikipedia.org/wiki/M%C30X0P+09canique_quantique)和哈密顿H算子
    负责随时间演变.这个算子可以被看作是创造和破坏能量状态的算子的组合 (或量子场论中的粒子).
    能量通常为H =势能 动能 =a² b²和复数因子化或i²=-1 H = (a ib)(a-ib) =C * D,C和D是创造和破坏的操作者.

    如果我们考虑在vim中的一行文本和"x"命令来删除一个字符 (毁灭),
    默认的缓冲区内容插入命令 "p" (创作)
    和它们的组合"xp"在一个命令中":地图
    我们将创建新的命令 ":演化.
    但在这里,空间是由下划线象征的,例如,字符o是一个粒子。 :
    通过应用命令".

    你也可以通过"创建逆运算符:地图

    __________________________________o___________________________________________________________________

    - 在"o"上执行宏程序。 (量子粒子 :-Quantum mechanics nweb)

    - 来编译宏,而不必将其复制到命令行中,你可以使用宏 [xlm_zh]通过将自己置于宏的行中.
    地图
    地图
    - 一个轨迹可以通过以下方式定义
    地图 #H
    - 一个周期性的轨迹 (震荡)通过递归宏:
    地图 #S #H#S
    - 警告:这个重复性的宏只能通过CTRL-C中断。
    我们注意到,停止宏观可以离开系统与破坏的粒子,"o"已经消失了 (它已经回到了量子真空)或创造,"o"是存在的,但可能是在其他地方,而不是在它原来的位置.
    这告诉我们,当一个宏被中断时,它是在一个"原子"的命令上进行的,而不是在一个宏所调用的宏上进行的.
    我认为这个例子很好地展示了宏的动态变化.
    在Vim中,有另一种方法来记录一个命令序列.
    这是"q"命令,它允许你记录命令的顺序,然后在键盘上输入命令 (再输入一个"q",就会停止注册。)和"@"命令,它允许执行这些命令.
    命令存储在由字母数字字符命名的缓冲区中,必须与"q"和"@"命令一起指定。.
    例如,q03dwj在缓冲区0中存储了命令3dwjbbb,它删除了3个字,并通过返回3个字进入下一行,同时执行这个序列.
    @0命令重复序列.

    5.4.链式替代

    该命令":链条1由链条2替代的s/chaine1/chaine2/"提供了非常强大的可能性: 如果你想对"/"字符进行修改,你必须使用"/"来指定这个字符或使用另一个字符串分隔符"。:s.
    chaine1.
    频道2.
    "

    :s/toto/titi/  将"toto"换成"titi"就行了  
    :s/toto/titi/g  将所有"toto"替换为"titi"行。  
    :1,$/toto/titi/g  用"titi"替换整个文件中的所有"toto"。  
    :., 10/toto/titi/g  用"titi"替换所有"toto",从当前行开始,在10行中替换所有"toto"。  
    :g/tata/s/to/titi/g  在所有包含"tata"字符串的行中,用"titi"替换所有"toto"。  
    :'a,'bg/tata/s/to/titi/g用"titi"替换所有包含"tata"字符串的行中由索引"a"和"b"存储的"toto"。

    5.4.1.. expression régulière :正则表达式

    正则表达式可以用来指定复杂的搜索字符串.

    "字符."用于指定任何字符.
    "*"字符用于指定任何字符的序列.
    ""^ 字符用于指定行的开始。 "$" 字符用于指定行的结束。

    一个街区 ""用于在正则表达式中指定一个可能的字符集.
    比如说 : - a-zA-Z_zh指定一个大写或小写的单一字母字符.
    - 0-9_zh指任何数字 - 1-2_zh0-9_zh0-9_zh0-9_zh表示从"1000"到"2999"的一种形式的年。

    例如:"托托.*titi"指的是以toto开头,以titi结尾的那部分线条。.
    比如说".*这.*titi.*"表示同时包含toto和titi的行数,以该顺序排列.
    例如:"^toto.*titi$"表示以toto开头,以titi结尾的句子。.

    |" (反斜线管道) 所以"托托.|Titi.*toto"允许在g//s//的命令中,比如说 仅在与标准相对应的行上进行修改.
    我们几乎达到了文本模式请求者的水平.

    5.4.1.1.田地下

    在正则表达式中,有可能将一行或一行的一部分分解为子字段 在命令中 ":s".
    - 子字段在目标字符串中由"反斜杠"括号定义。 :(.)(..) - 然后,子字段可以在替换字符串中使用 (1) (2) (3) 等等。...

    例子: 目标链:侯爵夫人你美丽的眼睛让我爱得死去活来"。 (B.)(v.)()()()" which is called \\1\\2 \\3 \\4 \\5

    该命令":(B.)(v.)()()()/5\\4\\3/"与所有 子领域的排列组合产生的第一句话散文的形式不太漂亮: 你那美丽的眼睛,使我成为美丽的侯爵夫人。

    6.命令模式 vi

    正是这种模式解释了vim的力量.
    每个键都是一个命令.

    主要有几种类型的命令:

    不同类型的命令可以合并:改变*移动,例如 :
    • "dw" 删去当前单词 - "df;" 删去下一个分号之前一行的文字。 (发现) - "dt;"删除下一个分号之前一行的文字,但不删除分号。 (至)
    宏命令可以通过将基本命令与 . map cmd . mode ligne de commande vi .
    注意事项:这种模式下的命令可以被视为可以组合的运算符.
    这种操作员组合机制 (我们能不能谈一谈算子代数?)是非常强大的.
    操作符可以与表明必须重复多少次命令的cardinalities相关联。.
    例如:"5dw"删除接下来的五个字.
    宏命令可以组合,甚至可以递归。 (必须预见到递归的停止:因不可能执行命令而引发的)
  • 只有在vim中才有的一种新模式是用"v"选择文本
    • 你可以用"escape"退出这个模式,这样做的效果是将选定的文本储存在默认的缓冲区中。 (仅限VT配置)
    • 如果你在WINDOWS配置中使用鼠标和通常的复制和粘贴快捷方式.

    6.1.运动控制VI

    移动命令,见列表中的"d"类型 . vimaz 可以与其他的变更命令结合起来,形成一个新的变更命令.
    当然,方向键是可以操作的,与SHIFT、CTRL.

    6.2.更改命令 vi

    修改命令,见列表中的"m"类型 . vimaz 

    6.3.研究命令六

    搜索命令,见列表中输入"r"。 . vimaz 

    6.4.缓冲区管理指令VI

    缓冲区的命令,见列表中的"g"类型 . vimaz 

    6.5.. vimaz :我从A到Z来

    vim字母表.
    当你在 . mode commande vi 每个字母都是一个命令 :

    栏目描述  
    . lettre   订单信.可以是一个字母,双倍的,后面是另一个字母,后面是顺序的类型
     ²提到的双字母,vim没有使用。  
     字母后跟任何其他字母 - 后者的情况是以"underscore"的出现来表示的,例如f_。  
     后面跟着命令的类型"d"表示位移,例如,在这种情况下,所有的位移命令都可以操作。  
    . commande type    订单类型 :d移动,m编辑,r搜索,g缓冲区管理  
    . note vim   一系列更多的人提到的效用或权力的顺序。 ...或更少  
    . mnemo   用字母做命令的起源,记忆法,当然是在英语中的记忆法。  

    . lettre  . type cmd  . mnemo   . note vim  行动  
           . caractère non alphabétique vi   
    .  m      重复上次的更改命令  
    ~  m      大写字母和小写字母反向.要与"g"一起使用 :g~d  
    ^  d      转到行的开头  
    $  d      到行尾  
     r      vim搜索光标下的单词 :所有目标都是黄色的 .请看这里g*  
    '_  d      "cote"后面跟着一个字母,将光标移到该字母所存储的行,见m_。  
             
    "_yd  g      "double dimension" 后面是一个字母,后面是"y" yank,后面是一个移动命令,把要移动的文本存储在由该字母命名的缓冲区中。  
    "ayfo  g      例子:"afo 在缓冲区中存储从当前字符到当前行的下一个"o"^的信息  
    "byy  g      "byy在缓冲区b中存储当前行。  
    "by'b  g      "b'b在缓冲区b中存储从当前行到索引b存储的行的内容  
           . caractère alphabétique vi   
    a  m  追加    在当前字符后添加文本,并切换到 . mode de saisie vi   
    A  医学博士  附上    在行尾添加文本,切换到 . mode de saisie vi   
    b  d  背面    将光标向后移动一个字,如果 . majuscule 词语只是用空白和空格隔开  
    B  d  溯源    同上 "b" si . majuscule 空格和空格分隔的词语  
    c_  m  变化  -  "c"后面是 . commande de déplacement vi 将文本从当前字符改为移动的终点  
    C  m  变化  -  将文本从当前字符改到行尾  
    dd  m  删除    "d"后面是 . commande de déplacement vi 删除从当前字符到移动结束的文本  
    d²  m  删除    "d"双倍删除当前行。  
    D  m  删除    删除从当前字符到行尾的文本  
    e  d  结束    将光标移至当前单词的末尾  
    E  d  结束    将光标移到"的末尾。. mot large "目前  
    f_  r  发现    "f"后面跟着一个字符,如果该字符存在,则将光标下移到该行。  
    F_  r  发现    "F" 与"f"相同,但移动到行首  
    g²  d  去    将光标移到文件的开头。  
    G  d  去    将光标移到文件的末端  
    g*  r  全球    (vim)与"*"相同,但搜索的不是单词而是字符串。 (如果它出现在一个词中)  
    g~d  m  全球    将大写字母和小写字母颠倒过来,直到移动为止。  
    gf  d  进入文件    编辑路径在光标下的文件  
    i  m  插入    在当前字符切换到\"\"之前,插入后来输入的字符。 . mode de saisie vi   
    I  医学博士  插入    在行首插入后来键入的字符,切换为 . mode de saisie vi   
             
    J  m  加入    将当前行与下一行串联起来。 (合并两条线)在两行之间插入一个空白  
           位移键盘 :hjkl jk:向上向下,HL向左向右 (将在宏中使用,而不是使用箭头)没有触控板的原始键盘  
    . touches de déplacement vi 
    h  d      左箭头  
    j  d      上箭头  
    k  d      下箭头  
    l  d      右箭头  
             
    m_  d  记忆    "m" 后面跟着一个字母,以这个字母为索引记忆下一行,回忆是用"cote" 字符完成。:'  
             
    o  m  开放    在当前行后打开或插入一个行  
    O  m  开放式    在当前行之前打开或插入一个行。  
    p  m  把    插入当前缓冲区的内容  
    r_  m  替换    取代当前的字符切换仍然在 . mode commande vi   
    R  m  替换    将文本从当前位置替换为 . mode de saisie vi   
    s  m  替补  将文本从当前位置替换为 . mode de saisie vi   
    S  m  代课教师-  用后来输入的字符替换当前行,切换到 . mode de saisie vi   
    t_  r  至    "t" 后面跟着一个字符,将光标移到紧挨着该字符的那一行,如果它存在的话  
    T_  r  拟    "T" 与"t"相同,但移动到行的开头 (与双级控制相结合的实用性  
    u  m  撤销    "undo" 撤销最后一次修改。.撤消 撤消自上次编辑文件后的所有更改。 ."redo" ctrl-r是撤消的逆操作。
    v  g      (vim)进入文本选择模式 (线性视图的文本)矩形块选择模式下的ctrl-v (文本的表面视图)  
    w  d  结束    将光标移至当前单词的末尾  
    W  d  结束    将光标移到"的末尾。. mot large "目前  
    x  m      删掉了这封信  
    yd  g  扬州    "y"后面是 . commande de déplacement vi 在默认的缓冲区中存储移动所涉及的文本,与名为"_的缓冲区一起使用。  
    z²        "z."或"zz"将窗口集中在当前行上。  
    z. ENTER         将当前行放置在窗口的顶部  
    z-        将当前行放置在窗口的底部  
           . commandes utilisant la touche CTRL   
    CTRL-R          
    CTRL-A        递增光标下的数字  
    CTRL-X        递减光标下的数字  

    7.Vim方法

    如何在你正在工作的文件中轻松移动.

  • 锚点的使用 ("m a", "m b", ...
    "m z").
    应确定标准锚点 (字母表)将被系统地用于特定的目的.
    因此,我们定义了一种个人的锚点命名法.
    第一个锚点应该是主要的编辑点,其他的是其他的信息检索点,用于编辑。.
    例如,类似的代码模板.
  • 使用搜索字符串 (输入或命令*,ALT-*)和命令n和N (下一个).
  • 与Utags :
    • 设置适当的超文本标签,然后通过文件摘要访问它们.链条 的标签可以很容易地被搜索到.
    • 在文本中定位超文本参考以访问标签.

    7.1.广义词

    只用空白和空格隔开的词的定义.
    例子:"因为周一早上"是一个单一的"宽泛的词"。

    7.2.大写字母

    在vi中,通过移位来改变一个键的位置 (大写字母)改变了与小写字母对应的命令.
    这种改变可以有几种类型,但所产生的顺序与最初的接近。.
    可能的改变:

  • 改变方向 - 在终点或起点进行的行动