win10环境下gvim离线配置插件的一些补充

2024-08-31 12:28

本文主要是介绍win10环境下gvim离线配置插件的一些补充,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0 总述

在上一篇博客,即《Windows系统下使用gvim配置LaTeX快速书写环境》一文中,本小白试图模仿神级人物Gilles Castel,打造vim下的 LaTeX \LaTeX LATEX书写环境。实话实说,东施效颦了。虽不至于一无所得,但也仅仅算开了个头。经过一段时间的摸索和查漏补缺,我深刻地认识到在之前博客中犯了一些错误。本文试图对于其中的一个错误进行修正。

1 究竟应该如何配置插件

上文书讲到,因为github受到墙的影响,导致我们无法按照vim-plug插件的官方指导方法,通过网络安装插件的方法直接完成插件配置。因此小白随意找了一个位置把插件配置了进去。虽然通过小白一通蹩脚的配置,确实勉强可以使用。但是不知道你有没有发现,按照那个配置方法,我们是无法查看到相关help或者其他doc文件的。这样给我们学习插件使用带了很大困扰。

从第一性原理出发,理论上,插件自动安装,也无非是通过程序将相应的文件安装配置在正确的位置。那么,插件的正确安装位置应该是哪里?

小白通过不间断地尝试,在github网络较好的时候,幸运地以自动化的方式安装成功了一个插件。于是我们查看到这个插件的安装位置实际上是在

C:\\Users\\XXXX\\vimfiles\\plugged

路径下。其中XXXX指的当然就是你的用户名了。

小白查阅了一些资料,原来,如果你在gvim中输入

:echo &HOME

注意冒号和大小写,这其实是在vim的普通模式下。
则系统会返回给你$HOME的路径,而这个路径下的vimfiles文件夹才应该是插件应该待的地方。

如果你和小白一样是windows10系统下默认安装的gvim,那么你将会看到

C:\Users\XXXX

如果你打开这个路径,发现没有plugged文件夹,那就顺手建一个,同样地,不要拼错单词。

注意把你下载的几个插件解压到这个plugged文件夹下面。
同时注意把它的版本号去掉。
在这里插入图片描述

然后又回到我们的_vimrc配置文件中,把之前强行指定的部分全都修改掉。

" Vim with all enhancements
source $VIMRUNTIME/vimrc_example.vim" Use the internal diff if available.
" Otherwise use the special 'diffexpr' for Windows.
if &diffopt !~# 'internal'set diffexpr=MyDiff()
endif
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
endfunctionset shortmess=atI
set nu
set rnu
set guifont=Consolas:h9
set showmatch
colorscheme slate
syntax enable
syntax on
filetype indent on
filetype plugin indent oncall plug#begin()
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
Plug 'lervag/vimtex'
call plug#end()let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsListSnippets="<c-tab>"
let g:UltiSnipsJumpForwardTrigger="<tab>"
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
let g:UltiSnipsSnippetDirectories=['C:\Users\Admin\vimfiles\plugged\ultisnips']"LaTeX配置
let g:tex_flavor='latex'
let g:vimtex_texcount_custom_arg=' -ch -total'
"映射VimtexCountWords!\lw 在命令模式下enter此命令可统计中英文字符的个数
au FileType tex map <buffer> <silent>  <leader>lw :VimtexCountWords!  <CR><CR>
let g:Tex_ViewRule_pdf = 'C:\Users\Admin\AppData\Local\SumatraPDF\SumatraPDF.exe -reuse-instance -inverse-search "gvim -c \":RemoteOpen +\%l \%f\""'"这里是LaTeX编译引擎的设置,这里默认LaTeX编译方式为-pdf(pdfLaTeX),
"vimtex提供了magic comments来为文件设置编译方式
"例如,我在tex文件开头输入 % !TEX program = xelatex   即指定-xelatex (xelatex)编译文件
let g:vimtex_compiler_latexmk_engines = {\ '_'                : '-pdf',\ 'pdflatex'         : '-pdf',\ 'dvipdfex'         : '-pdfdvi',\ 'lualatex'         : '-lualatex',\ 'xelatex'          : '-xelatex',\ 'context (pdftex)' : '-pdf -pdflatex=texexec',\ 'context (luatex)' : '-pdf -pdflatex=context',\ 'context (xetex)'  : '-pdf -pdflatex=''texexec --xtx''',\}
"这里是设置latexmk工具的可选参数
let g:vimtex_compiler_latexmk = {\ 'build_dir' : '',\ 'callback' : 1,\ 'continuous' : 1,\ 'executable' : 'latexmk',\ 'hooks' : [],\ 'options' : [\   '-verbose',\   '-file-line-error',\   '-shell-escape',\   '-synctex=1',\   '-interaction=nonstopmode',\ ],\}" 阅读器相关的配置 包含正反向查找功能 仅供参考
"let g:vimtex_view_method = 'general'
"let g:vimtex_view_general = {\ 'method': 'general',\ 'command': 'C:\Users\Admin\AppData\Local\SumatraPDF\SumatraPDF.exe',\ 'args': ['--reuse-instance', '--forward-search', '"%:p"', '%l', '--inverse-search', '"^"C:\Program Files\vim\vim91\gvim.exe^" -f % -c :call cursor(%line, %col)"'],
\}
"autocmd BufWritePost *.tex silent call vimtex#compiler#compile()
let g:vimtex_view_general_viewer = 'C:\\Users\\Admin\\AppData\\Local\\SumatraPDF\\SumatraPDF.exe' "这里放置你的sumatrapdf 安装路径
"let g:vimtex_view_general_options_latexmk = '-reuse-instance'
let g:vimtex_view_general_options\ = ' -reuse-instance -forward-search @tex @line @pdf'\ . ' -inverse-search "' . 'cmd /c start /min \"\" '  . exepath(v:progpath)\ . ' -v --not-a-term -T dumb -c  \"VimtexInverseSearch %l ''%f''\""' "for vim/gvim"编译过程中忽略警告信息
let g:vimtex_quickfix_open_on_warning=1let g:vimtex_quickfix_mode=0
set conceallevel=1
let g:tex_conceal='abdmg'

