Nvim 的 :help
页面,从 生成 于 源代码,使用 tree-sitter-vimdoc 解析器。
:edit foo.txt你可以使用任何文件名来代替 "foo.txt"。Vim 会关闭当前文件并打开新的文件。但是,如果当前文件有未保存的更改,Vim 会显示错误消息,并且不会打开新文件
:help E37此时,你有几个选择。你可以使用以下命令写入文件
:write或者你可以强制 Vim 丢弃你的更改并编辑新文件,使用强制 (!) 字符
:edit! foo.txt如果你想编辑另一个文件,但不想立即写入当前文件中的更改,你可以将其隐藏
:hide edit foo.txt带有更改的文本仍然存在,但你无法看到它。这在第 22.4 节中详细解释:缓冲区列表。
vim one.c two.c three.c此命令启动 Vim 并告诉它你将编辑三个文件。Vim 仅显示第一个文件。在你完成此文件中的操作后,要编辑下一个文件,请使用以下命令
:next如果你在当前文件中进行了未保存的更改,你将收到一条错误消息,并且 ":next" 将不起作用。这与上一节中提到的 ":edit" 相同的问题。要放弃更改
:next!但大多数情况下,你希望保存更改并继续下一个文件。有一个专门的命令可以实现此目的
:wnext这与使用两个单独的命令效果相同
:write :next我在哪里?
:args这是 "arguments" 的简写。输出可能如下所示
:previous这与 ":next" 命令类似,只是它向另一个方向移动。同样,如果你想先写入文件,可以使用快捷命令
:wprevious要移动到列表中的最后一个文件
:last然后再次移动到第一个文件
:first但是没有 ":wlast" 或 ":wfirst" 命令!
:2next
:set autowrite当你正在编辑一个你可能不想写入的文件时,请再次将其关闭
:set noautowrite
:args five.c six.c seven.h或者使用通配符,就像在 shell 中使用的那样
:args *.txtVim 会带你到列表中的第一个文件。同样,如果当前文件有更改,你可以先写入文件,或者使用 ":args!"(添加 !)来放弃更改。
CTRL-^
(在美式键盘上,^ 位于数字 6 上方)。示例:args one.c two.c three.c你现在在 one.c 中。
:next现在你在 two.c 中。现在使用
CTRL-^
返回 one.c。再按一次 CTRL-^
,你就会回到 two.c。再按一次 CTRL-^
,你就会再次回到 one.c。如果你现在执行:next你就在 three.c 中。请注意,
CTRL-^
命令不会改变你在文件列表中的位置概念。只有像 ":next" 和 ":previous" 这样的命令才能做到这一点。CTRL-^
不会起作用,因为没有之前文件。`"这会带你到离开文件时光标所在的位置。另一个记住的位置是最后一次更改的位置
`.假设你正在编辑文件 "one.txt"。在文件中间某个位置,你使用 "x" 删除了一个字符。然后你使用 "G" 转到最后一行,并使用 ":w" 写入文件。你编辑了几个其他文件,然后使用 ":edit one.txt" 返回 "one.txt"。如果你现在使用 "Vim 会跳转到文件的最后一行。使用 . 会带你到删除字符的位置。即使你在文件中四处移动," 和 . 也会带你到记住的位置。至少在你进行另一次更改或离开文件之前是如此。
50%mF现在编辑文件 "bar.txt" 并将其最后的行放置 B 标记(B 代表 bar)
GmB现在你可以使用 "'F" 命令跳转回 foo.txt 的一半。或者编辑另一个文件,输入 "'B",你就会跳转到 bar.txt 的末尾。
:marks M你也可以提供多个参数
:marks MCP不要忘记,你可以使用
CTRL-O
和 CTRL-I
跳转到更早和更新的位置,而无需在这些位置放置标记。:set backup备份文件的文件名是原始文件,在末尾添加了一个 ~。例如,如果你的文件名为 data.txt,则备份文件名是 data.txt~。如果你不喜欢备份文件以 ~ 结尾的事实,你可以更改扩展名
:set backupext=.bak这将使用 data.txt.bak 而不是 data.txt~。这里另一个重要的选项是 'backupdir'。它指定了备份文件写入的位置。默认情况下,将备份写入与原始文件相同的目录,这通常是正确的做法。
:set patchmode=.orig当你第一次编辑文件 data.txt 并进行更改和写入文件时,Vim 会保留一个未更改文件的副本,名为 "data.txt.orig"。如果你对文件进行了进一步的更改,Vim 会注意到 "data.txt.orig" 已经存在,并将其保留。之后的备份文件将被称为 "data.txt~"(或者你使用 'backupext' 指定的任何扩展名)。如果你将 'patchmode' 保持为空(这是默认值),则不会保留原始文件。
:edit thisfile /This vjjjj$y现在编辑要放置文本的文件。将光标移动到文本将要出现的位置之后。使用 "p" 将文本粘贴到那里。
:edit otherfile /There p当然,您可以使用许多其他命令来剪切文本。例如,要选择整行,请使用“V”进入可视模式。或者使用
CTRL-V
选择矩形块。或者使用“yy”剪切单行,“yaw”剪切单词等。“p”命令在光标后粘贴文本。使用“P”在光标前粘贴文本。请注意,Vim会记住您是否剪切了整行或一个块,并以相同的方式粘贴回来。"fyas“yas”命令与之前一样剪切一个句子。是“f”告诉 Vim 将文本放置到 f 寄存器中。它必须紧挨着剪切命令。现在将三行剪切到 l 寄存器(l 代表行)。
"l3yy计数也可以放在“l”前面。要将文本块剪切到 b(代表块)寄存器。
CTRL-Vjjww"by请注意,寄存器指定符“b”位于“y”命令之前。这是必须的。如果您将其放在“w”命令之前,它将无法正常工作。现在您在 f、l 和 b 寄存器中有三个文本片段。编辑另一个文件,移动光标并将文本放置在您想要的位置。
"fp同样,寄存器指定符“f”位于“p”命令之前。您可以按任意顺序放置寄存器。文本会一直保留在寄存器中,直到您将其他内容剪切到其中。因此,您可以根据需要粘贴多次。
"wdaw同样,寄存器指定符位于删除命令“d”之前。
:write >> logfile这会将当前文件的文本写入“logfile”的末尾。因此,它被追加了。这避免了您必须复制行、编辑日志文件并将它们放在那里。因此,您节省了两个步骤。但是您只能追加到文件的末尾。要仅追加几行,请在键入“:write”之前在可视模式下选择它们。在第 10 章中,您将学习其他选择行范围的方法。
vim -R file在 Unix 上,此命令应该执行相同的操作。
view file您现在以只读模式编辑“file”。当您尝试使用“:w”时,您会收到一条错误消息,并且文件不会被写入。当您尝试更改文件时,Vim 会给您一个警告。
vim -M file现在,任何尝试更改文本都会失败。例如,帮助文件就是这样。如果您尝试进行更改,您将收到以下错误消息。
:set modifiable :set write
:edit copy.c您可以删除不需要的东西。现在您需要将文件保存在一个新名称下。可以使用“:saveas”命令来执行此操作。
:saveas move.cVim 会以给定名称写入文件,并编辑该文件。因此,下次您执行“:write”时,它将写入“move.c”。“copy.c”保持不变。当您想要更改正在编辑的文件的名称,但不想写入文件时,您可以使用以下命令。
:file move.cVim 会将文件标记为“未编辑”。这意味着 Vim 知道这不是您开始编辑的文件。当您尝试写入文件时,您可能会收到以下消息。