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

仅使用VIM命令创建python注释字符串,vim,Vim,我有一个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_af

我有一个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 pc:调用Pycom(“”)
这将创建Python注释。输出如下:

现场码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩###########


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

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

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

  • 如果仿真提供了
    (或
    :{range}!
    )命令要调用外部命令,可以在外部命令中实现该功能,该命令可以用您喜欢的任何编程语言实现。(如果仿真没有提供
    :{range}!
    命令,则必须先
    :写入缓冲区,并以某种方式将文件名和当前位置传递给外部命令。)
  • 一些仿真还提供了一个非标准命令来调用它们自己的核心编辑器函数(因此您可以使用它来实现),甚至可以调用任意自定义代码;例如,对于基于NodeJS的编辑器,可以是JavaScript代码
一般来说,Vim仿真非常有限,只能仿真基本的vi特性(尽管我也看到了一些流行的Vim插件的自定义重新实现,如surround.Vim)

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

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

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

  • 如果仿真提供了
    (或
    :{range}!
    )命令要调用外部命令,可以在外部命令中实现该功能,该命令可以用您喜欢的任何编程语言实现。(如果仿真没有提供
    :{range}!
    命令,则必须先
    :写入缓冲区,并以某种方式将文件名和当前位置传递给外部命令。)
  • 一些仿真还提供了一个非标准命令来调用它们自己的核心编辑器函数(因此您可以使用它来实现),甚至可以调用任意自定义代码;例如,对于基于NodeJS的编辑器,可以是JavaScript代码
一般来说,Vim仿真非常有限,只能仿真基本的vi特性(尽管我也看到了一些流行的Vim插件的自定义重新实现,如surround.Vim)

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

感谢您提供了非常详细的答案。感谢您提供了非常详细的答案。
noremap <leader>pc :call Pycom('')<Left><Left>