跳到内容

学习 vi 编辑器/Vim/技巧和窍门

来自维基教科书,开放的书籍,用于开放的世界

学习 vi 编辑器: 熟悉基本任务使工作更轻松高级任务详细信息Vi 克隆 (Vim基本导航模式技巧和窍门程序员需要了解的有用东西增强 VimVim 在 Windows 上VimL 脚本语言, Vile, BB vi)vi 参考

Vim 技巧手册是使用 Vim 文本编辑器 的技巧、提示和操作指南的集合。它是更灵活格式的 Vim 技巧数据库 的衍生品,还包括来自 Vim 邮件列表 的一些有帮助的帖子。

有关 Vim 的一般使用信息,请参阅 学习 vi 编辑器/Vim

关于本书

[编辑 | 编辑源代码]

编辑技巧

[编辑 | 编辑源代码]
  • 在可能的情况下,应避免广泛的个人配置。将建议范围限制在单个技巧内。您可能希望链接到几个其他可能与之一起使用的技巧,就像烹饪食谱会建议搭配良好的菜肴一样。
  • 始终提供足够的信息,以便可以使用 Vim 的默认 compatible 设置来使用技巧。

使用的约定

[编辑 | 编辑源代码]
<c>
单个字符,例如“a”或“1”。
<ESC>, <Ctrl-[>
表示应按下键盘上的 Escape (Esc) 键,这与 Control 和 '[' 相同。
<CR>
表示应按下回车 (Enter) 键。
<TAB>
表示应按下 Tab 键
<Ctrl-x>, <C-x>
表示应同时按下 Control 键和“x”键。“x”几乎可以是键盘上的任何其他键。
<Shift-x>, <S-x>, <X>
表示应同时按下 Shift 键和“x”键
<Meta-x>, <M-x>
表示应同时按下 Meta 或 Alt 键和“x”键。
:quit, :q
Ex 命令。以 <:> 开头,后跟命令,最后以 <CR> 结尾。对于许多 Ex 命令,都有长格式 (:quit) 和短格式 (:q)。
:set nocompatible
表示设置。
strlen ()
表示函数。
/pattern/, ?pattern?
搜索模式。vi 中的搜索模式是 正则表达式
:ranges/search/replace/options, :global /pattern/ delete
搜索模式与 Ex 命令相结合。

vi 中的所有命令都区分大小写。


如果需要输入一系列命令,这些命令可能会列在一个预格式化的块中

 {{Vi/Ex|set}} {{Vi/set|number}}
 {{Vi/Ex|set}} {{Vi/set|textwidth=70}}
 {{Vi/Ex|set}} {{Vi/set|wrap}}
 

这将生成以下格式的文本

set number
set textwidth=70
set wrap

Vim 帮助

[编辑 | 编辑源代码]

如果您是 vi 的新手,请尝试 vimtutor 命令。它是一个针对初学者的优秀指南。

Vim 拥有一个庞大的帮助系统。涵盖了所有内容。然而,这个系统非常庞大,以至于有时找到所需的信息就像在一个巨大的干草堆中找到自己的针一样。但即使这样,也有一些 Vim 工具

  • (假设 'nocompatible' 已经设置)
set wildmenu
  • 帮助标签自动补全:如果您认为“foo”是帮助系统中包含超链接的某一部分,请使用
help foo<Tab>
其中 <Tab> 表示“按 Tab 键”,如果只有一个可能的补全,Vim 会为您填入;如果有多个,底部的状态行将被替换为一个菜单,可以通过按下 <Left> 和 <Right> 箭头键进行导航;通过按下 <Enter> 接受选择,通过按下 <Esc> 取消。
  • :helpgrep 函数:如果您认为某些正则表达式描述了您想要在所有帮助文件文本中搜索的文本,请使用
helpgrep <pattern>
其中 <pattern> 是一个 Vim 正则表达式,就像您在 / 或 ? 后可以使用的那样。Vim 可能需要一些时间来查找所有帮助文件,它可能会或可能不会显示需要您按下 Enter 才能清除 |more-prompt| (q.v.) 的中间信息。当闪烁的光标重新出现在您的编辑文件中时,表示 Vim 已编译所有帮助位置的列表,其中您的 regexp 匹配。使用以下方法查看它们
 cfirst or :cr
 cnext or :cn
 cprevious or :cprev or :cN
 clast or :cla


从文件或寄存器插入文本

[编辑 | 编辑源代码]

如果您的文本在单独的文件中,您可以使用 :r 以及行号 (插入后的行的行号,或 0 表示“在第一行之前”,或 . 表示“在光标行之后”,或 $ 表示“在最后一行之后”;默认值为在光标行之后) 在“范围”位置,即 r 之前。文件名作为参数放在最后。

示例 (在第 5 行之后)

  5r ~/template.txt

如果您的文本在寄存器中,您可以使用 :put 以及行号 (再次) 在范围位置,并在 :put 后面加上寄存器名称 (包括 ",对于默认寄存器,必须将其转义为 \";或 + 表示系统剪贴板)。

示例 (在光标行之前)

  .-1put \"

您还可以使用 :put 和直接赋值直接插入字符串

  :put ='This is text to insert.'

参见

  :help :read
  :help :put

全屏模式

[编辑 | 编辑源代码]

要在任何版本的 gvim 上实现全屏编辑窗口,您可以执行以下操作

  :set go-=m go-=T go-=l go-=L go-=r go-=R go-=b go-=F
  :set lines=999 columns=999
  • 'guioptions': 我们逐个删除标志以避免出现问题,即使它们以不同的顺序出现在选项中,或根本没有出现。通过选择要删除的标志 (或不删除),您可以自定义自己的“全屏 Vim”风格。
  m   when present, menu bar is present
  T   when present, toolbar is present on versions which support it (W32, GTK1, GTK2, Motif, Photon, kvim)
  l   when present, left scrollbar is always present
  L   when present, left scrollbar is present if there is a vertical split
  r   when present, right scrollbar is always present
  R   when present, right scrollbar is present if there is a vertical split
  b   when present, bottom scrollbar is present
  F   when present, gvim (Motif) will display a footer
  • 'lines', 'columns': 将它们设置为较大的值将最大化窗口。

有关更多信息,请参阅

  :help 'guioptions'
  :help 'lines'
  :help 'columns'


学习 vi 编辑器: 熟悉基本任务使工作更轻松高级任务详细信息Vi 克隆 (Vim基本导航模式技巧和窍门程序员需要了解的有用东西增强 VimVim 在 Windows 上VimL 脚本语言, Vile, BB vi)vi 参考

华夏公益教科书