VIM环境配置记录

news/2025/3/3 21:35:25/文章来源:https://www.cnblogs.com/stupidpeng/p/18742884

背景

VIM只用自带安装的软件,可以完成文本编辑的功能,不过很多开发者编写了很多插件,配合这些插件来做文字代码编辑,能很好地提高速度与效率
VIM的配置环境,装机后只配置一次,很容易忘记,下次重装系统或者配新机时,又要重新查找相关资料
这里做一次记录,方便后续重新配置相关个人使用的插件
所有记录都是在WINDOWS下进行配置的

vundle安装

安装完成VIM后,进入VIM所在的目录C:\Program Files\Vim

cd C:\Program Files\Vim
git clone https://github.com/VundleVim/Vundle.vim.git vimfiles/bundle/Vundle.vim

等下载完成vundle就算完成了
添加vundle管理的插件

set nocompatible              " 去除VI一致性,必须要添加
filetype off                  " 必须要添加" 设置包括vundle和初始化相关的runtime path
set rtp+=$VIM/vimfiles/bundle/Vundle.vim
call vundle#rc('$VIM/vimfiles/bundle')
call vundle#begin()
" 另一种选择, 指定一个vundle安装插件的路径
"call vundle#begin('~/some/path/here')" 让vundle管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'" 以下范例用来支持不同格式的插件安装.
" 请将安装插件的命令放在vundle#begin和vundle#end之间.
" Github上的插件
" 格式为 Plugin '用户名/插件仓库名'
Plugin 'tpope/vim-fugitive'
" 来自 http://vim-scripts.org/vim/scripts.html 的插件
" Plugin '插件名称' 实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
Plugin 'L9'
" 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
Plugin 'git://git.wincent.com/command-t.git'
" 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
"Plugin 'file:///home/gmarik/path/to/plugin'
" 插件在仓库的子目录中.
" 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
"Plugin 'ascenator/L9', {'name': 'newL9'}Plugin 'scrooloose/nerdtree' " 加入NERDTreePlugin 'tomasr/molokai'Plugin 'ycm-core/YouCompleteMe'"Plugin 'wesleyche/SrcExpl'"Plugin 'tenfyzhong/CompleteParameter.vim'
" 你的所有插件需要在下面这行之前
call vundle#end()            " 必须

VIM的安装路径可以用 \$VIM来表示,不需要配置WINDOWS的系统变量,否则会工作不正常,$VIM是在哪里定义的,没有找到出处
添加完插件之后,VIM加载后,需要使用PluginInstall来加载插件

启动时自动加载使用操作

autocmd VimEnter * PluginInstall
autocmd VimEnter * :q
autocmd VimEnter * NERDTree
autocmd VimEnter * :colorscheme morning

期间遇到,不能复制或者工作不正常的状态,原因是WINDOWS权限设置的问题,因为没有管理权限,导致无法对C盘文件进行操作,导致工作不正常。

自带目录plugin

除了用vundle管理插件外,GVIM本身目录下的plugin目录里也可以安装插件,使用的方法就直接用命令调用就可以了
常用的如a.vim taglist.vim等
a.vim h,c文件相互跳转
taglist.vim 当前文件的标识显示
官方网站上有相关plugin下载的链接
https://www.vim.org/scripts/script_search_results.php?order_by=creation_date&direction=descending

ctags安装

下载ctags,同时添加到环境变量中,在打开VIM的使用,调用ctags -R的命令,来遍列代码标识,就可以实现,代码跳转,从引用到定义
https://sourceforge.net/projects/ctags/files/ctags/5.8/

YouCompleteMe安装

所谓youcompleteme安装,其实还是将youcompleteme在本地编译,至于安装是vundle,加载插件的时候,才加载的。
windows下安装,依赖项如下,如果只支持C语言的情况下,只需要预安装框起来的部分就可以,CMake安装后将路径添加至环境变量,下载并安装VS

cd C:\Program Files\Vim\vimfiles\bundle\YouCompleteMe
python install.py --clangd-completer --verbose

编译时也可以指定vs版本,例如--msvc 17

vimrc整个文件

