VSCode中运行R代码出现异常打印问题求助
VSCode中R代码输出出现ANSI转义字符异常的解决思路
加载tidyverse库时,输出中出现了显式的ANSI转义字符(如←[1m、←[32m),而非预期的格式化样式,示例输出如下:
> library("tidyverse") -- ←[1mAttaching packages←[22m -------------------------------------------------- tidyverse 1.3.2 -- ←[32mv←[39m ←[34mggplot2←[39m 3.4.0 ←[32mv←[39m ←[34mpurrr ←[39m 1.0.0 ←[32mv←[39m ←[34mtibble ←[39m 3.1.8 ←[32mv←[39m ←[34mdplyr ←[39m 1.0.10 ←[32mv←[39m ←[34mtidyr ←[39m 1.2.1 ←[32mv←[39m ←[34mstringr←[39m 1.5.0 ←[32mv←[39m ←[34mreadr ←[39m 2.1.3 ←[32mv←[39m ←[34mforcats←[39m 0.5.2 -- ←[1mConflicts←[22m ----------------------------------------------------- tidyverse_conflicts() -- ←[31mx←[39m ←[34mdplyr←[39m::←[32mfilter()←[39m masks ←[34mstats←[39m::filter() ←[31mx←[39m ←[34mdplyr←[39m::←[32mlag()←[39m masks ←[34mstats←[39m::lag()
当前VSCode用户设置JSON:
{ "r.rterm.windows": "C:\\Program Files\\R\\R-4.2.2\\bin\\R.exe", "editor.suggestSelection": "first", "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue", "python.jediEnabled": false, "window.zoomLevel": 0, "python.languageServer": "Microsoft", "editor.fontFamily": "Fira Code Retina", "editor.fontLigatures": true, "editor.minimap.enabled": false, "r.bracketedPaste": true, "r.lsp.path": "C:\\Program Files\\R\\R-4.2.2\\bin\\R.exe", "r.lsp.debug": true, "r.lsp.diagnostics": true }
sessionInfo()信息:
> sessionInfo() R version 4.2.2 (2022-10-31 ucrt) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows Server 2012 R2 x64 (build 9600) Matrix products: default locale: [1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 LC_NUMERIC=C LC_TIME=English_United States.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] forcats_0.5.2 stringr_1.5.0 dplyr_1.0.10 purrr_1.0.0 readr_2.1.3 tidyr_1.2.1 tibble_3.1.8 ggplot2_3.4.0 tidyverse_1.3.2 loaded via a namespace (and not attached): [1] pillar_1.8.1 compiler_4.2.2 cellranger_1.1.0 dbplyr_2.2.1 tools_4.2.2 timechange_0.1.1 lubridate_1.9.0 jsonlite_1.8.4 googledrive_2.0.0 [10] lifecycle_1.0.3 gargle_1.2.1 gtable_0.3.1 pkgconfig_2.0.3 rlang_1.0.6 reprex_2.0.2 DBI_1.1.3 cli_3.5.0 haven_2.5.1 [19] xml2_1.3.3 withr_2.5.0 httr_1.4.4 generics_0.1.3 vctrs_0.5.1 fs_1.5.2 hms_1.1.2 googlesheets4_1.0.1 grid_4.2.2 [28] tidyselect_1.2.0 glue_1.6.2 R6_2.5.1 fansi_1.0.3 readxl_1.4.1 tzdb_0.3.0 modelr_0.1.10 magrittr_2.0.3 backports_1.4.1 [37] scales_1.2.1 ellipsis_0.3.2 rvest_1.0.3 assertthat_0.2.1 colorspace_2.0-3 utf8_1.2.2 stringi_1.7.8 munsell_0.5.0 broom_1.0.2 [46] crayon_1.5.2
解决思路
- 禁用R的ANSI颜色输出:在R控制台运行
options(cli.num_colors = 1),临时关闭cli包的颜色格式化;若要永久生效,在用户目录下的.Rprofile文件中添加该行代码。 - 修改VSCode的R启动参数:更新用户设置中的
r.rterm.windows为"C:\\Program Files\\R\\R-4.2.2\\bin\\R.exe --no-color",启动R时直接禁用颜色输出。 - 更换终端环境:Windows Server 2012 R2的默认控制台对ANSI转义字符支持有限,可将VSCode的默认终端切换为Windows Terminal,提升兼容性。
- 更新相关依赖包:运行
update.packages(c("cli", "crayon")),更新负责输出格式化的cli和crayon包,新版本可能修复旧系统的兼容问题。 - 调整LSP设置:尝试关闭
r.lsp.debug选项,减少调试输出带来的转义字符解析问题;或检查LSP的输出配置,确保转义字符被正确处理。
内容的提问来源于stack exchange,提问作者TheRealJimShady
相关产品推荐
相关产品推荐

