千姿百态,瞬息万变,Win11系统NeoVim打造全能/全栈编辑器(前端/Css/Js/Vue/Golang/Ruby/ChatGpt)

news2024/11/19 16:37:12

我曾经多次向人推荐Vim,其热情程度有些类似现在卖保险的,有的时候,人们会因为一些弥足珍贵的美好暗暗渴望一个巨大的负面,比如因为想重温手动挡的快乐而渴望买下一辆二十万公里的老爷车,比如因为所谓完美的音质而舍不得一个老旧的有线耳机,比如因为一个铜炉火锅而期待北京那漫长而寒冷的冬天。

也许有的人会因为Vim而放弃169刀的JetBrains全家桶,没错,Vim的快乐,就是手动挡的快乐,懂得自然懂,不懂的永远也不会懂,但如果没有用Vim敲过代码,那么绝对枉生于有Vim的世界。

之前一篇:上古神兵,先天至宝,Win11平台安装和配置NeoVim0.8.2编辑器搭建Python3开发环境(2023最新攻略),我们已经配置好了Python3开发环境,本次继续添砖加瓦,让NeoVim进化为全栈编辑器,全知全能,无所不通。

全能补全:coc.nvim

之前配置Python补全,我们使用过NCM2扩展插件:

Plug 'ncm2/ncm2'  
Plug 'roxma/nvim-yarp'  
Plug 'ncm2/ncm2-bufword'  
Plug 'ncm2/ncm2-path'  
Plug 'ncm2/ncm2-jedi'

五个插件,仅仅为了Python的补全,而Coc.nvim 通过 Microsoft 的 Language Server Protocol,支持许多编程语言,包括 JavaScript, Python, C++ ,Ruby等等。同时还可以通过设置和扩展进行灵活定制,满足不同用户的需求。

重新编写配置:

Plug 'neoclide/coc.nvim', {'branch': 'release'}

安装插件:

:PlugInstall

安装Python补全:

:CocInstall coc-pyls

就这么简单。

随后,还可以对其他目标语言进行设置,比如想支持Golang的补全,通过命令:

:CocConfig

打开配置文件,Win11默认路径是:~\AppData\Local\nvim\coc-settings.json

{  
    "languageserver": {  
        "golang": {  
            "command": "gopls",  
            "rootPatterns": [  
                "go.mod"  
            ],  
            "filetypes": [  
                "go"  
            ]  
        }  
    },  
    "suggest.noselect": false,  
    "coc.preferences.diagnostic.displayByAle": true,  
    "suggest.floatEnable": true  
}

添加Golang的配置,这里使用gopls模块。

正确配置之后,就可以使用代码补全了 例如我们输入 fmt. 就会提示fmt包中的方法,默认选择第一个,使用< C-n > < C-p > 上下选择,回车确认,nvim下可以使用悬浮窗功能。

类似的,如果想配置Ruby的智能提示,设置不需要配置文件,只需要安装对应模块即可:

gem install solargraph

随后NeoVim内运行命令:

:CocInstall coc-solargraph

但这也带来了一个问题,即编译运行的时候,默认运行的语言是Python,如何让Vim程序自动进行判断?只需要修改配置即可:

autocmd FileType python nnoremap <C-B> :sp <CR> :term python % <CR>  
autocmd FileType go nnoremap <C-B> :sp <CR> :term go run % <CR>  
nnoremap <C-W> :bd!<CR>

这里通过NeoVim中的autocmd进行判断,如果是Python代码就通过python解释器运行,如果是golang代码就通过Golang的编译器进行编译,互不影响。

NeoVim 的 autocmd 是用来自动执行命令的一种机制。它可以在特定的事件发生时触发命令的执行,比如打开文件、保存文件等。这样可以自动地对文件进行格式化、添加头部信息等操作。

前端的补全更简单,一键式命令安装即可:

:CocInstall coc-vetur coc-json coc-html coc-css

但前端页面默认是没有闭合高亮的,所以推荐下面这个插件:

Plug 'leafOfTree/vim-matchtag'

它可以针对前端页面标签的闭合进行动态高亮:

非常方便。

快捷操作与配置

也许有人会因为诸如保存、注释以及记录等操作还需要输入vim命令而苦恼,但其实这并不是什么问题,Vim也可以自动保存:

Plug 'Pocco81/auto-save.nvim'

这样就可以免去:w的操作。

单行以及多行的批量注释可以依赖这个插件:

Plug 'tpope/vim-commentary'

