参考我的上一篇博客:
https://blog.csdn.net/weixin_62528784/article/details/145092632?spm=1001.2014.3001.5501
这篇内容实际上就是上一篇博客的后续承接,既然都在vscode的jupyter中使用R了,实际上其实也能够直接在vscode中原生使用R的编辑器等;
效果上其实是与Rstudio差不多的;
1,vscode中R的配置:
参考上面插件的配置需求:
其中的这个R包还是那个问题,如果只是进入radian或者是R的传统终端安装的话,比较麻烦,还容易报错;
所以还是使用conda解决问题
注意还是回到r-jupyter这个环境
然后就是其他的一些在vscode中增强R使用的体验:
(1)首先就是radian,一个新的R的终端,见下;
R-debugger等在vscode中的拓展也都安装了,类似的拓展有:
还有一个:
(2)还有一个就是httpgd的R包:
实际上是用于处理R生成的图像的,
如果没有这个的话,实际上理论上绘图的话是会打开另外一个窗口的,但是使用httpgd的话,生成的图片实际上是会内嵌到vscode编辑器内部的;
最近在R内安装R包总是失败,还是使用conda
2,配置新的R终端:radian
https://github.com/randy3k/radian
安装相关要求:
# install released version
pip3 install -U radian# to run radian
radian
目前是在r-jupyter环境中安装的,所以无论是all in jupyter的时候需要切换到该环境以及使用该环境的R内核;
如果要使用R终端的话,也需要切换进入到该环境中
只是个终端,实际上命令是一致的:
可以修改一下alias:
总之R就是进入传统终端,r是进入radian终端
当然上面的只能在r-jupyter环境中使用:
但是我终端是想在所有环境中都使用,所以可以将上面的这个radian添加到环境变量中,或者是直接使用alias,将小r修改为上面r-jupyter环境中的radian,
当然也可以在后面的终端修改中设置为默认开启radian的新终端而不是旧的传统的终端;
(1)对该终端的进一步设置:
参考:https://github.com/randy3k/radian/issues/268
在用户主目录下创建该文件,然后使用;
(2)以下是每一项设置的具体翻译和解释:
# 不要复制整个配置,只需指定你需要的内容!
# 参见 https://pygments.org/styles
# 有关支持的颜色方案的列表,默认方案是 "native"
options(radian.color_scheme = "native") √
- 翻译:不需要复制整个配置,直接指定需要的内容。可以访问指定链接查看所有支持的样式,默认颜色方案为“本地”。
- 解释:设置终端的色彩模式,方便用户在命令行中识别信息。
- 颜色方案参考:https://pygments.org/styles/
# 选择编辑模式,默认为“emacs”或“vi”
options(radian.editing_mode = "emacs")
- 翻译:选择编辑模式,可以为“emacs”(默认)或“vi”。
- 解释:定义用户在命令行中使用的文本编辑模式。不同模式有不同的快捷键和操作方式。
# 在vi插入模式中启用各种emacs绑定
options(radian.emacs_bindings_in_vi_insert_mode = FALSE)
- 翻译:在vi模式的插入模式中启用emacs的键绑定。
- 解释:如果设置为TRUE,用户在vi插入模式中可以使用emacs的快捷键;若设置为FALSE,则使用vi的方式。
# 在radian.editing_mode是`vi`时显示vi模式状态
options(radian.show_vi_mode_prompt = TRUE)
- 翻译:当编辑模式为“vi”时,显示当前模式状态。
- 解释:帮助用户了解当前处于vi的哪种模式(如正常模式或插入模式)。
options(radian.vi_mode_prompt = "\033[0;34m[{}]\033[0m ")
- 翻译:设置vi模式的提示符。
- 解释:自定义在vi模式下显示的提示符样式,通过颜色和格式标识当前模式。
# 对换行行进行缩进
options(radian.indent_lines = TRUE) √
- 翻译:对继续行进行缩进。
- 解释:设置代码缩进,便于阅读和区分不同语句块。
# 自动匹配括号和引号
options(radian.auto_match = TRUE) √
- 翻译:启用括号和引号的自动匹配。
- 解释:在输入时自动补全对应的括号或引号,提高代码输入效率。
# 启用[prompt_toolkit](https://python-prompt-toolkit.readthedocs.io/en/master/index.html)的[`auto_suggest`功能](https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion)
# 这个选项仍在实验阶段,已知会破坏python提示,使用时需谨慎
options(radian.auto_suggest = FALSE)
- 翻译:启用提示工具库的自动建议功能。
- 解释:该功能允许在输入时提供建议,处于实验阶段,可能会影响提示系统的正常运行。
# 高亮匹配的括号
options(radian.highlight_matching_bracket = FALSE) √
- 翻译:高亮显示匹配的括号。
- 解释:设置为TRUE时,高亮匹配的括号,便于查看代码结构。
# 自动缩进新行和大括号
options(radian.auto_indentation = TRUE)
options(radian.tab_size = 4) √
- 翻译:自动为新行和大括号进行缩进,并设定制表符大小为4。
- 解释:提高代码格式化的美观度和可读性。
# 输入时弹出补全
options(radian.complete_while_typing = TRUE) √
- 翻译:在输入时弹出补全建议。
- 解释:提高代码书写效率,快速填充可能的命令或变量。
# 触发自动补全的前缀最小长度
options(radian.completion_prefix_length = 2)
- 翻译:设定触发自动补全的最小前缀长度为2。
- 解释:用户输入时,需要至少输入两个字符后才会显示补全选项。
# 超过时间取消补全的超时设置(以秒为单位)
# 设置为0则禁用超时
options(radian.completion_timeout = 0.05)
- 翻译:设置完成选项的超时,超过0.05秒则取消。
- 解释:防止补全操作过长时间阻塞用户的输入。
# 在函数参数补全中在等号两边添加空格
options(radian.completion_adding_spaces_around_equals = TRUE) √
- 翻译:在函数参数补全中,在等号周围添加空格。
- 解释:为了提高代码的整洁度和可读性,自动在参数赋值时添加空格。
# 根据终端宽度自动调整R缓冲区大小
options(radian.auto_width = TRUE) √
- 翻译:根据终端宽度自动调整R的缓冲区大小。
- 解释:增强用户在不同环境下的使用体验,避免内容溢出。
# 提示符之间插入新行
options(radian.insert_new_line = TRUE)
- 翻译:在提示符之间插入新的行。
- 解释:改善输出格式,使多个提示符之间有分隔行。
# 最大历史记录数
options(radian.history_size = 20000)
- 翻译:设置最大历史记录数为20000。
- 解释:定义可存储的最大命令历史条目以供查询。
# 存储全局历史的路径,环境变量将被展开
# 在Windows中,“~”展开为 %USERPROFILE% 或 %HOME%
options(radian.global_history_file = "~/.radian_history")
- 翻译:指定全局历史记录文件的位置,路径中会自动扩展环境变量。
- 解释:用户的命令历史记录会保存在这个文件中。
# 本地历史记录的存储文件名,如果当前工作目录下存在该文件,则使用它替代全局历史记录
options(radian.local_history_file = ".radian_history")
- 翻译:指定本地历史记录文件名。
- 解释:如果当前目录下存在此文件,则会在本地保存历史,而非全局文件。
# 使用历史搜索(emacs模式下 ctrl-r/ctrl-s)时不显示重复结果
options(radian.history_search_no_duplicates = FALSE)
- 翻译:在历史搜索中不显示重复结果。
- 解释:可以选择是否允许在重复搜索历史命令时继续显示相同的命令。
# 在历史搜索中忽略大小写
options(radian.history_search_ignore_case = FALSE)
- 翻译:在历史搜索时不区分大小写。
- 解释:设置为TRUE时,搜索可以不考虑输入的字母大小写。
# 不将调试浏览器命令(如 `Q`)保存在历史记录中
options(radian.history_ignore_browser_commands = TRUE)
- 翻译:忽略调试浏览器命令的历史记录。
- 解释:一些调试命令不需要记录,避免历史记录过于杂乱。
# 为不同模式自定义提示符
options(radian.prompt = "\033[0;34mr$>\033[0m ")
options(radian.shell_prompt = "\033[0;31m#!>\033[0m ")
options(radian.browse_prompt = "\033[0;33mBrowse[{}]>\033[0m ")
- 翻译:自定义不同模式下的提示符。
- 解释:根据不同操作模式设置不同的提示符样式,便于区分。
# stderr颜色格式
options(radian.stderr_format = "\033[0;31m{}\033[0m") √
- 翻译:设置标准错误输出的颜色格式。
- 解释:使错误信息的显示更加直观。
# 启用reticulate提示并触发`~`
options(radian.enable_reticulate_prompt = TRUE) √
- 翻译:启用reticulate提示。
- 解释:支持R和Python之间的互操作性,便于在R中调用Python代码。
部分需要再调整
3,其他的一些个性化设置:
(1)快捷键设置:
其中原始的ctrl+l是默认使用的终端清除命令,
然后新增的两个命令就是R中常用的执行某行,以及tidyverse中常用的%>%符号;
第一个快捷键定义部分
{"key": "ctrl+shift+m","command": "editor.action.insertSnippet","when": "editorTextFocus && editorLangId == 'r'","args": {"snippet": " %>% "}
}
完整解释:
"key": "ctrl+shift+m"
- 定义了快捷键组合。这里表示当用户同时按下
Ctrl
+Shift
+M
时,会触发相应的命令。
- 定义了快捷键组合。这里表示当用户同时按下
"command": "editor.action.insertSnippet"
- 指定了快捷键执行的命令。这里的
editor.action.insertSnippet
表示插入代码片段(snippet)。
- 指定了快捷键执行的命令。这里的
"when": "editorTextFocus && editorLangId == 'r'"
- 定义了快捷键触发的条件:
editorTextFocus
:当编辑器区域当前处于焦点时(也就是当前鼠标在编辑器中)。editorLangId == 'r'
:只有当前文件语言是R(R语言文件)时,快捷键生效。
- 这两个条件结合起来指明:只有当编辑器焦点处于R语言文件时,按下
Ctrl + Shift + M
才会触发此快捷键。
- 定义了快捷键触发的条件:
"args": { "snippet": " %>% " }
- 这里定义了执行命令时的参数。
"snippet": " %>% "
表示在编辑器中插入字符串%>%
。 %>%
是R语言中常用的管道操作符(来自tidyverse
包)。这个快捷键提升了在使用dplyr
等包时输入的效率。
- 这里定义了执行命令时的参数。
第二个快捷键定义部分
{"key": "ctrl+enter",//"command": [ "python.execSelectionInTerminal", "cursorDown" ],"command": "macros.pythonExecSelectionAndCursorDown","when": "editorTextFocus && editorLangId == 'python'"
}
完整解释:
"key": "ctrl+enter"
- 定义了快捷键组合。这里表示按下
Ctrl
+Enter
时会触发相应的命令,通常这是用来快捷执行代码的。
- 定义了快捷键组合。这里表示按下
// "command": [ "python.execSelectionInTerminal", "cursorDown" ],
- 这一行是注释,表示历史上可能曾用过的命令定义或备选内容,因为加了
//
前缀,它不会被解析为代码。目前这行代码已被注释不会执行。 - 被注释掉的命令逻辑可能是:执行选中的Python代码片段后,将光标移到下一行。
- 这一行是注释,表示历史上可能曾用过的命令定义或备选内容,因为加了
"command": "macros.pythonExecSelectionAndCursorDown"
- 这是当前生效的命令,表示执行宏操作
pythonExecSelectionAndCursorDown
。 - 这个宏意味着:运行选定的Python代码并将光标移到下一行,以便快速继续编写或运行下一部分代码。
- 这是当前生效的命令,表示执行宏操作
"when": "editorTextFocus && editorLangId == 'python'"
- 定义触发快捷键的条件:
editorTextFocus
:当前编辑器区域具有焦点时。editorLangId == 'python'
:当前文件是Python文件时。
- 这两个条件结合起来指明:只有在编辑Python文件时,按下
Ctrl + Enter
快捷键才有作用。
- 定义触发快捷键的条件:
额外说明
- 注意:快捷键与命令之间是绑定的,但能否触发还需要满足
when
条件,这些条件确保快捷键只在特定情况下生效。 - 对于R和Python的快捷键定义,分别是为了方便插入R语言的管道符号
%>%
和快速运行Python代码。
如果上面的快捷键跟电脑上的其它软件有冲突,则应做相应的修改
(2)vscode中的R拓展插件的一些设置:
首先是R终端交互的设置:
设置为radian的安装路径,也就是前面type radian,在all in one那个环境中
如果我上面没有设置成那个样子的话,也就是没有设置为radian的话:
那我再打开一个R终端的话,效果就是下面这种老旧的经典的终端,
所以我在上面的Rterm设置之后,我如果要随时打开一个R的终端,效果就是radian的新终端
另外就是下面这个最好也勾选上:搭配radian
总体而言:在vscode中使用R终端,无论是shell中R进入(或r进入radian),
还是ctrl+shift+p进入vscode中创建
或者是右下角
在进入R终端的时候:
我可以在vscode中同时开很多个R的 console,然后可以同时运行很多不同的任务,
这一点是和Rstudio不一样的:
因为Rstudio编辑器的进程是和终端的进程是绑定在一起的,相同的一个进程,不能用很多的R的console
(3)将httphd作为图片显示器
见前面,使用conda安装好了httpgd这个R包,然后就是设置中修改
同时也可以作为帮助文档的查看
(4)如何快速重启vscode:
CTRL+ENTER执行过程中遇到了问题,不能看到终端R打开执行R脚本中的任务
参考:https://blog.csdn.net/weixin_44090706/article/details/129343450
是R tools插件的冲突,如果想要卸载这个插件再执行R脚本的话:
每次插件处理前后都要重启
(5)如果是Rmd文件:
vscode本身是能够新建Rmd文件,并preview预览的
但是我们可以看到,并没有实际运行的按钮以及绘图效果:
参考:
https://blog.csdn.net/m0_54882482/article/details/129723469
设置里找:
原本的设置是这样的,所以没有渲染成功,也就是没有正确识别
修改如下:
现在回来再看就有了:
解决了在右边能够通过httpgd可视化绘制出来的图的效果
但是我是想在Rmd中预览这个效果
另外vscode里可以混合语言编程,所以是可以在Rmd文件中混合使用R以及python代码的;
就像我上一篇博客在jupyter notebook中混合使用python以及R语言一样
(6)然后就是R的实际使用方式了:
①进入R终端写代码:见上,有很多方式可以进入终端,常见的就是在shell中进入R
②新建一个R语言的文本文件:
可以是r文件或者是Rmd文档
③或者是参考我的上一篇博客:
python、r all in one jupyter,也就是在jupyter中使用R内核
4,总之效果就是:
留个悬念:如何预览Rmd文件以及绘图执行的效果?
参考:
https://blog.yfei.page/cn/2020/12/vscode-r/
https://blog.csdn.net/yijiaobani/article/details/124009210
https://www.bilibili.com/video/BV1ZS4y1X73w/