嘿,我想在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
在"
中不起作用,所以我要做的是扩展那里的特定关键字,如Object
或Integer
。
我认为将命令构建为字符串然后使用: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>