从0开始教你用VScode远程连接到Linu来写代码(纯干货分享!!!新手友好篇)

 文章中汉字部分皆被代码所代替,宝宝们在复制粘贴的时候要选好对应的开源镜像站链接,详情请见评论区,我已放好相应代码!!!!!

一、虚拟机的安装:

安装所必须用到的软件如下:

1.vmware station 破解版(版本至少14以上)

2.Xshell7破解版(最新版本即可)

3.Git-bath(官方版即可)

4.vscode(官方版即可)

5.ubuntu系统(本人使用22.04版本)

二、虚拟机的配置:

1.vm的设置:

全部软件安装完毕之后在vm中点击创建虚拟机,然后点击浏览,在光盘映像文件处点击“浏览”,选中下载好的ubuntu系统(文件格式为.ios),”系统别名“可随意填写,“全名“随机命名,”用户名“要用全英(除root外),”密码“不少于八位,安装地址看个人喜好,作者c盘空间足够,索性就全部安装到了c盘,以后重装系统时也不会被误删,下一步设置磁盘容量时不少于40个G,然后一路继续,安装时会弹出缺少工具包的信息,这个并不影响总体操作,顺着系统给出的提示安装工具包就可以了,虚拟机安装完毕之后,进入虚拟机,若出现错误提示,直接关闭选择continue即可,一路continue来到选择时区,直接选择上海即可,接下来来到”Who are you?“,前两项可随便填写,”用户名“和”密码“要填写与之前设置的一样的,然后就可以继续了,接下来会出下一个”Connect Your Online Accounts“的窗口,先skip跳过即可,打开左下角九个白色小点的菜单,找到名为“terminal”的应用,进入到一个类似于dos命令窗口的终端,然后需要设置root用户的密码,因为最开始登录,Ubuntu不允许root超级用户直接登录。具体操作:在光标处输入sudo passwd,点击回车,首次是设置密码,可以与之前设置的密码相同,值得一提的是,在输入密码的时候系统不会显示输入字符,所以不必认为是自己的键盘出了问题(doge),当密码设置成功的以后,输入sudo su,点击回车就可以切换到root超级用户了。当切换到root超级用户以后,命令行前缀会变成root@,接着输入cat /etc/apt/sources.list,点击回车以后,如果不是在校学生用校园网的宝宝们输入

echo "deb ubuntu安装包下载_开源镜像站-阿里云 jammy main restricted universe multiverse

deb-src ubuntu安装包下载_开源镜像站-阿里云 jammy main restricted universe multiverse

deb ubuntu安装包下载_开源镜像站-阿里云 jammy-security main restricted universe multiverse

deb-src ubuntu安装包下载_开源镜像站-阿里云 jammy-security main restricted universe multiverse

deb ubuntu安装包下载_开源镜像站-阿里云 jammy-updates main restricted universe multiverse

deb-src ubuntu安装包下载_开源镜像站-阿里云 jammy-updates main restricted universe multiverse

deb ubuntu安装包下载_开源镜像站-阿里云 jammy-proposed main restricted universe multiverse

deb-src ubuntu安装包下载_开源镜像站-阿里云 jammy-proposed main restricted universe multiverse

deb ubuntu安装包下载_开源镜像站-阿里云 jammy-backports main restricted universe multiverse

deb-src ubuntu安装包下载_开源镜像站-阿里云 jammy-backports main restricted universe multiverse

" > /etc/apt/sources.list

这一大段代码,然后再来一句apt update,

如果是在校大学生用校园网敲代码的宝宝们,则需要输入

第一句“echo "deb Index of /ubuntu/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror jammy main restricted universe multiverse" > /etc/apt/sources.list”,

第二句“echo "deb Index of /ubuntu/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror jammy-updates main restricted universe multiverse" >> /etc/apt/sources.list”,

第三句“echo "deb Index of /ubuntu/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror jammy-backports main restricted universe multiverse" >> /etc/apt/sources.list”,

第四句“echo "deb Index of /ubuntu/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror jammy-security main restricted universe multiverse" >> /etc/apt/sources.list”,

然后输入cat /etc/apt/sources.list

这一段来自清华的源,然后来样子来一句apt date。

只要能显示从网址里读取,就表示正常,正常后通过ctrl+c来取消网址读取。(如果第一段代码输入后不成功的小伙伴可以输入第二段代码试试哦!)

2.vim的设置:

