我在Vim和Python之间浪费了很多时间。我发现手动从Python复制粘贴到Vim太慢了,反之亦然。一个很好的失败的例子是:
Python%!xrange中i的
(25);打印6*i \n
如何在Vim中直接进行这样的调整?解决了
澄清我需要一些东西给Vim,比如打印序列,算术...-我不能在Vim中做的事情。
可以详细说明这一点:“您的脚本可以从标准输入中读取数据,从而直接对给定的行(.,%,...)进行操作。”
进一步澄清
如果我想将'Hello‘打印到第4、5、6和7行,错误是什么:
:4-7!python -c“打印'hello'”
圆点。修改当前行。我可以打印多行7、32和99行吗:
:7,32,99!python -c“打印'hello'”
显然不起作用。多么?
发布于 2009-02-01 22:17:12
在任何vim窗口中,键入类似以下内容:
for x in range(1,10):
print '-> %d' % x
以可视方式选择这两条线(V以启动可视模式),然后键入以下内容:
:!python
因为你在视觉模式下按下了':‘,结果如下所示:
:'<,'>!python
点击enter,所做的选择将被print
语句的输出所取代。您可以很容易地将其转换为映射:
:vnoremap <f5> :!python<CR>
发布于 2009-02-01 23:00:46
可以有人详细说明这一点:“您的脚本可以从标准输入中读取,以便直接对给定的行(.,%,...)进行操作。”
一种常见的用法是使用shell中提供的“sort”命令对文本行进行排序。例如,您可以使用以下命令对整个文件进行排序:
:%!sort
或者,您可以在可视模式下选择几行,然后键入以下命令来对它们进行排序:
:!sort
您可以使用以下命令对第5-10行进行排序:
:5,10!sort
您可以编写自己的命令行脚本(假设您知道如何执行此操作)来颠倒文本行。它是这样工作的:
bash$ myreverse 'hello world!'
!dlrow olleh
您可以使用与使用sort
完全相同的方式将其应用于vim中的一个打开的文件
:%!myreverse <- all lines in your file are reversed
发布于 2009-02-01 21:21:47
在您的示例中,您似乎想要执行Python脚本,并将脚本的输出显示在当前的Vim缓冲区中。如果这是正确的,那么您可以在Vim的命令行中执行以下操作:
%!python -c "for i in xrange(25): print 6*i"
python
的-c
选项为它提供了一个要运行的脚本。但是,您可能会发现这种技术只在非常短的情况下有用,因为与其他一些语言不同,Python不适合在一行上编写完整的程序。
https://stackoverflow.com/questions/501585
复制相似问题