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

什么是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 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【笔记】移动光猫改桥接

1. 登录后台 移动光猫的超管和密码&#xff08;百度的&#xff09; 账号&#xff1a;CMCCAdmin 密码&#xff1a;aDm8H%MdA 浏览器访问 192.168.1.1 并登录 2. 选择连接 点击“网络”&#xff0c;在“连接名称”下拉框选择 INTENET_R_VID 字样的连接&#xff0c;并截图备…

构建Docker容器监控系统(Cadvisor +InfluxDB+Grafana)

目录 案例概述 Cadvisor InfluxDBGrafana 1.1、 Cadvisor 1.2、InfluxDB 1.3、Grafana 1.4、监控组件架构 1.5、开始部署 安装docker-ce 阿里云镜像加速器 创建自定义网络 创建influxdb容器 案例概述 Docker作为目前十分出色的容器管理技术&#xff0c;得到大量企业…

CTF流量题解http1.pcapng

使用Wireshark工具打开流量文件http1.pcapng&#xff0c;如下图所示。 在过滤检索栏输入http&#xff0c;wireshark自动进行过滤。

2023牛客暑期多校训练营6 A-Tree (kruskal重构树))

文章目录 题目大意题解参考代码 题目大意 ( 0 ≤ a i ≤ 1 ) , ( 1 ≤ c o s t i ≤ 1 0 9 ) (0\leq a_i\leq 1),(1 \leq cost_i\leq 10^9) (0≤ai​≤1),(1≤costi​≤109) 题解 提供一种新的算法&#xff0c;kruskal重构树。 该算法重新构树&#xff0c;按边权排序每一条边…

【OpenCV常用函数:轮廓检测+外接矩形检测】cv2.findContours()+cv2.boundingRect()

文章目录 1、cv2.findContours()2、cv2.boundingRect() 1、cv2.findContours() 对具有黑色背景的二值图像寻找白色区域的轮廓&#xff0c;因此一般都会先经过cvtColor()灰度化和threshold()二值化后的图像作为输入。 cv2.findContous(image, mode, method[, contours[, hiera…

STM32 低功耗学习

STM32 电源系统结构介绍 电源系统&#xff1a;VDDA供电区域、VDD供电区域、1.8V供电区域、后备供电区域。 器件的工作电压&#xff08;VDD&#xff09;2.0~3.6V 为了提高转换精度&#xff0c;给模拟外设独立供电。电压调节器为1.8V供电区域供电&#xff0c;且1.8V供电区域是电…

过滤器,监听器与拦截器的区别

过滤器&#xff0c;监听器与拦截器的区别 ​ 过滤器和监听器不是Spring MVC中的组件&#xff0c;而是Servlet的组件&#xff0c;由Servlet容器来管理。拦截器是Spring MVC中的组件&#xff0c;由Spring容器来管理 ​ Servlet过滤器与Spring MVC 拦截器在Web应用中所处的层次如…

代码随想录算法训练营day60

文章目录 Day60 柱状图中最大的矩形题目思路代码 Day60 柱状图中最大的矩形 84. 柱状图中最大的矩形 - 力扣&#xff08;LeetCode&#xff09; 题目 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图…

相关搜索量激增10000%!“芭比周边”产品火爆亚马逊!

据外媒报道&#xff0c;芭比娃娃是今年夏天最热的话题。今年7月份&#xff0c;“芭比娃娃”是亚马逊上搜索最多的词。第二季度&#xff0c;Shopify上的芭比娃娃销量激增了56%。知名玩具制造商美泰&#xff08;Mattel&#xff09;预计&#xff0c;受电影的推动&#xff0c;在未来…

数字员工助力农行安全生产数字化转型应用实践

党的二十大指出&#xff0c;“以数字中国建设助力中国式现代化&#xff0c;加快建设网络强国、数字中国”&#xff0c;2022年1月发布《“十四五”数字经济发展规划》提出&#xff0c;加强类人智能、自然交互与虚拟现实等技术研究。近年来&#xff0c;各大银行纷纷推出自己的数字…