点击查看代码
source $VIMRUNTIME/vimrc_example.vimset guifont=Courier_New:h12:cANSI
set encoding=utf-8
set langmenu=zh_CN.UTF-8
language messages zh_CN.utf-8set ignorecase
map <F7> :bp<ENTER>
map <F8> :bn<ENTER>
map <F2> <C-]>
map <F3> <C-o>
map <F4> :A<ENTER>
map <F11> <Esc>:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR>
map <C-s> :w<ENTER>
inoremap <C-s> <Esc>:w<ENTER>
map <C-f> yw:vimgrep <C-r>0 **/*.{h,c}<LEFT><LEFT><LEFT><LEFT><LEFT><LEFT><LEFT><LEFT><LEFT><LEFT>
map <C-c> :copen<ENTER>
map <C-x> :cclose<ENTER>
map <C-F7> :call libcallnr("vimtweak.dll" , "SetAlpha" , 180)<ENTER>
map <C-F8> :call libcallnr("vimtweak.dll" , "SetAlpha" , 255)<ENTER>set number
set ts=4
set shiftwidth=4
colorscheme desert
autocmd GUIEnter * simalt ~xset nobackup
set noswapfile
set nowritebackup
set backupdir=D:\\Vim\\filebackup
set undodir=D:\\Vim\\undodirautocmd VimEnter * PluginInstall
autocmd VimEnter * :q
autocmd VimEnter * NERDTree
autocmd VimEnter * :colorscheme morning
"autocmd VimEnter * FindFileCache .
set diffexpr=MyDiff()
function MyDiff()let opt = '-a --binary 'if &diffopt =~ 'icase' | let opt = opt . '-i ' | endifif &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endiflet arg1 = v:fname_inif arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endiflet arg1 = substitute(arg1, '!', '\!', 'g')let arg2 = v:fname_newif arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endiflet arg2 = substitute(arg2, '!', '\!', 'g')let arg3 = v:fname_outif arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endiflet arg3 = substitute(arg3, '!', '\!', 'g')if $VIMRUNTIME =~ ' 'if &sh =~ '\<cmd'if empty(&shellxquote)let l:shxq_sav = ''set shellxquote&endiflet cmd = '"' . $VIMRUNTIME . '\diff"'elselet cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'endifelselet cmd = $VIMRUNTIME . '\diff'endiflet cmd = substitute(cmd, '!', '\!', 'g')silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3if exists('l:shxq_sav')let &shellxquote=l:shxq_savendif
endfunctionlet Tlist_Show_One_File = 1
let Tlist_Exit_OnlyWindow = 1
let Tlist_Sort_Type = "name"
let Tlist_Auto_Open = 1
let g:winManagerWindowLayout = 'FileExplorer|TagList'set nocompatible              " 去除VI一致性,必须要添加
filetype off                  " 必须要添加" 设置包括vundle和初始化相关的runtime path
set rtp+=$VIM/vimfiles/bundle/Vundle.vim
call vundle#rc('$VIM/vimfiles/bundle')
call vundle#begin()
" 另一种选择, 指定一个vundle安装插件的路径
"call vundle#begin('~/some/path/here')" 让vundle管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'" 以下范例用来支持不同格式的插件安装.
" 请将安装插件的命令放在vundle#begin和vundle#end之间.
" Github上的插件
" 格式为 Plugin '用户名/插件仓库名'
Plugin 'tpope/vim-fugitive'
" 来自 http://vim-scripts.org/vim/scripts.html 的插件
" Plugin '插件名称' 实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
Plugin 'L9'
" 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
Plugin 'git://git.wincent.com/command-t.git'
" 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
"Plugin 'file:///home/gmarik/path/to/plugin'
" 插件在仓库的子目录中.
" 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
"Plugin 'ascenator/L9', {'name': 'newL9'}Plugin 'scrooloose/nerdtree' " 加入NERDTreePlugin 'tomasr/molokai'Plugin 'ycm-core/YouCompleteMe'"Plugin 'wesleyche/SrcExpl'"Plugin 'tenfyzhong/CompleteParameter.vim'
" 你的所有插件需要在下面这行之前
call vundle#end()            " 必须
filetype plugin indent on    " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
" 忽视插件改变缩进,可以使用以下替代:
"filetype plugin on
"
" 常用的命令
" :PluginList       - 列出所有已配置的插件
" :PluginInstall     - 安装插件,追加 `!` 用以更新或使用 :PluginUpdate
" :PluginSearch foo - 搜索 foo ; 追加 `!` 清除本地缓存
" :PluginClean      - 清除未使用插件,需要确认; 追加 `!` 自动批准移除未使用插件
"
" 查阅 :h vundle 获取更多细节和wiki以及FAQ
" 将你自己对非插件片段放在这行之后let g:ycm_show_diagnostics_ui = 0
"let g:ycm_enable_diagnostic_signs = 0

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

endnote 基础使用

因为工作的原因,综述格式统一使用endnote。一小时速成,可以满足基础的综述引用。 安装 安装的是endnote 21,这个界面感觉比较简洁。 EndNote 21 的安装包中有汉化补丁 "D:\Program Files (x86)\EndNote 21\安装包\Crack\汉化补丁.exe" 2024-11-18 Endnote21更新-…

Day1-Markdown学习笔记

MarkDown学习 标题 一个#然后空格加内容是一级标题,两个是二级标题,三个是三级标题 字体 hello world hello world *** hello world*** hello world 一对*加上内容是斜体,两对是加粗,三对是既加粗又斜体, 一对~是加横线,就是废弃的意思 引用引用别人的内容一个> 加…

2025-03-02 闲话

2025-03-02 闲话走进这里时,求是园欢迎您。离开时,它会说,再见。昨天十一点,从这里走上蒋墩路,过了马路,是夜晚的学军。周末不再灯火通明,只剩下校门口的主灯,照亮着蓝色匾额的威严。昨天发了点牢骚,2023 年时进这个校园,不需要预约,刷脸时能发现不只一个我在这里的…

Semantic Kernel:接入azure中的deepseek-r1

SemanticKernel已经支持deepseek-r1了,官方的Blog地址是https://devblogs.microsoft.com/semantic-kernel/using-deepseek-models-in-semantic-kernel,同时给出了接入的Demo,遗憾的是deepseek不支持API的充值,没有办法测试。办法总比困难多,正好微软现在支持在Azure部署de…

C#中的Channel

在 .NET 的异步编程中,System.Threading.Channels 提供了一种强大的方式来处理生产者-消费者模式,尤其是当我们要在不同的任务或服务之间传递数据时。这篇文章我们就来聊聊 UnboundedChannelOptions 和 BoundedChannelOptions 这两个类,以及它们的使用场景和区别。代码背景介…

Kimi/DeepSeek最新论文MoBA与NSA阅读

From:https://www.big-yellow-j.top/posts/2025/02/21/Kimi-DS-Paper.html DeepSeek最新论文:Native Sparse Attention: Hardware-Aligned and Natively Trainable Sparse Attention以及 Kimi最新论文MOBA: MIXTURE OF BLOCK ATTENTION FOR LONG-CONTEXT LLMS这几篇文章都是针…

Windows 剪贴板 编程原理引入

前言 不得不说上三休四的生活就是舒服,我都有精力提升自己了。 本文将基于自己在生活中遇到的现象进行探索,因此问题引入对自己较为重要,读者可以跳过。 文章主要探讨剪贴板格式问题,即下面的链接。https://learn.microsoft.com/zh-cn/windows/win32/dataxchg/standard-cli…

.NET9中基于策略角色验证的包冲突

今天在.NET项目中,使用基于策略角色的鉴权时,遇到一个401的问题,场景如下:Program.cs代码如下:using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; usin…

yolov5预处理

1.yolov5预处理流程1.等比缩放与填充:将输入图像等比缩放到目标尺寸(如640640),并在多余部分填充灰条,保持图像的宽高比不变。这一过程也被称为“letterbox”。  2.颜色空间转换:将图像从BGR格式转换为RGB格式(OpenCV默认读取为BGR)。  3.归一化:将像素值从[0, 25…

.NET9中使用Options

选项模式在 ASP.NET Core 中使用类来提供对相关配置设置的强类型访问。通过将配置设置隔离到单独的类,应用程序遵循封装和关注点分离的原则。封装确保依赖于配置的类仅依赖于其使用的设置;关注点分离则确保应用的不同部分的设置互不依赖或耦合。此外,选项模式还提供了验证配…

Semantic Kernel:OpenAPI的Plugin

SK的插件,能让AI功能如虎添翼。Plugin能让AI与本地功能和数据互动,使AI与应用的结合,并起到了很好的粘合剂作用。怎么能让Plugin本身和功能分离呢?调用API是一个很好的办法,比如下面是一个查询订单的功能,是一个mini API项目。using System.Text.Json.Serialization;var …