这样就可以通过组合键gc快速进行注释操作了。

编辑操作记录可以依赖这个插件:

Plug 'mhinz/vim-startify'

如此可以在首页动态的选择曾经编辑过的文件:

想要传统IDE那样的动态调节字体大小?

let s:fontsize = 12  
function! AdjustFontSize(amount)  
  let s:fontsize = s:fontsize+a:amount  
  :execute "GuiFont! Consolas:h" . s:fontsize  
endfunction  
  
inoremap <expr> <TAB> pumvisible() ? "\<C-y>" : "\<CR>"  
inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>"  
inoremap <expr> <C-j> pumvisible() ? "\<C-n>" : "\<Down>"  
inoremap <expr> <C-k> pumvisible() ? "\<C-p>" : "\<Up>"

通过tab键选择自动补全的代码提示?

" In insert mode, pressing ctrl + numpad's+ increases the font  
inoremap <C-kPlus> <Esc>:call AdjustFontSize(1)<CR>a  
inoremap <C-kMinus> <Esc>:call AdjustFontSize(-1)<CR>a

在Vim中,你甚至可以和ChatGpt一亲芳泽:

use({  
  'terror/chatgpt.nvim',  
  run = 'pip3 install -r requirements.txt'  
})

当然,在用户目录下需要chatgpt的apikey或者token: ~/.chatgpt-nvim.json:

{  
  "authorization": "<API-KEY>",      # Optional API key  
  "session_token": "<SESSION-TOKEN>" # Your ChatGPT session token  
}

由于api-key是收费的,这里建议使用token:

访问 https://chat.openai.com/chat 并且登录
按F12打开开发者工具
在应用的标签上 > 选择Cookies
直接复制__Secure-next-auth.session-token的value值写到上面的session_token中即可。

效果如下:

最后,完整的全栈NeoVim配置:

call plug#begin('C:\nvim-win64\nvim-win64\share\nvim\plugged')  
  
  
Plug 'navarasu/onedark.nvim'  
  
Plug 'pablopunk/native-sidebar.vim'  
  
  
Plug 'Pocco81/auto-save.nvim'  
  
Plug 'leafOfTree/vim-matchtag'  
  
Plug 'mhinz/vim-startify'  
  
Plug 'neoclide/coc.nvim', {'branch': 'release'}  
  
Plug 'tpope/vim-commentary'  
  
  
call plug#end()  
  
let g:onedark_config = {  
    \ 'style': 'warm',  
\}  
colorscheme onedark  
  
  
let g:native_sidebar_shortcut = '<c-t>'  
  
set clipboard^=unnamed,unnamedplus  
  
syntax on                       "syntax highlighting, see :help syntax  
filetype plugin indent on       "file type detection, see :help filetype  
set number                      "display line number  
set path+=**                    "improves searching, see :help path  
set noswapfile                  "disable use of swap files  
set wildmenu                    "completion menu  
set backspace=indent,eol,start  "ensure proper backspace functionality  
set undodir=~/.cache/nvim/undo  "undo ability will persist after exiting file  
set undofile                    "see :help undodir and :help undofile  
set incsearch                   "see results while search is being typed, see :help incsearch  
set smartindent                 "auto indent on new lines, see :help smartindent  
set ic                          "ignore case when searching  
  
set expandtab                   "expanding tab to spaces  
set tabstop=4                   "setting tab to 4 columns  
set shiftwidth=4                "setting tab to 4 columns  
set softtabstop=4               "setting tab to 4 columns  
set showmatch                   "display matching bracket or parenthesis  
set hlsearch incsearch          "highlight all pervious search pattern with incsearch  
  
highlight ColorColumn ctermbg=9 "display ugly bright red bar at color column number  
  
" Keybind Ctrl+l to clear search  
nnoremap <C-l> :nohl<CR><C-l>:echo "Search Cleared"<CR>  
  
" When python filetype is detected, F5 can be used to execute script   
" autocmd FileType python nnoremap <buffer> <c-b> :<cr>:exec '!python' shellescape(expand('%:p'), 1)<cr>  
  
autocmd FileType python nnoremap <C-B> :sp <CR> :term python % <CR>  
autocmd FileType go nnoremap <C-B> :sp <CR> :term go run % <CR>  
nnoremap <C-W> :bd!<CR>  
  
  
let s:fontsize = 12  
function! AdjustFontSize(amount)  
  let s:fontsize = s:fontsize+a:amount  
  :execute "GuiFont! Consolas:h" . s:fontsize  
endfunction  
  
