Vim帮助
version available in : en it ru es ja de nl fr
date of creation : 20220618- date of update : 20220618- generation date : 20250203_123633
vim vim_25_presentation_by_bram_moolenaar_on_2016_november_2 mastering_the_vim_language
- vi是任何UNIX发行版上的标准编辑器。.vi自诞生以来就没有进化过,这使得它成为一个生疏的编辑器.3.开始使用vim
但它的原始设计非常符合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成为公认的最强大的编辑器。.
你刚刚进入vim编辑器.
你可以使用方向键 (箭头和分页)在这个文本周围移动.
  最重要的是要知道,使vim (vi)独特之处在于,vim (vi)是一个多模式的编辑器.
  vim编辑器的主要特点 (vi)主要是在以下方面进行运作 . mode commande vi 我们可以说有两种编辑器,一种是默认的,主要是在编辑模式下工作。 (你在键盘上打字,它就会写出文字。)和那些默认的、主要在命令模式下运行的产品 (你在键盘上打字,它就会做事).
  在第一种情况下,除了vi和vim之外,有所有的编辑器 (emacs, ultraedit, notepad, ...开始使用vim)在第二种情况下,有vi和vim.
vim是历史性的扩展,是unix系统中原始vi的发展,除了vim之外,它没有发展。.
  vim的模式有:  
在vim中,输入模式与记事本这样的编辑器相同.5.命令行模式 vi
这个模式是由 . mode commande vi 通过输入以下命令: - "a" 添加文本 (在当前字符后添加) - "i"用于插入文本 (恰好插入在当前字符之前) - "R"用于文本替换 (替换当前字符中的文本) - "o"开一个新行 ("O"打开它在当前的上面。) - "s"为代用品 (相当于"R").
文字是用通常的键来输入的,而运动是用 箭头、分页键,你可以改变模式"插入"。 "replace", 删除一个字符,用 并使用 菜单,保存更改,出去搜索。 用鼠标选择,使用复制和粘贴.
因此,我们可以认为vim是notepad的超集.
因此,如果你有vim,就没有理由继续使用notepad。.
用转义键退出输入模式 . . Suppr ESCAPE .
这些实际上是"teletype"编辑器的命令,它是vi的前身,即"ed"编辑器。.
当计算机输入可以在屏幕上而不是在电传上查看时,"ed"演变成了"vi"。 (这是对"视觉"的缩写。).
这意味着"vi"包含了"ed"的基因.
  ed的方式产生了指令"sed",它可以表示"stream ed",例如.
  通过输入"字符可以进入该模式。:"来自 . mode commande vi .
  在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"命令允许你浏览搜索。  
具体的vim
:gf           go file,打开光标下路径的文件。   :ǞǞǞ           split ,将工作区一分为二,打开第二个缓冲区,通过ctrl-W切换。   :标签新           增加了一个工作区标签   
使用"字符的情况!在不同的情况下,"允许你发布系统命令.
例如,在vi命令行中输入":!dir " 打开一个shell并运行dir命令。.
 
或在 . mode commande vi , "!" 后面是一个移动命令 (霓虹灯
如果只有ENTER)显示一个提示,你可以在上面输入一个命令
系统.移动所选择的缓冲区会被发送到标准输入的 (stdin) 
和标准输出的 (stdout)检索,并将结果放置在划定的缓冲区中。 
通过移动 (旧的缓冲区丢失).
我们可以用isql命令启动一个SQL查询,通过perl脚本转换一个文本。 
编写C语言程序来创建新的编辑命令。 ...可能性是无穷无尽的.
秩序 :地图允许你创建一个新的命令.
  例如,命令 :"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命令重复序列.
该命令":链条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//的命令中,比如说
仅在与标准相对应的行上进行修改.
我们几乎达到了文本模式请求者的水平.
在正则表达式中,有可能将一行或一行的一部分分解为子字段
在命令中 ":s".
- 子字段在目标字符串中由"反斜杠"括号定义。 :(.)(..)
- 然后,子字段可以在替换字符串中使用 (1) (2) (3) 等等。...
例子: 目标链:侯爵夫人你美丽的眼睛让我爱得死去活来"。 (B.)(v.)()()()" which is called \\1\\2 \\3 \\4 \\5
该命令":(B.)(v.)()()()/5\\4\\3/"与所有 子领域的排列组合产生的第一句话散文的形式不太漂亮: 你那美丽的眼睛,使我成为美丽的侯爵夫人。
正是这种模式解释了vim的力量.
 
每个键都是一个命令.
主要有几种类型的命令:
不同类型的命令可以合并:改变*移动,例如 :移动命令,见列表中的"d"类型 . vimaz 可以与其他的变更命令结合起来,形成一个新的变更命令.
  当然,方向键是可以操作的,与SHIFT、CTRL.
修改命令,见列表中的"m"类型 . vimaz
搜索命令,见列表中输入"r"。 . vimaz
缓冲区的命令,见列表中的"g"类型 . vimaz
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                           递减光标下的数字   
如何在你正在工作的文件中轻松移动.
  
  只用空白和空格隔开的词的定义.
  例子:"因为周一早上"是一个单一的"宽泛的词"。 
在vi中,通过移位来改变一个键的位置 (大写字母)改变了与小写字母对应的命令.
这种改变可以有几种类型,但所产生的顺序与最初的接近。.
  可能的改变: