首页 > 解决方案 > 获取 R 片段以接受插入文本中的空格

问题描述

我正在尝试编写一个片段,以允许我使用标准格式快速插入评论文本:

#######################################><###################
##  [date and time goes here] ------------------------------
##  [comment goes here, can span multiple
##  lines]
#######################################><###################

这是我到目前为止所得到的:

snippet comm
    `r paste0(
        "#######################################><###################\n##  ", 
        date(), 
        " -------------------------------\n##  ", 
        eval(
            paste0(
                gsub(
                    ".{1,51}\\s?\\K\\b", 
                    "\n##  ", 
                    gsub("\\.", " ", paste0(text)), 
                    perl = T
                )
            )
        ), 
        "###################################><###################\n"
    )`

此代码段有效,但要求注释文本中不能有任何空格。作为一种解决方法,我编写了代码片段来解释.为一个空格。

commlong.comment.text.1111111.aaaaaaa.2222222.bbbbbbb.3333333.ccccccc.4444444.ddddddd.5555555.eeeeeee.6666666.fffffff.7777777.ggggggg.8888888.9999999.0000000

#######################################><###################
##  Tue Jul 24 12:40:55 2018 -------------------------------
##  1111111 aaaaaaa 2222222 bbbbbbb 3333333 ccccccc 
##  4444444 ddddddd 5555555 eeeeeee 6666666 fffffff 
##  7777777 ggggggg 8888888 9999999 0000000
##  ###################################><###################

由于用句点而不是空格输入评论很痛苦,我想修改我的代码片段以接受带空格的评论文本。任何想法如何做到这一点?谢谢。

标签: rwhitespacecode-snippets

解决方案


事实证明,这比预期的要容易得多。我发现代码片段中不在刻度内的任何内容都`被解释为直接输入到 RStudio 的源窗格中。内部的任何内容都会`r ... `被评估,就好像它是直接输入到控制台窗格中一样,但输出会插入到源窗格中的当前位置(相对于现有文本或周围的片段)。所以我写了这个片段,它基本上是我想要的:

snippet commentblock
    ######################################## # # # # # # # # # #  ##  ##  ##  ##  ##
    # `r date()`
    # ${1:title} -------------------------------------------------------
    # ${2:text}
    ######################################## # # # # # # # # # #  ##  ##  ##  ##  ##

---在标题之后添加了,因为我希望将这一行解释为文档大纲的节标题。可以编写一个片段来计算字符数title并插入确切数量的-' 以使---一直到边缘,但弄清楚这似乎不是一个很好的用途我的时间。


推荐阅读