接下来需要安装一个名为vim的编辑器,需要用vim修改ssh的配置。具体操作为输入apt install vim,然后回车进行对vim编辑器的安装。完成之后来设置ssh,为了能在虚拟机外面访问,所以需要配置ssh。首先需要先安装ssh,输入命令apt install openssh-server,点击回车对ssh进行安装。安装完成以后,使用vim打开/etc/ssh/sshd_config文件,进入编辑模式,找到#PermitRootLogin prohibit-password这一句代码,将其改为PermitRootLogin yes,然后退出编辑模式,保存退出。重启ssh,输入/etc/init.d/ssh restart,这段命令是安装openssh服务后,在系统配置区留下的一个控制ssh服务的脚本。接下来要用到我们的xshell,打开之后,新建会话,会话名称随意,主机填写虚拟机的IP(vm虚拟机中打开设置,点击网络,1000MB/S旁的小齿轮打开设置IPv4地址即IP),点击确定,然后左边一栏会出现新建会话的名称,点击新建的会话,填写用户姓名,初学者建议用户名设为root,要不然很多权限都不够,以后对权限熟练了,再自己设置用户名,接着设置密码,可以与之前的密码相同,设置完毕,这样以后我们可以在xshall的编辑框内使用vim创建文件,并进入编辑模式,可以在编辑模式中编写C++的代码,特别注意,新建的文件后缀只能是“.cpp”或“.cc”,这样系统才能正常识别C++代码。然后使用G++编译运行新建的“.cpp”或“.cc”文件。

3.VScode的设置:

首先打开VScode,选到插件,搜索下载remote development,然后下载Remote Development,Remote – SSH和Remote - SSH: Editing Configuration Files。 选择左边栏像电脑一样的图标,叫做远程资源管理器,点击后会在中间栏上面显示“远程资源管理器”,旁边有个下拉菜单,点击选择“remotes(tunnels/ssh)”,然后点击SSH,有个齿轮会出现,点击齿轮后在中间搜索栏会出现多个选项,选择第一个config文件进行配置的修改。首先第一个host是对远程系统的昵称,随意写,hostname是ubuntu的IP(上文有所提及),然后user后面写root就可以,特别注意,追加内容要和刚才提到过的标签名之间加一个空格。接着打开提前下载好的gitbash,运行ssh-keygen -t rsa,然后在Ubuntu中运行ssh-keygen,两次操作中最重要的,就是看两次结果中的加密算法是否相同。ssh-keygen这个命令是直接产生用于访问当前系统的ssh密钥公钥。加密算法有很多,如果两种默认算法不同,那就需要专门去指定成一样的,才能连通两个机器。因为需要用这个东西让VScode能一直免密登陆到Ubuntu,否则每隔一分钟半分钟就要在VScode上输入一次密码。然后我们打开.ssh文件,用记事本打开.pub文件,将里面内容复制,然后在Ubuntu中用vim打开~/.ssh/authorized_keys,进入编辑模式,追加到最后。然后回到Vscode,在config文件中追加一行IdentityFile +文件路径+id_rsa文件。保存后点击“远程资源管理器”下面的“remote”键右边的刷新按钮。然后系统会先访问github,关掉网页,然后跳过访问github,就会更新ssh了。然后在Ubuntu中输入server sshd 。/etc/init.d/ssh restart,接着SSH的下拉菜单里会显示出自己的远程系统昵称,点击昵称,右边会出现箭头,点击箭头,会出现三个操作系统的名称,选择linux进行连接,如果没有成功,可能是因为没有写入端口号,打开cinfig文件,末尾追加一句Port 22,再次进行连接,若这里又是连接失败,可能是config文件中多了点东西,打开config文件删掉IdentityFile这一行配置,再次进行连接,如果还是失败,在浏览器中输入地址https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stahttps://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stableble,将${commit_id}替换成VScode的版本提交编号,具体位置在上方工具栏中点击帮助,再点击关于,可以查找到这一串数字。在这个网页中会自动下载一个压缩包,然后在Ubuntu中上传这个压缩包。可能再连接linux的时候,Vscode没有办法顺利下载这个包。需要用到xshell,点击最上面的”文件“,点击”传输“,选择”XMODEM发送“,选择下载好的那个tar.gz文件,连接上Linux以后,我们需要下载两个插件,分别是C/C++和code runner,接着选择新建文件夹,这里选择新建文件夹完全是个人习惯,这个文件夹之后会存放所有的编码文件和二进制文件。然后在这个文件夹里创建一个文本文件,后缀为.cpp。然后写入简单的C++代码,比如“Hello World”,接着点击F5,出现了三个选项,选择g++生成活动文件,然后系统会提示警告,这时要打开launch.json文件,替换成以下内容:

