我有一个vim函数:
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)
endfunctionnoremap <leader>pc :call Pycom('')<Left><Left>这将创建Python注释。输出如下:
# ########################################### Hello World ############################################
我如何创建一个键映射放置在我的vimrc,以创建我的评论字符串,只使用Vim命令?我需要这样做,因为我使用PyCharm,在Vim仿真模式下,它不允许调用函数。
发布于 2019-01-29 16:22:09
如果只是缺少:function,您可以将各个命令内联成一个长而难看的命令序列。但是,Vim仿真不太可能只是忽略函数;问题是Vimscript本身与Vim本身紧密绑定,并且主要是由Vim中的唯一实现指定的行为。所以我猜strlen(),repeat(),甚至:put ={expression}也不会在PyCharm工作。
大多数Vim仿真只提供基本的:map命令。在不了解任何关于PyCharm的知识的情况下,可以尝试以下一般方法:
:! (或:{range}!)命令来调用外部命令,则可以在外部命令中实现该功能,该功能可以用您喜欢的任何编程语言实现。(如果仿真没有提供:{range}!命令,则必须先将缓冲区传递给:write,然后以某种方式将文件名和当前位置传递给外部命令。)一般来说,Vim仿真非常有限,只能模仿基本的vi功能(尽管我也看到了一些流行的Vim插件的自定义重新实现,比如surround.vim)。
替代方案
要在IDE中获得更多Vim的特殊功能,请同时使用这两种功能;在IDE中设置一个外部工具来启动带有当前文件(和位置)的Vim是非常容易的。自动重新加载更改(在Vim中通过:set autoread)允许您同时编辑源代码。
https://stackoverflow.com/questions/54423793
复制相似问题