• 【vim 学习系列文章 7-- vim vnormap nnoremap nmap map inoremap 区别】


    1.1 vim 递归映射和非递归映射

    递归映射和非递归映射是 Vim 中两种不同的键盘映射方式。
    递归映射(recursive map)是指在定义键盘映射时,映射的右侧的命令会触发其他映射。例如,假设你已经有一个映射 map j dd,它将 j 键映射为删除一行的命令。然后你又定义了一个新的映射 map k j,它将 k 键映射为 j 命令。当你按下 k 键时,由于使用的是递归映射,j 命令会触发 jdd 的映射,所以结果是删除一行。

    非递归映射(non-recursive map)是指在定义键盘映射时,映射的右侧的命令不会触发其他映射。还是以上面的例子为例,如果你使用的是非递归映射,例如 nnoremap k j,那么当你按下 k 键时,j 命令不会触发其他映射,所以结果是将光标向下移动一行,而不是删除一行。

    在大多数情况下,使用非递归映射是更好的选择,因为它可以避免可能的循环和混淆。在 Vim 中,你可以使用 mapnoremap 来定义递归映射和非递归映射,例如 nmapnnoremap 分别用于在普通模式下定义递归映射和非递归映射。

    1.1.1 vim 可视模式

    Vim 的可视模式是 Vim 的三种主要模式之一,另外两种是普通模式和插入模式。在可视模式下,你可以选择文本块并对其执行操作,类似于其他文本编辑器中的选择并操作的工作方式。

    你可以通过以下方式进入可视模式:

    • v:字符可视模式。在普通模式下按 v 将进入字符可视模式,在这个模式下,你可以通过移动光标来选择文本。

    • V:行可视模式。在普通模式下按 V 将进入行可视模式,在这个模式下,你可以通过上下移动光标来选择整行文本。

    • :块可视模式。在普通模式下按 将进入块可视模式,在这个模式下,你可以通过移动光标来选择一个文本块。

    在可视模式下选择文本后,你可以执行各种命令,比如复制 (y)、粘贴 (p)、删除 (d) 或者修改 (c)。

    例如,你可以进入行可视模式 (V), 选择几行文本,然后按 d 来删除这些行,或者按 y 来复制这些行。

    因此,Vim 的可视模式提供了一种直观的方式来选择和操作文本。

    1.2 map nmap vnormap nnoremap inoremap 区别

    Vim 使用了一种强大的键盘映射系统,可以让你自定义或修改键盘命令。以下部分将详细解释和示例 vmap, nmap, map, nnoremap, inoremap。

    • vmap:在可视模式下创建键盘映射。例如,vmap y 在可视模式下将 F2 键映射为复制命令。

    • nmap:在普通模式下创建键盘映射。例如,nmap :w 在普通模式下将 F2 键映射为保存文件的命令。

    • map:在普通、可视和操作符等待模式下创建键盘映射。例如,map :w 在这些模式下将 F2 键映射为保存文件的命令。

    • nnoremap:在普通模式下创建非递归键盘映射。非递归映射意味着映射的右侧的命令不会再触发其他映射,从而避免了可能的循环。例如,nnoremap j gjj 键映射为 gj 命令,即使 gj 也被映射到其他命令,j 键仍然只会执行 gj 命令。

    • inoremap:在插入模式下创建非递归键盘映射。例如,inoremap jj jj 映射为 Esc 命令,这意味着你可以通过输入 jj 来退出插入模式,而不需要按 Esc 键。

    这些命令都可以在 vimrc 文件中设置,或者在 Vim 的命令模式下输入以立即生效。记住,为了避免映射冲突或无法预料的结果,最好在创建新的键盘映射之前,先使用 unmap 命令来取消任何现有的映射。

  • 相关阅读:
    Android开发知识学习——编码、加密、Hash、序列化和字符集
    aggregate和annotate方法使用
    Chrome导出cookie的实战教程
    重新定义智能座舱「新打法」,全栈能力是唯一出路
    FANUC机器人防干涉区域的使用方法和设置步骤
    【RuoYi-Cloud-Plus】学习笔记 05 - Spring Cloud Gateway(一)关于配置文件参数
    2023 亲测好用版VScode配置文件
    oracle -- 表操作
    u盘初始化后怎么恢复文件?这几步操作帮你找回
    后端 | 青训营笔记
  • 原文地址:https://blog.csdn.net/sinat_32960911/article/details/133761689