【问题标题】:vim image placementvim 图像放置
【发布时间】:2011-08-08 03:40:25
【问题描述】:

在过去的几天里,我一直在强迫自己从 Textmate 切换到 Vim。 在大多数情况下,经过一些繁重的 Vim 配置后,我的效率几乎相同。 我的工作流程的一个方面我没有找到替代品,就是将文件拖放到 Textmate 中,其中图像将被转换为 img 标签,文件将被转换为 require 调用。

如何动态构建图像标签和 include/require 语句?

【问题讨论】:

标签: image vim include include-path


【解决方案1】:

自从切换后,我一直在考虑自动构建<img>

Vim 为部分问题提供了内置解决方案:omni-completion 引擎允许您完成要包含的文件的路径。

如果您开始键入“类似路径”的字符串(例如 <img src="images/),请点击 <C-x><C-f> 以获取可能的补全列表。再加上 ACP 和 snipMate 这样的自动补全插件,这个过程真的很快。

但这对widthheight 完全没有帮助。

一种可能的解决方案是使用 snipMate 作为<img> sn-p,使用 <C-x><C-f> 作为图像路径,捕获路径并将其提供给某个命令行实用程序,填充 widthheight属性及其输出。

编辑

原来其他人已经探索过类似的道路,this script 很有趣,但它不适用于包含空格的文件路径。 Here is a slightly modified version 效果不错。 This other one 看起来很酷,但它缺少一个关键部分。

结束编辑

另一个编辑

我已将此 sn-p 添加到 ~/.vim/bundle/snipMate/snippets/html.snippets(注意 $ 之前的缩进是 <Tab>):

snippet img custom
  ${1:`HTML_insertImg()`}

效果很好,但在HTML_insertImg() 的输出前加上0,如下所示:

0<img src="future_timeline.png" width="612" height="6370" alt="" />

虽然这个0 有点问题。该系统显然并不完美,但一旦我摆脱了这个烦人的0,它将非常适合我基于 snipMate 的其余过程。

顺便说一下我使用的脚本here is a second modified version

结束另一个编辑

加长 12" 重新编辑版本

与:

你可以:

  • 打开NERDTree,选择一张图片并点击b,在上一个窗口的光标位置粘贴一个几乎完整的&lt;img src="imagename.jpg" width="128" height="256" alt="" /&gt;标签
  • 或者,如果您的 Vim 风格允许,输入 :IMG&lt;CR&gt; 以打开本机文件选择对话框,选择图像并在当前窗口中的光标位置粘贴几乎完整的 &lt;img src="imagename.jpg" width="128" height="256" alt="" /&gt; 标签
  • 或者,如果您在终端中,键入 :IMG path/to/file.jpg 以在当前窗口中的光标位置粘贴几乎完整的 &lt;img src="imagename.jpg" width="128" height="256" alt="" /&gt; 标签

snipMate 解决方案现在还没有真正成熟。

感谢 Petr Mach 和 @Matteo Riva 实际完成大部分工作。

是的,我显然不是 Vim 专家。

结束 12" 重新编辑版本

【讨论】:

  • 感谢自动完成提示,非常好,但是尺寸比文件名更难获得。这就是我要找的。​​span>
  • @matt ryan,我自己还是个 Vim 菜鸟。实际上,几个月以来,找到解决方案一直在我的 TODO 清单上。我认为,我需要提高我的正则表达式(非)技能。
  • 同时我正在使用如下的识别包: $ identify -format "width=\"%w\" height=\"%h\"" background.png | pbcopy
  • 我的新的和完善的方法,通过 i image.jpg 调用我添加到我的 .profile 的函数 i() { identify -format "width=\"%w\" height=\"%h\"" "$1" | tr -d '\n' | pbcopy ; } 出于某种原因识别输出包含一个新行,因此 tr 在它获取之前将其剥离粘贴到 os x 剪贴板 (pbcopy)。通过!i image.jpg 在vim 中调用并正常粘贴。如果有人能弄清楚如何在不粘贴的情况下让它在光标处输入,他们就会得到答案。
  • @matt ryan 是的,我一直在尝试使用 identify,但使用了一些本地 Vim-fu,而不是依赖 bash 脚本。我想出了一些正则表达式来获取src="" 的内容,并且我正在尝试将其提供给以可靠的方式进行识别以执行:s/width="\zs.*\ze"\sh/&lt;what's returned by identify&gt; 之类的操作。现在我只是在用 oneliners 玩这个想法,但我可能应该把它变成一个合适的Function()
猜你喜欢
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多