在vscode中使用R时,用快捷键来快捷键入卡片内容

如何通过快捷键来在vscode中快捷输入内容(R, vscode)。

前言(废话)

近期刚刚入手M2的MacBook Air,想着从windows环境迁移到Mac环境又要配置一遍Rstudio和vscode。觉得很麻烦,于是就想着能不能在vscode中间把这两个语言的环境都配置上,省的到时候多语言操作麻烦。
稍微配置了一下遇到了一个问题,就是在Rstudio中可以直接通过alt+- 插入
_<-_(用下划线_代替空格)。虽然说在现在的版本使用R的_<-_=并没有太大的差别,不过代码的可读性会变差,而且会被师兄吐槽。所以还是选择使用_<-_作为赋值语句。

正文

在vscode中添加快捷键

在vscode中自带的快捷键文件Default keybindings是只读文件,所以如果需要添加自定义快捷键需要新建一个keybindings.json文件,在方括号中间加入所需的快捷键json文件

// Place your key bindings in this file to override the defaults
[]

每个快捷键必须有keycommand两个参数,其他参数均为可选参数。另外两个可选参数是boolean格式的when参数和一个command格式的参数args。除此之外,这就是一个标准的json文件(Still, it can have when (a boolean clause that will be evaluated on the current context) and args (command arguments) keys. Other than that, it is a regular JSON object)

{
  "key": "cmd+a",
  "command": "editor.action.selectAll"
}

when参数主要是为了限制快捷键的适用范围

{
  "key": "cmd+a",
  "command": "editor.action.selectAll",
  "when": "editorTextFocus"
}

卡片(SNIPPET)

在百度上中文搜索快捷键入的结果主要都与这个功能相关。大致意思就是可以通过键入一个快捷短语加上tab就能输入一整段事先预设好的代码

"The snippet is a template that makes writing repeating code patterns easier."

在vscode中全局的使用快捷键Command+Shift+P唤出搜索框,输入snippet,打开卡片的编辑界面
image

大概可以编辑一个这样子的快捷键

{
  // object key `const` is a snippet name
  "const": {
    "prefix": "const", // object value `const` is a trigger
    "body": ["const $1 = $2"],
    "description": "Create a constant"
  }
}

可以在输入const的时候自动键入方括号内的内容,$1位第一个参数,也就是光标所在地,单击tab可以切换到$2,单击shift+tab可以切换回来。

将二者结合起来!用快捷键触发卡片!

keybinding.json中加入了快捷键,同时在args中添加了snippet的内容,就能够用快捷键来快速键入啦

{
  "key": "cmd+shift+c",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
    "snippet": "const $1 = $2"
  }
}

在以上的情况下,单击cmd+shift+c就能够直接插入卡片内容啦

PS: 在这个文章中它并没有把上面这个代码块加在keybinding.json中,而是添加在了global-snippet.code-snippets中挺奇怪的,因为这相当于在本来应该配置快捷键入卡片的地方配置了快捷键,也许会和keybinding.json中的配置相冲突,不过没试过不知道能不能行。也不知道它和keybinding.json的快捷键互相的覆盖关系是怎样的。不过总之我是像上面那样配置的,并且能用了。

进阶

在这个情况下只要在editorTextFocus的状态下就能够插入,可是这个情况仅限于在R语言中,故选择在editorTextFocus后加上&& editorLangId == r这样就限制这个快捷键的作用范围仅仅在editor是r脚本的时候。更多的东西可以看vscode的官网描述when右边的格式conditional operatorsavailable contexts

参考资料

How to insert a snippet after pressing a keyboard shortcut in VS Code | LukasPolak

vscode 快捷键设置_w3cschool

posted @ 2022-09-30 19:37  凛海  阅读(302)  评论(0编辑  收藏  举报