首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只使用VIM命令创建python注释字符串

只使用VIM命令创建python注释字符串
EN

Stack Overflow用户
提问于 2019-01-29 14:56:49
回答 1查看 53关注 0票数 0

我有一个vim函数:

代码语言:javascript
复制
function! Pycom(word)
    let a:inserted_word = ' ' . a:word . ' '
    let a:word_width = strlen(a:inserted_word)
    let a:length_before = (118 - a:word_width) / 2
    let a:hashes_before = repeat('#', a:length_before)
    let a:hashes_after = repeat('#', 118 - (a:word_width + a:length_before))
    let a:hash_line = repeat('#', 118)
    let a:word_line = '# '. a:hashes_before . a:inserted_word . a:hashes_after

    :put =toupper(a:word_line)
endfunction
代码语言:javascript
复制
noremap <leader>pc :call Pycom('')<Left><Left>

这将创建Python注释。输出如下:

# ########################################### Hello World ############################################

我如何创建一个键映射放置在我的vimrc,以创建我的评论字符串,只使用Vim命令?我需要这样做,因为我使用PyCharm,在Vim仿真模式下,它不允许调用函数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-29 16:22:09

如果只是缺少:function,您可以将各个命令内联成一个长而难看的命令序列。但是,Vim仿真不太可能只是忽略函数;问题是Vimscript本身与Vim本身紧密绑定,并且主要是由Vim中的唯一实现指定的行为。所以我猜strlen()repeat(),甚至:put ={expression}也不会在PyCharm工作。

大多数Vim仿真只提供基本的:map命令。在不了解任何关于PyCharm的知识的情况下,可以尝试以下一般方法:

  • 如果仿真提供了:! (或:{range}!)命令来调用外部命令,则可以在外部命令中实现该功能,该功能可以用您喜欢的任何编程语言实现。(如果仿真没有提供:{range}!命令,则必须先将缓冲区传递给:write,然后以某种方式将文件名和当前位置传递给外部命令。)
  • 一些仿真程序还提供了一个非标准命令来调用它们自己的核心编辑器函数(因此您可能能够用它来实现它),甚至是任意的自定义代码;例如,对于基于NodeJS的编辑器,可以是JavaScript代码。

一般来说,Vim仿真非常有限,只能模仿基本的vi功能(尽管我也看到了一些流行的Vim插件的自定义重新实现,比如surround.vim)。

替代方案

要在IDE中获得更多Vim的特殊功能,请同时使用这两种功能;在IDE中设置一个外部工具来启动带有当前文件(和位置)的Vim是非常容易的。自动重新加载更改(在Vim中通过:set autoread)允许您同时编辑源代码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54423793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档