是否可以将所选文本的行号传递给外部命令?
背景信息:我想将pyfmt
集成到vim中。理想情况下,我希望能够选择一些文本并输入一些快捷方式,以便pyfmt
重新格式化所选文本。
到目前为止,我发现运行!pyfmt -i %
将格式化整个文件。 pyfmt
也支持--lines START-END
选项。我希望能够将所选文本的开头和结尾的行号传递给pyfmt
,以便只重新格式化我想重新格式化的内容。这可能吗?
答案 0 :(得分:2)
选择要格式化的线条(最好是线条,使用大写 V 进入可视模式),然后在不离开可视模式的情况下输入:!pyfmt -i
。
这不会给你行号。相反,它将通过命令过滤选定的行,并将其替换为输出。
答案 1 :(得分:0)
我将提供我的案例如下,我认为它可以轻松地根据您的案例进行定制。
我有一个 Vim-Plug 插件 Plug 'tpope/vim-commentary'
,它有一个命令:(l
,r
是行号)
:l,rCommentary
当您在 Vim 中 v
isual-selected 行,然后按 :
时,您将得到:
:'<,'>
基于这个观察,我需要的命令是:(v
isual mode mapping)
vnoremap <silent> my_shortcut :Commentary<CR>gv
即我只需要 :Commentary
,因为当它执行 :
时,会为您添加 '<,'>
。
了解<silent>
:https://stackoverflow.com/a/962118/5290519