Visual Studio Code中对打开的脚本格式统一

news2024/10/3 10:38:41

什么是Language Server Protocol (LSP)?

 Language Server Protocol(语言服务器协议,简称LSP)是微软在2016年提出的一套统一的通讯协议方案。LSP定义了一套编辑器或者IDE语言服务器(Language Server)之间使用的协议,该语言服务器提供自动完成、转到定义、查找所有引用等语言功能。

语言服务器(Language Server):使用在线编辑工具的时候,会有代码提示、代码错误诊断等功能,这个背后实际上有一个对应这个语言的language server进程,这个language server进程实例负责分析你当前打开的代码文件。

市面上的编辑器/IDE,本质上提供给用户的代码编辑(如打开文件,编辑文集,查找引用,打开工作区等)以及编辑器的响应行为(如补全提示、代码诊断等)其实都大同小异,可能在个别功能上实现不一样,但是逃不开上述内容。或者说,上述这些功能都可以抽象为一系列的【行为事件】。

微软提出 LSP 的目的是,之前各个编辑器(VSCode, Vim, Atom, Sublime...)各自为战,编辑器内部实现的特性和协议都不同。每换一个编辑器,就有可能要给该编辑器中支持的每门语言写一个对应的 Language Server,也就是说假设有 n 门语言,m 个编辑器,那全部编辑器适配所有语言的开发成本和复杂度为 n * m。

能不能在中间层做一个抽象,让语言的「静态分析服务」和「编辑器 / IDE」分离开来?这样上述情景下开发成本和复杂度就可以降低为线性的 n + m。

安装VS code的R扩展以提高R编程体验:

这个VS Code扩展提供了R编程语言的支持,包括扩展语法突出显示、基于代码分析的R语言服务、与R终端交互、查看数据、绘图、工作区变量、帮助页面、管理包以及使用RMarkdown文档等功能。

  1. 在你的电脑上安装R(>=3.4.0)。
  2. 在R中安装languageserver扩展包:install.packages("languageserver")
  3. 在VS code中安装R扩展:在VS Code中搜索R,安装R扩展;
  4. 创建一个R文件,并且开始编程;

推荐下面的软件或者扩展来提高在VS Code中使用R的体验:

  • radian: 一个R console,纠正了官方R端的诸多限制,支持语法高亮、自动补全等诸多功能。
  • VSCode-R-Debugger: 一个VS Code扩展,来提高R调试功能;
  • httpgd:一个R包,提供通过HTTP和WebSockets异步提供SVG图形的图形设备。

功能1:设置统一的代码格式(format)

 效果图:

 可以从效果图中看到,m <- lm(y ~ x, weights = w)中,由之前的y~x增加了空格,y空格~空格x,weight空格=空格w.

为什么要设置格式?我认为有以下个方面的原因:

  1. 代码美观,可读性强;
  2. 为了之后,代码比较做准备,因为代码格式统一的时候,代码做比较才会有意义。【代码比较可以在VScode中对选中的两个代码进行比较。】

功能2:符号高亮

当鼠标的光标在一个符号内部的时候,代码文件(例如下面的vscode-R-test1.R)中的所有这个符号都会被高亮。下面这个例子中,光标放在了符号var2内部,我们可以看到这个文件中的所有var2都高亮了,即都有一个阴影框将这个var2框住了。

 功能3:代码框扩展选择(Document selection)

在一个代码段中,如果选中某几行代码,然后同时按住Shift+Alt+rightarrow后,会发现选中了这个代码段,这个很方便,尤其是当我们想要选中的代码段非常长的情况。

首先选中几行代码:

然后按住Shift+Alt+rightarrow,我们就可以选中diagnostics_task这个函数的代码块:

 功能4:代码段(code section)

R语言服务器通知VSCode代码段或代码块,通过outline或者panel header进行导航:

 代码折叠:

 功能5:调用层次结构(Call hierarchy)

选中自定义函数的函数名,右键出现下拉菜单,从中选择show call hierarchy,进而在VS code页面的左侧出现 选中的自定义函数的函数名,它下面现实了 调用这个函数的函数名。

 

效果图如下:

 

参考:

理解 Language Server Protocol 的工作原理 - 掘金 (juejin.cn)

