如何在需要用户输入时链接 vim 命令

How can I chain vim commands when one expects a user input

作为一个最小的例子,假设我想在当前缓冲区中搜索然后保存它。

类似于/ [用户输入...] 然后 w

您如何将其链接到一个命令中?

在我的示例中没有意义,但实际情况是: :GoRename [user input] <CR> 然后 :GoBuildTags '' <CR>

类似的东西不起作用: nnoremap <leader>rr :GoRename <bar> :GoBuildTags ''<CR>

The real situtation is: :GoRename [user input] <CR> then :GoBuildTags '' <CR>

我的建议是创建一个新的 user-command,例如 :GoRenameBuildTags 来执行这两个命令,并将其参数传递给第一个命令。

您通常可以使用 | 将命令链接在一起,但这需要使用 -bar 声明 :GoRename 命令,但事实并非如此......所以你'需要将它包装在 :execute 中,以便您可以将它与第二个命令分开。

所以可以这样定义命令:

command! -nargs=? -complete=customlist,go#rename#Complete
    \ GoRenameBuildTags
    \ execute "GoRename" <q-args>
    \ | GoBuildTags ''

我在这里使用与原始 GoRename 定义相同的 -nargs-complete,因为您将传递的参数转发给该命令,所以匹配是有意义的它。