{

// Use IntelliSense to learn about possible attributes.

// Hover to view descriptions of existing attributes.

// For more information, visit: Debugging in Visual Studio Code

"version": "0.2.0",

"configurations":

[

{

"name": "g++ - 生成和调试活动文件",

"type": "cppdbg",

"request": "launch",

"program": "${fileDirname}/${fileBasenameNoExtension}",

"args": [],

"stopAtEntry": false,

"cwd": "${fileDirname}",

"environment": [],

"externalConsole": false,

"MIMode": "gdb",

"setupCommands": [

{

"description": "为 gdb 启用整齐打印",

"text": "-enable-pretty-printing",

"ignoreFailures": true

}

],

"preLaunchTask": "C/C++: g++ 生成活动文件",

"miDebuggerPath": "/usr/bin/gdb"

}

]

}

接着打开命令面板,找到任务:配置任务,打开tasks.json文件,输入以下内容:

{

"tasks": [

{

"type": "cppbuild",

"label": "C/C++: g++ 生成活动文件",

"command": "/usr/bin/g++",

"args": [

"-fdiagnostics-color=always",

"-g",

"${file}",

"-o",

"${fileDirname}/${fileBasenameNoExtension}"

],

"options": {

"cwd": "${fileDirname}"

},

"problemMatcher": [

"$gcc"

],

"group": "build",

"detail": "调试器生成的任务。"

}

],

"version": "2.0.0"

}

然后打开命令面板,打开setting.json文件,输入以下内容:

{

"editor.fontSize": 22,

"workbench.colorTheme": "Default Dark Modern",

"version": "0.2.0",

"configurations": [

{

"name": "C/C++",

"type": "cppdbg",

"request": "launch",

"program": "${fileDirname}/${fileBasenameNoExtension}",

"args": [],

"stopAtEntry": false,

"cwd": "${fileDirname}",

"environment": [],

"externalConsole": false,

"MIMode": "gdb",

"preLaunchTask": "compile",

"setupCommands": [

{

"description": "Enable pretty-printing for gdb",

"text": "-enable-pretty-printing",

"ignoreFailures": true

}

]

}

],

"code-runner.runInTerminal": true,

"debug.onTaskErrors": "showErrors",

"C_Cpp.default.includePath": [

],

"code-runner.executorMap": {

"javascript": "node",

"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",

"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt -std=c++11 && $dir$fileNameWithoutExt",

"objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"php": "php",

"python": "python -u",

"perl": "perl",

"perl6": "perl6",

"ruby": "ruby",

"go": "go run",

"lua": "lua",

"groovy": "groovy",

"powershell": "powershell -ExecutionPolicy ByPass -File",

"bat": "cmd /c",

"shellscript": "bash",

"fsharp": "fsi","csharp": "scriptcs",

"vbscript": "cscript //Nologo",

"typescript": "ts-node",

"coffeescript": "coffee",

"scala": "scala",

"swift": "swift",

"julia": "julia",

"crystal": "crystal",

"ocaml": "ocaml",

"r": "Rscript",

"applescript": "osascript",

"clojure": "lein exec",

"haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",

"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",

"racket": "racket",

"scheme": "csi -script",

"ahk": "autohotkey",

"autoit": "autoit3",

"dart": "dart",

"pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",

"d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",

"haskell": "runhaskell",

"nim": "nim compile --verbosity:0 --hints:off --run",

"lisp": "sbcl --script",

"kit": "kitc --run",

"v": "v run",

"sass": "sass --style expanded",

"scss": "scss --style expanded",

"less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",

"FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"

},

"terminal.integrated.tabs.enabled": true,

"C_Cpp.default.cppStandard": "c++20",

"C_Cpp.default.cStandard": "c17",

"workbench.editorAssociations": {

"*.ipynb": "jupyter-notebook"

},

"notebook.cellToolbarLocation": {

"default": "right",

"jupyter-notebook": "left"

},

"diffEditor.ignoreTrimWhitespace": false,

"explorer.confirmDragAndDrop": false,

"explorer.confirmDelete": false,

"files.associations": {

"iostream": "cpp",

"ostream": "cpp"

},

}

打开命令面板,搜索C/C++,选择C/C++编辑配置(UI),然后打开c_cpp_properties.json文件,输入以下内容:{

"configurations": [

{

"name": "Linux",

"includePath": [

"${workspaceFolder}/**", // 将本地工作目录添加到include路径中,

// 这样本地的所有头文件都可以被VSCode索引,这样编辑就不会触发红色的波浪线;

"/usr/include/**" // 将Linux下的引用路径添加到include路径中,

// 对于一些第三方依赖库,如Boost的头文件,就能被VSCode索引

],

"defines": [],

"compilerPath": "/usr/bin/gcc",

"cStandard": "c17",

"cppStandard": "gnu++17",

"intelliSenseMode": "linux-gcc-x64"

}

],

"version": 4

}

再次回到自己的.cpp文件中点击F5,若运行成功就代表着你已经学会了配置vscode连接Linux的操作。以上的配置代码,只支持单个文件的C++代码编写,不支持多文件的代码编写。

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值