小白为了书写方便把整个文件都贴上来了,其实我们主要要关注的就是:

call plug#begin()
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
Plug 'lervag/vimtex'
call plug#end()

另外就是其他一些涉及强行指定插件安装位置的语句,这些都可以不需要了。

2 如何在SumatraPDF中配置反向查看

小白尝试了很久,发现虽然_vimrc文件中的配置没有报错,但是一直没有啥效果。

需要在SumatraPDF 菜单栏中找到"设置" -> “选项”

在“设置反向搜索命令行”“请输入您双击PDF文件后调用的命令行”里填写

cmd /c start /min "" "C:\Program Files\Vim\vim91\gvim.exe" -v --not-a-term -T dumb -c  "VimtexInverseSearch %l '%f'"

在这里插入图片描述

注意,如果你和小白一样,gvim是安装在C:\Program Files目录下,则由于空格的存在,一定要把路径地址用双引号包围起来,否则会报错,系统找不到C:\Program这个目录。

3 编译后在SumatraPDF中不刷新问题

这个问题困扰了小白很久,后来在vimtex的issue里找到了一些答案。按照issue里所说,其实这个问题很可能是由SumatraPDF本身导致的。小白尝试在两台电脑上安装,一台出现了这种问题,另一台没有。这个问题目前没有解决方案。vimtex的作者也说暂时不知道问题出在了何处,但是有一位用户提到,如果你在pdf文件中输入’r’键,则自动刷新后就得到了最新编译的pdf。

这个问题的相关解答可以参考# SumatraPDF doesn’t auto-reload / refresh compiled PDF when using xelatex engine #2830

4 设置 continous编译模式后会出现stopped问题

在编译过程中,当小白第二次更新文件并编译时,却发现提示

compile stopped

小白本以为这是一个bug

后来也是查到了vimtex的issue,作者解释了这个问题,意思是这不是一个bug,是编译器的正常表现。

具体解释可以查看# Compiler running after Compilation completed #2131

:VimtexCompile            If the compiler supports and is set to run incontinuous mode, then this command works asa compiler toggle. If not, this command will runa single shot compilation.

小白暂时就发现和解决了这些疑惑。

剩余的事情还包括,要如何配置自己的snippets文件,以及如何使用那位神级小哥所说的inkscape工具快速绘图的问题。

路漫漫其修远兮,吾将上下而求索。

在这里插入图片描述

这篇关于win10环境下gvim离线配置插件的一些补充的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123898

相关文章

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads