如何在命令行模式下打印 vim 寄存器值?

how can i print vim register value in command line mode?

嘿,我想在 vim 终端中打印 javap java.lang.Object,但不仅仅是 'Object' class,而是我在特定寄存器中抽出的任何 class。

假设我在 vim 中用 "kyaw 抽取了单词 Integer 所以我想打印 javap java.lang.Integer.

的输出

为此,我尝试了这个命令,但它不起作用。

:term javap "java.lang.${echo @k}"

但在 vim 终端中它给我错误

zsh:1: bad substitution

我认为 echo @k" 中不起作用,所以我做了什么来扩展那里的特定关键字,如 ObjectInteger

在命令行中,插入寄存器的内容是用:help c_ctrl-r完成的。在你的情况下:

:term javap java.lang.<C-r>k<CR>

这很容易变成一个简单的映射:

nnoremap <key> :term javap java.lang.<C-r>k<CR>

并通过直接使用光标下的词而不是在单独的步骤中抽取某些内容来改进:

nnoremap <key> :term javap java.lang.<C-r><C-w><CR>

我认为将命令构建为字符串比 运行 使用 :execute:

更容易
:execute 'term javap \"java.lang.'..@k..'\"'

:execute printf('term javap \"java.lang.%s\"', @k)

注意 " 是用反斜杠转义的,.. 是字符串连接运算符。