inoremap <expr> <TAB> pumvisible() ? "\<C-y>" : "\<CR>"  
inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>"  
inoremap <expr> <C-j> pumvisible() ? "\<C-n>" : "\<Down>"  
inoremap <expr> <C-k> pumvisible() ? "\<C-p>" : "\<Up>"  
  
" In insert mode, pressing ctrl + numpad's+ increases the font  
inoremap <C-kPlus> <Esc>:call AdjustFontSize(1)<CR>a  
inoremap <C-kMinus> <Esc>:call AdjustFontSize(-1)<CR>a

只需要不到70行的配置,我们就拥有了一个万能的Vim编辑器。

结语

满打满算,七个插件,全知全能,而我们需要做的,只是一行简单的:PlugInstall。因为什么?因为热爱,如果是真爱,哪怕风情万千遇到不解风情,也所甘愿,哪怕没人懂,也要周周至至做出来。

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

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

相关文章

xxl-sso知识点

1、哈希环算法&#xff1a; 通过将数据分配到一个环形的哈希表上来实现数据的分布&#xff0c;根据环上的顺序依次进行分配。 对于数据敏感的服务不能用取余hash来实现&#xff0c;当新增节点时之前按照取余hash放的数据在新增节点之后在相应的节点找不到数据&#xff0c;而哈…

“华为杯”研究生数学建模竞赛2005年-【华为杯】B题:空中加油

赛题描述 对飞行中的飞机进行空中加油,可以大大提高飞机的直航能力。为了简化问题,便于讨论,我们作如下假设。 少辅机架数两种情况给出你的作战方案。 解题思路 摘要: 本文讨论了在辅机只能一次起飞和可以多次起飞情况下,辅机数量与主机 最大作战半径的关系,给出了只…

【前端工程化】一.前端工程化;二.使用webpack打包vue项目;三.在webstorm中安装vite插件,通过vite构建工具创建vue项目

目录 一.前端工程化 1.webpack &#xff08;1&#xff09;定义&#xff1a;是一个前端的构建工具。前端代码格式多&#xff08;html、css、js、图片&#xff09;&#xff0c;前端构建工具的作用是将各种格式不同文件打包到一起&#xff0c;方便项目的上线运行。&#xff08;将…

60 k8s集群中container监控指标有label但是没有value

k8s集群中container监控指标有label但是没有value 1、现象 无法获取到以下label的值:container, image, pod, name 集群刚搭建完的时候一切都是正常的,后来运行一段时间后就缺这缺那的。 2、原因排查 由于这些指标是kubelet上报的,因此看了对应节点上kubelet的日志,发现…

从事Java开发学历是门槛吗?

“学历低&#xff0c;工作好找吗&#xff0c;以后跳槽、转型会不会有门槛&#xff1f;”是的&#xff0c;学历这块敲门砖&#xff0c;在哪里都适用。工厂流水线里学历高的更容易被提拔为管理者&#xff0c;学历越高&#xff0c;对于工具的使用越好。门槛越高&#xff0c;薪资待…

代码随想录算法训练营第五十六天_第九章_动态规划 | 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

LeetCode 300.最长递增子序列 给你一个整数数组 nums &#xff0c;返回其中最长递增子序列的长度。 视频讲解https://www.bilibili.com/video/BV1ng411J7xP文章讲解 https://programmercarl.com/0300.%E6%9C%80%E9%95%BF%E4%B8%8A%E5%8D%87%E5%AD%90%E5%BA%8F%E5%88%97.html 思…

蓝库云|一文搞懂什么是MES(制造执行系统),制造业该如何选择

MES&#xff08;Manufacturing Execution System&#xff09;是一种将制造过程可视化并为工人提供指导和支持的系统。它的优势在于可以优化人员、机器和设备等资源&#xff0c;消除制造对个人技能的依赖。在本文中&#xff0c;蓝库云将以通俗易懂的方式说明MES的概要以及与生产…

CS5260电路参考|Type-C转VGA转换器方案|Type-C转VGA转接线方案

CS5260电路参考|Type-C转VGA转换器方案|Type-C转VGA转接线方案 CS5260是一款TYPEC转VGA转换方案芯片。 CS5260作为标准的USB Type-C显示端口Alt模式接收器&#xff0c;CS5260由双通道主链路差分对&#xff0c;一个AUX通道差分对组成。 CS5260主链接作为双通道差分对&#x…

npm Eslint 报错

