deepin搭建go开发环境(git、go、neovim、NvChad、Nerd Font)

安装deepin虚拟机

官网下载地址
vmware中记得版本选择是debian 10.x 64位
然后就是一些确认操作,然后就可以了

安装git

apt install gedit
apt install git
git config --global user.name "hello"
git config --global user.email hello@126.com
git config --listssh-keygen -t rsa 
cd /root/.ssh
gedit id_rsa.pub
# 下面这个可以解决Failed to connect to github.com port 443: 拒绝连接
git config --global url."https://ghproxy.com/https://github.com".insteadOf "https://github.com"

再上传这个id_rsa.pub里的文本(即公钥)
在这里插入图片描述
输入这行命令以验证是否成功
ssh -T git@github.com

安装golang

  1. 下载
    下载地址
    也可wget https://studygolang.com/dl/golang/go1.20.4.linux-amd64.tar.gz
  2. 解压
  3. 配环境变量
    配置GOROOT(go核心内容的文件夹,即从官网下的那个)和GOPATH(go mod时存储第三方库的文件夹)
    vim /etc/profile
    # 即刚刚解压的压缩包的文件夹
    export GOROOT=/usr/local/env/go
    # 你自己指定一个存第三方库的文件夹
    export GOPATH=/usr/local/env/gopath
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
    #保存退出
    :wq
    #配置生效
    source /etc/profile
    
    完全使用命令就是
    echo 'export GOROOT=/usr/local/env/go' >> /etc/profile
    echo 'export GOPATH=/usr/local/env/gopath' >> /etc/profile
    echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> /etc/profile
    source /etc/profile
    
  4. 改下go的配置,即开启module模式和下载的镜像源
    go env -w GO111MODULE=on
    go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/
    
    测试
    go version
    go env
    
  5. 其他
    我发现每次开个新shell,都要重新source /etc/profile才能正常使用go version
    看博客知道要再配一下
    注意每个用户都要配一下这个
    echo 'source /etc/profile' >> ~/.bashrc
    
    这样子每次开新shell就会触发这个命令

安装neovim

参考[经验分享] Deepin
v20下编译安装vim9和neovim9,默认的vim和neovim版本太低

一、编译vim9

  1. 先卸载默认的vim8

    sudo apt purge vim vim-*
    sudo apt autoremove
    
  2. 安装编译依赖

    sudo apt install lua5.3 liblua5.3-dev ruby2.5-dev python3-pip cmake gettext
    
  3. 下载源码

    git clone -b v9.0.1504 https://github.com/vim/vim.git ~/Downloads/vim9
    
  4. 编译与安装

    cd ~/Downloads/vim9./configure --prefix=/opt/vim \--with-features=huge \--enable-multibyte \--enable-rubyinterp=yes \--enable-python3interp=yes \--enable-luainterp=yes \--enable-gui=gtk2 \--enable-cscope \--enable-fail-if-missingmake -j6sudo make installsudo ln -s /opt/vim/bin/vim /usr/local/bin/vim
    

二、编译neovim

  1. 下载源码
    git clone -b v0.9.0 https://github.com/neovim/neovim.git ~/Downloads/neovim9
    
  2. 编译与安装
    注意第二行的下载操作,可能会总是拉取不到github的项目,实在不行就进浏览器手动下,然后放在对应的位置,下载网址和放置路径在dos里都有展示
    cd ~/Downloads/neovim9
    make CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX=/opt/neovim"
    sudo make install
    sudo ln -s /opt/neovim/bin/nvim /usr/local/bin/nvim
    
  3. 测试
    输入nvim test.txt
  4. 起别名,使vim命令会打开nvim
    echo "alias vim='nvim'" >> /etc/profile
    source /etc/profile
    

treesitter报错可以不用管

  • 安装NvChad
    Turning Neovim into an advanced IDE
    参考视频针对Golang的NeoVim完美配置

    git clone https://github.com/NvChad/NvChad.git ~/.config/nvim
    

    然后输入nvim
    在这里插入图片描述
    然后输入N
    然后等他把相关的插件下完(好像挂着梯子下快一点?)
    到这个界面就是下好了
    在这里插入图片描述
    然后输入空格 th来选主题
    在这里插入图片描述

  • 两个的卸载方法:
    删除~/.local/state/nvim~/.local/share/nvim~/.config/nvim

安装go的lsp

cd /root/.config/nvim/lua/custom
touch plugins.lua

plugins.lua中写入如下内容

local plugins = {{"williamboman/mason.nvim",opts = {ensure_installed = {"gopls",},},},
}
return plugins

