如何在vim中获取所选文本的行号

时间:2017-07-18 23:42:09

标签: vim

是否可以将所选文本的行号传递给外部命令?

背景信息:我想将pyfmt集成到vim中。理想情况下,我希望能够选择一些文本并输入一些快捷方式,以便pyfmt重新格式化所选文本。

到目前为止,我发现运行!pyfmt -i %将格式化整个文件。 pyfmt也支持--lines START-END选项。我希望能够将所选文本的开头和结尾的行号传递给pyfmt,以便只重新格式化我想重新格式化的内容。这可能吗?

2 个答案:

答案 0 :(得分:2)

选择要格式化的线条(最好是线条,使用大写 V 进入可视模式),然后在不离开可视模式的情况下输入:!pyfmt -i

这不会给你行号。相反,它将通过命令过滤选定的行,并将其替换为输出。

答案 1 :(得分:0)

我将提供我的案例如下,我认为它可以轻松地根据您的案例进行定制。


我有一个 Vim-Plug 插件 Plug 'tpope/vim-commentary',它有一个命令:(l,r 是行号)

:l,rCommentary

当您在 Vim 中 visual-selected 行,然后按 : 时,您将得到:

:'<,'>

基于这个观察,我需要的命令是:(visual mode mapping)

vnoremap <silent> my_shortcut :Commentary<CR>gv

即我只需要 :Commentary,因为当它执行 : 时,会为您添加 '<,'>


了解<silent>https://stackoverflow.com/a/962118/5290519