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



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

假设我在vim中用"kyaw抓取单词Integer,所以我想打印javap java.lang.Integer的输出。

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

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

但是在vim终端中,它给我的错误是

zsh:1: bad substitution

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

我认为将命令构建为字符串然后使用:execute运行它更容易:

:execute 'term javap "java.lang.'..@k..'"'

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

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

在命令行中,插入寄存器的内容是通过: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>