ChatGPT解决这个技术问题 Extra ChatGPT

.vimrc 文件中的 <leader> 是什么?

我在许多 .vimrc 文件中看到 <leader>,我想知道它是什么意思?

它是干什么用的?

只是对目的和用法的一般概述会很棒。

我开始意识到,我认为关键的理解是,通过在键盘快捷键中使用 <leader>,您可以有效地创建命名空间,这样您的自定义快捷键就不会影响内置的 vim 行为。有关更多信息,请参阅下面的@Pete Schlette 答案。
如果您想检查您的 <leader> 是什么,请使用 :echo mapleader:let mapleader。如果未定义,那么它将使用默认值,即反斜杠 "\"

F
Fredrick Brennan

<Leader> 键默认映射到 \。所以如果你有一个 <Leader>t 的映射,你可以默认使用 \+t 来执行它。有关更多详细信息或使用 mapleader 变量重新分配它,请参阅

:帮助领导

To define a mapping which uses the "mapleader" variable, the special string
"<Leader>" can be used.  It is replaced with the string value of "mapleader".
If "mapleader" is not set or empty, a backslash is used instead.  
Example:
    :map <Leader>A  oanother line <Esc>
Works like:
    :map \A  oanother line <Esc>
But after:
    :let mapleader = ","
It works like:
    :map ,A  oanother line <Esc>

Note that the value of "mapleader" is used at the moment the mapping is
defined.  Changing "mapleader" after that has no effect for already defined
mappings.

, 的更改很好。比 \\ 更容易到达,谁在 vim 中使用 ,
@Gabe Moothart。 :h ,为您提供“以相反的方向重复最新的 f、t、F 或 T [count] 次。”这很方便。
我喜欢空格 (' ') 作为前导键,因为我可以用任何一只手敲击它,从而使后续键(无论是在键盘的左侧还是右侧)在之后同样快速地触发。拥有一个仅位于键盘一侧的前导键会使按下键盘同一侧的后续键感觉稍微麻烦一些。挑剔,我知道。 :)
@jefflunt 我的右手拇指已经一周了,因为我从来没有用它来打字。所以我只用左手拇指敲击空格。我猜,那个空间领导者钥匙并没有给我带来同样的好处。
j
jasonleonhard

请注意,当您按下 <leader> 键时,您只有 1000 毫秒1 秒(默认情况下)输入命令 .

这会加剧,因为有 no 视觉反馈(默认情况下)您按下了 <leader> 键并且 vim 正在等待命令;因此也没有视觉方式可以知道何时发生此超时。

如果您将 set showcmd 添加到 vimrc,那么您将看到您的 <leader> 键出现在 vim 的右下角(光标位置的左侧),也许更重要的是您会看到它消失 当超时发生时。

超时长度也可以在您的 vimrc 中设置,有关详细信息,请参阅 :help timeoutlen


« :set showcmd » 显示当前命令,因此领导者密钥显示它处于活动状态的时间。
由于缺乏反馈,虽然默认情况下没有视觉反馈,但如果在您按下 <leader> 后的 1000 毫秒内没有收到命令,vim 似乎会发出系统铃声。
M
Mikeage

“Leader key”是一种扩展 VIM 快捷键功能的方法,它通过使用按键序列来执行命令。默认的领导键是反斜杠。因此,如果您有 Q 的映射,您可以通过键入 \Q 来执行该操作。


@ArnoldRoa 每当列出 vim 命令时,语法 ggdG 表示按顺序按这四个键。 <C-w><C-j> 之类的语法表示按 CTRL+w,然后按 CTRL+j。
P
Pete Schlette

Vim 的 <leader> 键是一种为要定义的命令创建命名空间的方法。 Vim 已经映射了 Ctrl +(一些键)的大多数键和组合,所以 <leader>(some key) 是您(或插件)可以添加自定义行为的地方。

例如,如果您发现自己经常恰好删除 3 个单词和 7 个字符,您可能会发现通过 nmap <leader>d 3dw7x 映射命令很方便,这样按前导键后跟 d 将删除 3 个单词和 7 个字符。因为它使用领导者密钥作为前缀,所以您可以(相对)确保您不会踩踏任何预先存在的行为。

<leader> 的默认键是 \,但您可以使用命令 :let mapleader = "," 将其重新映射到另一个键(在本例中为 ,)。

Usevim's page on the leader key 有更多信息。


U
UnrealApex

默认的前导键是反斜杠 (\)。它在绑定中用作与其他击键的和弦。