Vim帮助
version available in : en it ru es ja de nl fr
date of creation : 20220618- date of update : 20220618- generation date : 20240612_171233
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中,通过移位来改变一个键的位置 (大写字母)改变了与小写字母对应的命令.
这种改变可以有几种类型,但所产生的顺序与最初的接近。.
可能的改变: