我倾向于在代码中使用大量换行符,如下所示:
# Data =========================================================================
整个评论的长度始终为80个字符(包括主题标签)。我想要做的是为Rstudio编写一个代码片段,插入主题标签,然后是空格,然后允许用户输入一系列单词,然后插入另一个空格,最后填写一堆&#34 ; ="直到达到80个字符的限制。
我不熟悉片段的工作方式,所以我不确定这有多难。
我有这么多:
snippet lb
# ${1:name}
但我不知道如何添加动态数量的" ="迹象。此外,lb = linebreak。
答案 0 :(得分:4)
不幸的是,你不能用片段做到这一点;代码段是一个文本模板,其中包含带有用户插入文本插槽的固定文本。
然而,RStudio内置了一个命令来执行非常相似的操作;从“代码”菜单中,选择“插入节”(或 Ctrl + Shift + R )。这将完全符合您的描述,但有两点不同:
该行将在打印边距之前扩展到5个字符(您可以在工具中调整打印边距 - >全局选项 - >代码。
该行由-
而非=
个字符组成。
以这种方式标记的部分的一个优点是,您可以使用它们折叠并在文件内导航(添加一个后查看编辑器状态栏)。
答案 1 :(得分:1)
您可以编写一个片段来操纵文本(有点)。我在下面编写了代码片段,以执行与您想要的操作类似的操作。我仍在解决问题(只问this question)。
snippet comm
`r paste0(
"#######################################><###################\n## ",
date(),
" -------------------------------\n## ",
eval(
paste0(
gsub(
".{1,51}\\s?\\K\\b",
"\n## ",
gsub("\\.", " ", paste0(text)),
perl = T
)
)
),
"###################################><###################\n"
)`
我认为,如果您使用匿名函数编写R代码段,该匿名函数接受通过$$
输入的文本,计算文本中的nchar
,计算所需的-
数最后,然后使用eval(paste0())
插入评论,您应该可以使其生效。如果发现问题,我将在此处发表评论或回答。如果您可以使用它,请对我的问题做同样的事情。谢谢。 (P.S. Go Badgers!)
答案 2 :(得分:0)
您可以使用代码段内的rstudioapi
(可以返回列位置)来获取所需的内容。
下面是我使用的一个名为endhead
的代码段。我通过注释标题标题然后应用代码段来使用它,例如:
# Section name endhead
结果为:
# Section name -----------------------------------------------------------------
snippet endhead
`r paste0(rep.int("-", 88 - rstudioapi::primary_selection(rstudioapi::getActiveDocumentContext())$range$start[2]), collapse = "")`