我在Vim和Python之间浪费了很多时间.我发现从Python手动复制粘贴到Vim太慢了,反之亦然.一个好的破坏的例子是:
%!python for i in xrange(25); 打印6*i \n
你怎么能在Vim做这样的调整? [解决了]
[澄清] 我需要Vim的东西,比如打印序列,算术...... - 我在Vim做不到的事情.
[?]有人可以详细说明这一点:"你的脚本可以从stdin中读取,直接在给定的行(.,%,...)上运行. "
[进一步澄清]
如果我想在第4,5,6和7行打印'Hello',那有什么不对:
:4-7!python -c"print'hello'"
点.修改当前行.我可以在多行7,32和99上打印:
:7,32,99!python -c"print'hello'"
显然不行.怎么样?
在任何vim窗口中,键入以下内容:
for x in range(1,10): print '-> %d' % x
目视选择这两行(V以启动可视模式),然后键入以下内容:
:!python
因为你在视觉模式下按下':',最终会看起来像:
:'<,'>!python
按Enter键,选择将被print
语句的输出替换.您可以轻松将其转换为映射:
:vnoremap:!python
有人可以详细说明这一点:"你的脚本可以从stdin中读取,直接在给定的行(.,%,...)上运行."
一个常见用途是使用shell中提供的"sort"命令对文本行进行排序.例如,您可以使用以下命令对整个文件进行排序:
:%!sort
或者,您可以通过在可视模式下选择它们然后键入以下几行来排序:
:!sort
您可以使用此命令对第5-10行进行排序:
:5,10!sort
您可以编写自己的命令行脚本(假设您知道如何操作),它会反转文本行.它的工作原理如下:
bash$ myreverse 'hello world!' !dlrow olleh
您可以使用与您使用的完全相同的方式将其应用于vim中的一个打开文件sort
:
:%!myreverse <- all lines in your file are reversed
从您的示例中,您似乎想要执行Python脚本并使脚本的输出显示在当前Vim缓冲区中.如果这是正确的,那么您可以在Vim的命令行中执行以下操作:
%!python -c "for i in xrange(25): print 6*i"
-c
为其python
提供运行脚本的选项.但是,您可能会发现此技术仅在非常短的情况下有用,因为与其他一些语言不同,Python不适合在一行中编写完整的程序.