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

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次