跨平台开发框架Qt:面向对象、丰富API

Qt是一个跨平台C图形用户界面应用程序开发框架&#xff0c;它具有以下三大优势&#xff1a; 优良的跨平台特性&#xff1a;Qt支持多种操作系统&#xff0c;包括Windows、Linux、Solaris、HP-UX、Irix、FreeBSD等&#xff0c;使开发人员能够在不同平台上开发和部署应用程序&…

HEIF—— 1、vs2017编译Nokia - heif源码

HEIF(高效图像文件格式) 一种图片有损压缩格式,它的后缀名通常为".heic"或".heif"。 HEIF 是由运动图像专家组 (MPEG) 标准化的视觉媒体容器格式,用于存储和共享图像和图像序列。它基于著名的 ISO 基本媒体文件格式 (ISOBMFF) 标准。HEIF读写器引擎…

为生成式AI提速,亚马逊云科技Amazon EC2 P5满足GPU需求

生成式AI&#xff08;Generative AI&#xff09;已经成为全球范围内的一个重要趋势&#xff0c;得到越来越多企业和研究机构的关注和应用。纽约时间7月26日&#xff0c;亚马逊云科技数据库、数据分析和机器学习全球副总裁Swami Sivasubramanian在亚马逊云科技举办的纽约峰会上更…

无涯教程-Perl - 面向对象

Perl中的面向对象概念很大程度上基于引用以及匿名数组和哈希。让我们开始学习面向对象Perl的基本概念。 定义类 在Perl中定义一个类非常简单。类以最简单的形式对应于Perl软件包。要在Perl中创建一个类&#xff0c;我们首先构建一个包。 Perl软件包在Perl程序中提供了一个单…

python与深度学习(十四):CNN和IKUN模型二

目录 1. 说明2. IKUN模型的CNN模型测试2.1 导入相关库2.2 加载模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章IKUN模型训练的模型进行测试。…

基于Spring Boot的在线视频教育培训网站设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的在线视频教育培训网站设计与实现&#xff08;Javaspring bootMySQL&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java sp…

【Java可执行命令】(二十)堆转储快照文件及堆信息查看工具 jmap:生成多格式堆转储文件、打印类加载器信息及查看共享对象映射信息 ~

Java可执行命令之jmap 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 生成堆转储文件3.3 执行jmap命令查看内存使用情况3.4 执行jmap命令打印对象统计信息 4️⃣ 应用场景&#x1f33e; 总结 1️⃣ 概念 jmap 是 Java Development Kit&#xff08;JDK&#xff09;自带…

开源数据库Mysql_DBA运维实战 (部署服务篇)

前言❀ 1.数据库能做什么 2.数据库的由来 数据库的系统结构❀ 1.数据库系统DBS 2.SQL语言(结构化查询语言) 3.数据访问技术 部署Mysql❀ 1.通过rpm安装部署Mysql 2.通过源码包安装部署Mysql 前言❀ 1.数据库能做什么 a.不论是淘宝&#xff0c;吃鸡&#xff0c;爱奇艺…

挖掘Java集合:深入探索List接口与HashSet

文章目录 引言LinkedList&#xff1a;双向链表的实现构造方法LinkedList中的常用方法HashSet&#xff1a;无序且唯一的集合HashSet的实现方式LinkedHashSet&#xff1a;有序且唯一可变长度参数结论 引言 在广阔的Java编程领域中&#xff0c;集合就如同宝库&#xff0c;提供了多…

C语言 用数组名作函数参数

当用数组名作函数参数时&#xff0c;如果形参数组中各元素的值发生变化&#xff0c;实参数组元素的值随之变化。 1.数组元素做实参的情况&#xff1a; 如果已经定义一个函数&#xff0c;其原型为 void swap(int x,int y);假设函数的作用是将两个形参&#xff08;x,y&#xf…