我有一个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)
endfunction
noremap <leader>pc :call Pycom('')<Left><Left>
创建Python注释。输出如下:
# ########################################### Hello World ############################################
如何仅在Vim命令中创建键映射以放置在vimrc中以创建注释字符串?我需要这样做,因为我使用PyCharm,并且在Vim仿真模式下它不允许调用函数。
答案 0 :(得分:3)
如果仅缺少: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
)使您可以同时编辑源代码。