GitHub - REditorSupport/languageserver: An implementation of the Language Server Protocol for R

R Language Service · REditorSupport/vscode-R Wiki · GitHub 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/835937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

openlayers渲染rgb三波段cog时达到类似rgba的效果(去掉黑底)

图是arcgis渲染成rgb的&#xff0c;由于没有透明度波段&#xff0c;底下是黑的。 为了能在前端显示透明效果&#xff0c;之前是用python处理数据&#xff0c;给它加个透明度波段 后来研究了一下ol的样式表达式&#xff0c;可以直接在前端去掉黑底 样式设置代码如下 const s…

Vue读取本地静态.md并侧边栏导航跳转、展示.md文件

vue markdown 侧边栏导航跳转 类似锚点跳转 - 灰信网&#xff08;软件开发博客聚合&#xff09; Vue使用mavon-editor插件解析markdown编辑预览_onpine的博客-CSDN博客 vue组件直接读取.md文档展示_vue项目中读取readme文件_小蒜瓣的博客-CSDN博客vue中使用mavonEditor(markd…

华秋亮相2023世界汽车制造技术暨智能装备博览会,推动汽车产业快速发展

洞悉全球汽车产业格局&#xff0c;前瞻业界未来趋势。2023年7月27日-30日&#xff0c;时隔三年&#xff0c;重聚武汉国际博览中心&#xff0c;2023世界汽车制造技术暨智能装备博览会盛大开幕。深耕汽车行业多年的世界汽车制造技术暨智能装备博览会&#xff0c;掀起行业热点新高…

如何获取最新的底图边线数据(高德)

由于近期的大屏项目需要地图的边界线的数据&#xff0c;找了很多方式&#xff0c;都有局限性&#xff0c;就是不能保证是最新的&#xff0c;所以使用高德地图提供的边线数据&#xff0c;那就肯定是最新的了&#xff0c;之前仔细看文档&#xff0c;现在仔细看了&#xff0c;才发…

# 关于Linux下的parted分区工具显示起始点为1049kB的问题解释

关于Linux下的parted分区工具显示起始点为1049kB的问题解释 文章目录 关于Linux下的parted分区工具显示起始点为1049kB的问题解释1 问题展示&#xff1a;2 原因3 修改为KiB方式显示4 最后 1 问题展示&#xff1a; kevinTM1701-b38cbc23:~$ sudo parted /dev/nvme1n1 GNU Part…

【Java Web基础】mvn命令、Maven的安装与配置

本文极大程度上来自Maven安装(超详解)&#xff0c;但是担心安的过程中遇到什么不一样的问题&#xff0c;顺便加深印象&#xff0c;所以还是打算自己弄一篇。 目录 第一步&#xff1a;Download Maven第二步&#xff1a;解压与安装2.1 解压2.2 安装 第一步&#xff1a;Download …

这么好用的ai绘画软件,你不会还不知道吧?

AI绘画成为了我最近热衷的一项活动。在使用AI绘画过程中&#xff0c;我得到了许许多多美妙的图片。 虽然网上有很多AI绘画软件可以让我们选择&#xff0c;但其中的大多数软件需要收费&#xff0c;而且生成的图片质量良莠不齐&#xff0c;我之前就是因为随便乱用AI绘画软件&…

表单控件拖拽,简单又灵活,办公效率高!

当前&#xff0c;很多企业的业务量在不断攀升中&#xff0c;采用传统的办公模式是无法提高办公协作效率的。低代码技术平台的应用是当前的潮流&#xff0c;既简单又灵活&#xff0c;维护也便利&#xff0c;深得客户心声。在线表单控件拖拽是其中一个重要的功能&#xff0c;能提…

(小球游戏王子闯闸门解题思路和源码)CSDN竞赛第68期编程题解+参赛感悟

2023年8月1日中午&#xff0c;正在排队等着购买午饭&#xff0c;手机弹出一条推送“CSDN比赛… …”&#xff0c;心中一亮&#xff0c;参加&#xff01; 2023年8月2日18&#xff1a;50&#xff0c;带着空空的肚子&#xff0c;坐在电脑前&#xff0c;等待开赛。&#xff08;为什…

07_Vue生命周期

