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

文章目录

    • [1.1 vim 递归映射和非递归映射](#1.1 vim 递归映射和非递归映射)
      • [1.1.1 vim 可视模式](#1.1.1 vim 可视模式)
    • [1.2 map nmap vnormap nnoremap inoremap 区别](#1.2 map nmap vnormap nnoremap inoremap 区别)

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

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

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

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

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 <F2> y 在可视模式下将 F2 键映射为复制命令。

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

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

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

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

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

相关推荐
幸运小圣14 小时前
Buffer 新手入门【Node.js】
node.js·编辑器·vim
lzx_00221 小时前
Linux 开发工具(二) 简单认识一下编辑器 —— vim
linux·编辑器·vim
此生决int2 天前
Linux系列(04)——基础开发工具(上)软件包管理器、vim、gcc/g++
linux·服务器·vim
geats人山人海3 天前
linux 2 基本操作与vim
linux·运维·vim
星恒随风7 天前
Linux开发工具详解(一):软件包管理、Vim、GCC/G++、Makefile与进度条实战
linux·运维·笔记·学习·vim
开开心心就好8 天前
超市定时播音软件,免费版支持循环播放
智能手机·ffmpeg·ocr·word·vim·音视频·visual studio
ZhangJun959 天前
Linux常用命令笔记,中高级运维高频指令,并附上vim常见操作
linux·运维·centos·云计算·vim
Pointer Pursuit11 天前
编辑器Vim
linux·编辑器·vim
阿钱真强道18 天前
06 嵌入式操作系统 | vim 与软件管理:apt / 源码编译
ubuntu·vim·嵌入式·apt·源码编译
Tairitsu_H20 天前
[Linux] 编辑器vim、编译器和动静态链接
linux·vim·gcc·g++·动态链接·静态链接