❤ npm Eslint 报错 npm init --yes初始化项目 ○ 安装ESLint模块 npm add eslint --dev&#xff0c;node-modules/.bin目录生成eslint的cli程序 ○ 查看eslint的版本 使用npm eslint --version ○ 使用yarn eslint ./index.js 当代码中出现语法错误时&#xff0c;eslint无法检…

vue前端框架应用案例(一)实现简单的加法页面

目录vue实现效果目录结构Count.vueApp.vuemain.jsindex.htmlvuex实现效果vuex使用步骤vuex基本结构目录结构store/index.js文件CountVuex.vueApp.vuemain.jsindex.html本博客参考尚硅谷官方课程&#xff0c;详细请参考 【尚硅谷bilibili官方】 本博客以vue2作为学习目标&…

【黄啊码】windows如何使用tp5.1配置workerman和gateway(不要看官方文档,不要抄网友文档,OK?)

大家好&#xff0c;我是黄啊码&#xff0c;由于项目需要被迫无奈在老项目上整合workerman&#xff0c;整整浪费了我一天&#xff0c;按着tp官方文档去做&#xff0c;一个又一个的坑&#xff0c;然后百度网友的答案&#xff0c;又是一个又一个的天坑&#xff0c;真的无力吐槽&am…

基于Android 的校园疫情防控管理系统设计与实现

需求信息&#xff1a; (1〉通知公告。各级联络员可在此发布各类通知公告。 (2〉应急动态。发布国家公布的各类数据信息&#xff0c;如在本次疫情期间&#xff0c;平台集成丁香园丁香医生疫情动态模板&#xff0c;实时更新全国疫情数据&#xff0c;帮助师生了解疫情地图&#xf…

建设工程质量检测管理办法3月1日起施行

建设工程质量检测管理办法&#xff08;2022年12月29日中华人民共和国住房和城乡建设部令第57号公布 自2023年3月1日起施行&#xff09;第一章 总则第一条 为了加强对建设工程质量检测的管理&#xff0c;根据《中华人民共和国建筑法》《建设工程质量管理条例》《建设工程抗震…

液晶12864显示字符

液晶12864简介12864是128*64点阵液晶模块的点阵数简称。基本参数1、低电源电压&#xff08;VDD:3.0&#xff5e;5.5V&#xff09;。2、显示分辨率:12864点。3、内置汉字字库&#xff0c;提供8192个1616点阵汉字。4、内置128 个168 点阵字符。5、2MHZ 时钟频率。6、显示方式&…

PriorityQueue

PriorityQueue其本质是一个优先级队列的集合。 1. 优先级队列 那什么是优先级队列呢&#xff1f;我们先从它的概念聊起。 概念&#xff1a; 前面介绍过队列&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&a…

Grafana 中文入门教程 | 构建你的第一个仪表盘

Grafana 读音&#xff1a;/grəˈfɑːnˌɑː/ 在大厂工作久了&#xff0c;时常对一些工具的存在觉得理所当然。 比如说&#xff0c;需要计算资源的时候&#xff0c;一个配置文件就可以要来两百台虚拟化好的机子。需要试下缓存&#xff1f;点下鼠标就可以要到几十个配置好的…

简单高效的字符串匹配算法

Quick Search算法 算法简介 Quick Search算法属于Sunday算法的一种。Sunday算法由Daniel M Sunday在1990年提出。论文原文&#xff1a;A VERV FAST SU6STRINC SEARCH ALGORITHM 在论文中&#xff0c;作者提出了三个不同的算法&#xff1a;Quick Search算法、Maximal Shift算…

IO流——字符缓冲流

复制文本文件–一次读写一个字符 –一次读写一个字符数组 不带参数&#xff1a; package com.demo03;import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;/** 需求&#xff1a;* 把项目路径下的FileWriterDemo.java中的内容复制到项目路径…

上门服务小程序怎么开发-上门服务小程序源码功能

目前上门服务类型新型行业已经占据了很大的市场所在&#xff0c;上门家政服务&#xff0c;上门做饭&#xff0c;上门按摩&#xff0c;上门私教&#xff0c;上门美容没发等等一些列的&#xff0c;目前上门系列的在市场分额还是特别大的&#xff0c;趋势比较大&#xff0c;今天就…

Docker 安装镜像与使用命令

按照阿里云的操作文档安装 docker&#xff1a;https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 这里仅写 Windows 版的&#xff0c;其他版本见上面的链接 1. 安装&#xff0f;升级Docker客户端 对于Windows 10以下的用户&#xff0c;推荐使用Docker ToolboxWin…