再在/root/.config/nvim/lua/custom/chadrc.lua中做如下添加

M.plugins = "custom.plugins

在这里插入图片描述
然后退出vim,再输入vim,输入命令:MasonInstallAll
此时等一小会会出现
在这里插入图片描述

再添加如下

{"neovim/nvim-lspconfig",config = function()require "plugins.configs.lspconfig"require "custom.configs.lspconfig"end,
},

在这里插入图片描述

如果使用可视化的编辑器,可能会出现
E37: No write since last change
E162: No write since last change for buffer “xxxxx”
Press ENTER or type command to continue
这时用
:set fileencoding=utf-8

然后

mkdir /root/.config/nvim/lua/custom/configs
touch configs/lspconfig.lua

在lspconfig.lua中写入

local on_attach = require("plugins.configs.lspconfig").on_attach
local capabilities = require("plugins.configs.lspconfig").capabilitieslocal lspconfig = require("lspconfig")
local util = require "lspconfig/util"lspconfig.gopls.setup {on_attach = on_attach,capabilities = capabilities,cmd = {"gopls"},filetypes = {"go","gomod","gowork","gotmpl"},root_dir = util.root_pattern("go.work","go.mod",".git"),
}

再加一点设置,使得nvim里面可以自动导go的包、未使用警告等

settings = {gopls = {completeUnimported = true,usePlaceholders = true,analyses = {unusedparams = true,},},},

在这里插入图片描述

…不想写了,跟着视频配吧

安装Nerd字体

ubuntu系统添加新的字体——JetBrains Mono 字体添加实例
字体下载网站

用jetbrains mono即可

在这里插入图片描述

在这里插入图片描述

nvim-tree

自带,在normal模式下用ctrl n唤出
ctrl hctrl l切换左右

其他

输入:Lazy进入包管理界面

总结

/root/.config/nvim/lua/custom/chadrc.lua

---@type ChadrcConfig local M = {}M.ui = {theme = 'catppuccin'}M.plugins = "custom.plugins"M.mappings = require "custom.mappings"return M

/root/.config/nvim/lua/custom/mappings.lua

local M ={}M.dap = {plugin = true,n = {["<leader>db"] = {"<cmd> DapToggleBreakpoint <CR>","Add breakpoint at line"},["<leader>dus"] = {function ()local widgets = require("dap.ui.widgets");local siderbar = widgets.sidebar(widgets.scopes);end,"Open debugging sidebar"}}
}M.dap_go = {plugin = true,n = {["<leader>dgt"] = {function()require("dap-go").debug_test()end,"Debug go test"},["<leader>dgl"] = {function()require("dap-go").debug_test()end,"Debug last go test"}}
}
return M

/root/.config/nvim/lua/custom/plugins.lua

local plugins = {{"williamboman/mason.nvim",opts = {ensure_installed = {"gopls",},},},{"mfussenegger/nvim-dap",init = function()require("core.utils").load_mappings("dap")end},{"leoluz/nvim-dap-go",ft = "go",dependencies = "mfussenegger/nvim-dap",config = function(_,opts)require("dap-go").setup(opts)require("core.utils").load_mappings("dap_go")end},  {"neovim/nvim-lspconfig",config = function()require "plugins.configs.lspconfig"require "custom.configs.lspconfig"end,},{"jose-elias-alvarez/null-ls.nvim",ft = "go",opts = function()return require "custom.configs.null-ls"end,},{"olexsmir/gopher.nvim",ft="go",config = function(_,opts)require("gopher").setup(opts)end,build = function()vim.cmd [[silent! GoInstallDeps]]end,},
}
return plugins

/root/.config/nvim/lua/custom/configs/lspconfig.lua

local on_attach = require("plugins.configs.lspconfig").on_attach
local capabilities = require("plugins.configs.lspconfig").capabilitieslocal lspconfig = require("lspconfig")
local util = require "lspconfig/util"lspconfig.gopls.setup {on_attach = on_attach,capabilities = capabilities,cmd = {"gopls"},filetypes = {"go","gomod","gowork","gotmpl"},root_dir = util.root_pattern("go.work","go.mod",".git"),settings = {gopls = {completeUnimported = true,usePlaceholders = true,analyses = {unusedparams = true,},},},
}

/root/.config/nvim/lua/custom/configs/null-ls.lua

