【问题标题】:vim creating alias for frequently used command [duplicate]vim为常用命令创建别名[重复]
【发布时间】:2012-05-30 00:23:27
【问题描述】:

可能重复:
Aliasing a command in vim

所以我不得不编辑很多 waf wscript 文件。每次我执行这个命令来设置文件类型

set filetype=python

有没有办法为上述命令设置一个小别名?这样我就可以进入 EX 模式并键入执行相同操作的“py”。

【问题讨论】:

  • 我正在寻找一种方法来使其永久化,我尝试了 ":command cmd cmd_alias' 但它失败了
  • @VihaanVerma:熟悉vimrc?如果不是,请查找。
  • 不是建议问题的副本。它有一些相似之处,但又完全不同,尤其是在自动命令的最佳解决方案中,它回答的是意图而不是措辞上的问题。
  • 习惯是在所有wscript的开头加上"#!/usr/bin/env python" shebang(你会在任何waf示例中找到它,下面一行表示文件编码),这有很好的效果,让智能编辑器将文件识别为 Python 文件。

标签: python vim wsh waf


【解决方案1】:

如果我正确理解了您的问题,以下添加到您的.vimrc 应该可以工作

autocmd BufRead,BufNewFile *.waf set filetype=python

如果它是像wscript 这样的特定文件名,这也可以:

autocmd BufRead,BufNewFile wscript set filetype=python

如果您不能依赖扩展名或文件名,您可以在文件的顶部或底部添加模式行

# vim: set filetype=python :

更多信息请参见:help modeline

但这有点难看,因为你必须修改文件,如果你是在一个团队中工作,这可能会出现问题。

【讨论】:

  • 我猜上面的命令取决于文件扩展名“.waf”。在我的情况下,wscript 文件没有“.waf”扩展名。
  • 这也让我想知道 vim 是否存储命令历史记录。
  • 只需更改 Xavier 答案中的 *.waf 部分以满足您的需求。
  • @VihaanVerma :您可以通过输入 q: 访问命令历史记录,然后输入向上/向下箭头或 j/q 来选择一个项目。
  • 请注意,您可以做的不仅仅是*.waf。如果它有一个共同的文件名,如wscript,或者一个共同的路径,你可以在这里做,或者如果里面有一些可识别的字符串,你也可以用 autocmd 来做。这是一个比手动执行命令更好的解决方案。我认为在你的情况下你只想要au BufRead,BufNewFile wscript setf python?
【解决方案2】:

你不想进入 Ex 模式。你想进去的是Command-line mode

command! Py set filetype=python

完全符合您的要求:您输入:Py<CR> 将文件类型更改为python

您还可以使用 正常 模式映射使其更快:

nnoremap <F11> :set filetype=python<CR>

【讨论】:

  • command! Py :exec('set filetype=python')!?那应该只是command! Py set filetype=python。在您的命令中,: 和括号将被忽略;它使用:execute 命令来达到同样的目的……这不是一个函数。
  • 答案已更正。谢谢你,克里斯。
  • 但是一旦退出文件,这个别名就会被删除。我想避免 F11 键,所以输入了命令“command!Py set filetype=python”,它就可以工作了! :D
  • 您必须将这些行(或您喜欢的行)放入您的~/.vimrc。这就是您如何使所有设置在会话之间保持不变。我以&lt;F11&gt; 为例。您可以使用任何键或组合键,但要明智地选择。
猜你喜欢
  • 2011-04-22
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 2017-09-05
  • 2014-04-02
  • 1970-01-01
  • 2016-10-19
相关资源
最近更新 更多