如何在需要用户输入时链接 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
,因为您将传递的参数转发给该命令,所以匹配是有意义的它。
作为一个最小的例子,假设我想在当前缓冲区中搜索然后保存它。
类似于/
[用户输入...]
然后 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
,因为您将传递的参数转发给该命令,所以匹配是有意义的它。