我在Rmarkdow上经常使用它来引用代码,所以我创建了一个插件,但想知道是否有快捷方式。如果不是这样,我该如何配置外接程序,以便在调用它时,插入符号或光标的位置位于两个符号之间,与在RStudio中使用""
或()
时完全一样。
insertInAddin <- function() { rstudioapi::insertText("``") }
是我用于外接程序的代码
我希望获得帮助,了解如何设置
rstudioapi::setCursorPosition()
和location
参数中的document_position()
。
您可以使用shrtcts包执行此任务。它允许您将键盘快捷键分配给任意R
代码。
通过键入例如in
(用于内联代码字体)并按Shift+Tab
:
R Markdown
代码段,该代码段也可以单独使用
snippet in
`${1}`$0
使用RStudio控制台中的命令shrtcts::edit_shortcuts()
打开您定义自定义快捷方式的文件。
将以下代码粘贴到该文件中(在@shortcut
行中设置您的首选键绑定)。请注意,函数第二行中插入的文本必须与步骤1中的新代码段匹配:
#' Code Font
#'
#' @description
#' If Editor has selection, transform current selection to code font.
#' If Editor has no selection, write between backticks.
#' @interactive
#' @shortcut Cmd+E
function() {
if (rstudioapi::selectionGet()$value == "") {
rstudioapi::insertText("in")
rstudioapi::executeCommand("insertSnippet") |>
capture.output() |>
invisible()
} else {
# Gets The Active Document
ctx <- rstudioapi::getActiveDocumentContext()
# Checks that a document is active
if (!is.null(ctx)) {
# Extracts selection as a string
selected_text <- ctx$selection[[1]]$text
# modify string
selected_text <- stringr::str_glue("`{selected_text}`")
# replaces selection with string
rstudioapi::modifyRange(ctx$selection[[1]]$range, selected_text)
}
}
}
此解决方案使用原生管道|>
,因此需要R 4.1
。
当然,如果您使用的是R
的早期版本,则只需在每行中定义单独的变量,或者使用magrittr
管道。
此外,stringr::str_glue()
命令可以轻松替换为基本R
解决方案,以避免依赖关系。
使用RStudio控制台中的命令shrtcts::add_rstudio_shortcuts(set_keyboard_shortcuts = TRUE)
添加新快捷键及其分配的快捷键。然后重新启动RStudio。
cmd+e
将光标放在反标记内,然后在第二个反标记后按Tab
继续写入。
或者,您可以选择文本,然后按cmd+e
将所选文本用反记号括起来。上面的解决方案可以很容易地推广到RMarkdown文档中的粗体和斜体文本,或者写入美元符号以添加内联Latex Math。
上一篇:是否有可能修改PDF表单字段名称?有可能、字段、表单、名称
下一篇:在开发.NET一个新的RESTful Web服务 - 我应该在哪里开始呢? ASP.NET-MVC,WCF?Web、RESTful、NET、WCF