Vue3生命周期 配置项的方式写Vue3生命周期 组合式API的方式写生命周期&#xff1a;写在setup里 如果同时用两种方式写生命周期钩子函数&#xff0c;组合式API里边的生命周期要比用配置项写的快一点。 注意&#xff1a;一般用一种方式即可。

人工智能生成内容扑面来袭 低质量内容充斥网络?

自从去年年底ChatGPT火爆上市以来&#xff0c;大批AI生成内容扑面来袭&#xff0c;文本、图片甚至视频都可以在数秒之内由人工智能模型自动生成。AI虽然智能&#xff0c;但它创造的内容也会有错误&#xff0c;而且这些错误很难被发现&#xff0c;它生成的误导信息非常“狡猾”&…

公文内容,可以采用图表、图示等辅助工具来展示信息

在处理复杂的公文内容时&#xff0c;可以采用图表、图示等辅助工具来展示信息&#xff0c;以增强表达效果&#xff0c;提高公文的可读性和理解性。 具体来说&#xff0c;可以采用以下几种方式来展示信息&#xff1a; 1.图表&#xff1a;使用图表可以将复杂的数据和信息以图表形…

Java并发系列之五:ReentranLock

首先尝试用一句话对ReeentrantLock进行概括&#xff1a; ReentrantLock基于AQS&#xff0c;它实现了公平锁和非公平锁&#xff0c;在开发中可以用它对共享资源进行同步。此外&#xff0c;和synchronized一样&#xff0c;ReentrantLock支持可重入&#xff0c;但ReentrantLock在调…

通话降噪算法在手机和IOT设备上的应用和挑战

随着电子产品的升级换代&#xff0c;用户对通话质量的要求也越来越高。通话降噪算法对通话质量起到了关键核心的作用。计算资源的提升使得深度学习模型在便携式的低功耗芯片上面跑起来了&#xff0c;器件成本降低让IoT设备开始使用骨导传感器&#xff0c;&#xff0c;那怎么样才…

提升制造业智能化水平——免费MES系统的领航者

随着工业4.0的持续推进和数字化转型的浪潮涌现&#xff0c;制造业正面临着前所未有的机遇与挑战。在这个数字化时代&#xff0c;企业需要更高效、智能、灵活地管理生产流程&#xff0c;以应对日益激烈的市场竞争。而制造执行系统&#xff08;MES&#xff09;无疑成为了实现这一…

抽象类的顶级理解

目录 1.抽象类的介绍 2. 抽象类语法 3.模板设计模式 1.抽象类的介绍 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c;如果 一个类中没有包含足够的信息来描绘一个具体的对象&…

【Vue3项目实战】vue3项目基于el-menu封装左侧菜单栏组件

文章目录 概述一、先看效果1.1 静态效果1.2 动态效果 二、核心思路三、全量代码3.1 文件目录结构3.2 /sidebar/index.vue 中3.3 /sidebar/sidebarItem.vue 中3.4 路由表结构 四、代码讲解五、SVG组件六、系列文章友链1、[配置husky、stylelint、commitlint&#xff0c;实现git提…

庄懂的TA笔记(十九)<特效:顶点 平移+缩放+旋转+幽灵夜巡效果)>

庄懂的TA笔记&#xff08;十九&#xff09;&#xff1c;特效&#xff1a;顶点 平移缩放旋转幽灵夜巡效果)&#xff1e; 大纲&#xff1a; 效果展示&#xff1a; 正文&#xff1a; 一、顶点平移&#xff1a; 1、代码实现&#xff1a; 1.1、声明移动范围&#xff0c;移动速度。 _…

‘<>‘ cannot be used with anonymous classes

‘&#xff1c;&#xff1e;‘ cannot be used with anonymous classes <>不能与匿名类一起使用 Description Resource Path Location Type <> cannot be used with anonymous classes SearchHitSupport.java /spring-data-elasticsearch/src/main/java/org/spri…

QWidget样式

1、设置边框样式&#xff1a; QWidget {font-family:Microsoft YaHei UI;background:#ffffff;/*border:3px solid rgba(207, 209, 208, 170);设置整体边框*/border-bottom: 3px solid rgba(207, 209, 208, 170);/*设置底部边框*/border-top: 3px solid rgba(207, 209, 208, 1…