local null_ls = require("null-ls")
local augroup = vim.api.nvim_create_augroup("LspFormatting",{})local opts = {sources = {null_ls.builtins.formatting.gofmt,null_ls.builtins.formatting.goimports_reviser,null_ls.builtins.formatting.golines,},on_attach = function(client,bufnr)if client.supports_method("textDocument/formatting") thenvim.api.nvim_clear_autocmds({group = augroup,buffer = bufnr,})vim.api.nvim_create_autocmd("BufWritePre",{group = augroup,buffer = bufnr,callback = function()vim.lsp.buf.format({bufnr = bufnr})end,})endend,
}

设置在vim中可以复制到系统剪贴板

apt install xclip

创建init.vim

cd ~/.config/nvim
vim init.vim

然后加入一行

set clipboard+=unnamedplus

然后发现之后用y复制时,在浏览器里面也可以粘贴这个内容了
同时在别的地方ctrl+c复制,在vim里也可以用p粘贴

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

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

相关文章

Win7下Apploc的正确安装姿势

时隔两年之后WIN7终于再次挂掉。于是重装系统打完补丁之后又遇到了安装Apploc的问题。因为印象中需要使用msiexec来安装才能正常进行&#xff0c;但是却记不得细节了&#xff0c;于是求助Google。得到的结果无论中英文基本如下&#xff1a; 1. Admin权限开个cmd.exe 2. cmd里运…

使用sasjs构建html5 javascript css应用

In our previous articles, we have learnt about the SASjs ecosystem and seen how we can build a SAS app with Angular. 在之前的文章中&#xff0c;我们了解了SASjs生态系统&#xff0c;并了解了如何使用Angular构建SAS应用程序 。 In this article, we will look at ho…

漫漫长夜无限服务器断开,漫漫长夜崩溃问题解决方法 | 手游网游页游攻略大全...

发布时间:2015-11-13 漫漫长夜鹿皮怎么获得 漫漫长夜鹿皮获得方法,漫漫长夜The Long Dark中的鹿皮可以造鹿皮靴.前提当然是需要鹿皮了,那肯定得去杀鹿喽,可这鹿怎么杀呢?感兴趣的一起来看看吧. 引狼杀鹿 你先要等鹿被狼杀死,之后去干掉 ... 标签: 游戏攻略 游戏秘籍 漫漫长夜…

unity自动校准(翻译)

本文只是对那篇老外博客进行了翻译&#xff0c;翻译的不好&#xff0c;自己刚过六级&#xff0e;肯定有很多问题&#xff0c;欢迎同学指出&#xff0e; 原文链接&#xff1a;http://www.paradeofrain.com/2010/07/lessons-learned-in-tilt-controls/ 回顾一下 我想简单粗糙的讲…

vivo 互联网业务就近路由技术实战

一、问题背景 在vivo互联网业务高速发展的同时&#xff0c;支撑的服务实例规模也越来越大&#xff0c;然而单个机房能承载的机器容量是有限的&#xff0c;于是同城多机房甚至多地域部署就成为了业务在实际部署过程中不得不面临的场景。 一般情况下&#xff0c;同一个机房内部的…

进出口跨境电商软件平台系统开发,源码技术架构

一、进出口跨境电商软件平台系统开发需做好相应的前期准备&#xff0c;如确定市场、了解政策、推广宣传等。 欢迎名片沟通探讨 确定目标市场&#xff1a;选择合适的目标市场。需要了解目标市场的消费习惯、政策法规以及竞争情况。 了解海关相关政策&#xff1a;针对不同国家或…

机器学习——集成学习(装袋法Bagging、提升法Boosting、梯度提升决策树GBDT、随机森林RF)

集成学习 集成学习通过构建并结合多个学习器来完成学习任务 集成方法是用多种学习方法的组合来获取比原方法更优的结果 使用于组合的算法是弱学习算法 即分类正确率仅比随机猜测略高的学习算法 但是组合之后的效果仍可能高于强学习算法 即集成之后的算法准确率和效率都很高…

C++,Qt部分面试和笔试题

面试这么多次&#xff0c;C这块基础太差了&#xff0c;乘着还有印象总结下相关的面试问答和笔试题&#xff0c;后续会不断更新内容 目录 问答题1.计算机网络七层体系结构2.C中关键字static和const的使用3.QList和QVector for循环输出速度比较4.构造函数能否为虚函数5.谈谈你对面…

Mysql进阶【1】论述索引,索引数据结构,MVCC

1. ReadView 案例&#xff0c;解释为什么 RR 和 RC 隔离级别下看到查询结果不一致 案例 01- 读已提交 RC 隔离级别下的可见性分析 开启两个回话&#xff0c;会话事务级别都是READ-COMMITED; 操作步骤 开启两个数据库会话&#xff0c;设置事务为提交读事务2查询id1数据&#…

纯净内存清理加速软件(Mem Reduct)

纯净内存清理加速软件&#xff08;Mem Reduct) 文章目录 纯净内存清理加速软件&#xff08;Mem Reduct)一、Mem Product是什么&#xff1f;二、使用步骤1.下载2.安装 总结 你还为了加速球还困扰全家桶吗&#xff0c;看看这个&#xff01;&#xff01; 一、Mem Product是什么&a…

如何清理占用计算机内存,告诉你如何深度清理电脑内存

在如今这个社会时代中,电脑可以说是人们在日常生活中必不可少的一个工具,电脑对我们的学习和工作都起着非常大的作用。但电脑也有出现问题的时候,比如说电脑内存变得越来越小,遇到该问题是该如何处理呢?当然是进行清理内存啦,今天小编就给大家分享一下清理电脑内存的方法…

计算机C盘内存清理

计算机C盘总是莫名其妙的就满了&#xff0c;于是总结了一些清理C盘垃圾以及维护C盘内存的方法。大家有别的有效的方法欢迎告诉我&#xff0c;随时补充。 目录 一、 清理C盘垃圾方法1 利用系统自带的磁盘清理工具进行清理2 定期清理系统临时文件3 清理电脑缓存垃圾4 定期清理浏…

服务器系统如何清理,服务器清理内存怎么清理

服务器清理内存怎么清理 内容精选 换一换 本节操作指导您完成Windows操作系统云服务器磁盘空间清理。弹性云服务器匀出一部分磁盘空间来充当内存使用,当内存耗尽时,云服务器可以使用虚拟内存来缓解内存的紧张。但当内存使用率已经非常高时,频繁的内存与虚拟内存的切换会导致…

Lftp+Sftp传输总结

背景介绍&#xff1a;因为备份数据的不断扩大&#xff0c;需要把现网备份的数据&#xff08;2T左右&#xff09;传回到本地进行异地保存。但是2T太大了&#xff0c;需要进行压缩&#xff0c;这里采用了3G一个压缩包的方式。以下是压缩脚本 #!/bin/bash # 此脚本是全量压缩mongo…

xftp,xftp怎么连接

服务器管理进行文件传输用的最多的就是FTP传输&#xff0c;那xftp怎么连接服务器呢&#xff1f;打开xftp软件&#xff0c;新建一个连接&#xff0c;填上要连接的IP&#xff0c;端口号&#xff0c;用户名&#xff0c;密码等&#xff0c;保存即可。在选项中选择编码为UTF-8&#…

JAVA日志框架

JAVA日志框架 常见日志框架日志级别阿里日志规约什么时候打印日志配置文件log4j.propertieslogback-spring.xmllogback的默认配置 导入依赖日志使用方式&#xff0c;引入slf4j的API输出用户日志 常见日志框架 日志框架&#xff1a;Log4j 、Logback 。 日志门面&#xff1a;Slf…

VSFTP服务

概述&#xff1a; FTP服务器&#xff08;File Transfer Protocol Server&#xff09;是在互联网上提供文件存储和访问服务的计算机&#xff0c;它们依照FTP协议提供服务。 FTP&#xff08;File Transfer Protocol: 文件传输协议&#xff09;作用&#xff1a; Internet 上用来…

vsftp

一、概述 FTP是file Transfer Protocoll文件传输下ieyi&#xff0c;用于Internet上的文件的双向传输。因ftp是明文传输&#xff0c;没有受到保护&#xff0c;所以具有一定危险性。 VSFTP是一个基于GPL发布的类unix系统上使用的FTP服务器软件。为了解决ftp传输安全性问题的&…

SFTP在Linux和window下的文件传输

使用SecureCRT的SFTP在WINDOWS与LINUX之间传输文件 参考文献&#xff1a; http://ice-k.iteye.com/blog/1068275 http://www.cnblogs.com/chen1987lei/archive/2010/11/26/1888391.html 背景&#xff1a; 有一台主机&#xff0c;安装了windows7&#xff0c;在其安装了virtualbo…

vsftp的简单使用

一、vsftp以及安装 服务端软件&#xff1a;vsftpd 客户端软件&#xff1a;ftp 端口号&#xff1a;20、21或指定范围内其他随机端口 配置文件&#xff1a;vim /etc/vsftpd/vsftpd.conf # 安装 yum install vsftpd ftp# 开机自启 systemctl enable vsftpd# 启动 systemc…