我的vim配置

我主要是用vim来写LaTeX公式,配合插件UltiSnips,公式输入速度非常快。今天来梳理一下我的vim配置。

插件UltiSnips用来预先定义一些代码片段(snippets),使用时快速插入这些片段到文章中。我需要时常更新snippet,并且这些snippet是不同设备间共用的。因此我把vim的相关配置放到了git仓库中。

更换vimrc配置文件位置

gvim的用户配置文件_vimrc在用户目录下,想要将其“转移”到git仓库中,需要在里面输入:

source $HOME/Documents/目录/Git仓库/_vimrc

如果在编辑文件的中途,想要修改vimrc配置文件,并且不想重启vim软件,可以用下面的代码设定快捷键,打开vimrc文件,重新加载vimrc文件。

"打开vimrc文件
nmap <leader>e :e $HOME/Documents/目录/Git仓库/_vimrc<cr>
"修改vimrc文件后,重新加载设置
nmap <leader>s :source $HOME/目录/Git仓库/Aoyu_vim/_vimrc<cr>

管理插件vim-plug

我管理vim插件时使用的是vim-plug,windows下的安装方法:

iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
    ni $HOME/vimfiles/autoload/plug.vim -Force

在安装插件前,需要将下面的代码放到_vimrc里面:

call plug#begin('~/vimfiles/plugged')

" LaTeX插件vimtex
Plug 'lervag/vimtex'

" snippets插件UltiSnips
Plug 'SirVer/ultisnips'

" 主题onehalf
Plug 'sonph/onehalf', { 'rtp': 'vim' }

call plug#end()

保存并重新加载vimrc配置后,在vim中输入下面的命令安装插件:

:PlugInstall

插件UltiSnips配置

我将自定义的snippets也放到了git仓库中,使用如下的代码修改snippet位置:

let g:UltiSnipsSnippetDirectories=[$HOME.'/Documents/目录/Git仓库/snippets_aoyu']

我将UltiSnips的snippet触发键修改为了Tab,向前、向后跳转使用TabShift+Tab(我不知道怎么去描述)。代码如下:

" Trigger configuration. 
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<tab>"
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"

在写文章的中途,去编辑snippet,可以设定新窗口的分割方式(竖着分、横着分),代码如下:

" If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical"

我也为中途编辑snippet设定了一个快捷键:

map <leader>us :UltiSnipsEdit<cr>

插件vimtex配置

我配置的不多,因为我不用vim来写LaTeX文档,而只是来写LaTeX公式。

我没有安装TexLive,在打开tex文件时会报错:

VimTeX: latexmk is not executable
VimTeZ: Compiler was not initialized!

我的解决方式:

let g:vimtex_compiler_enabled=0

细节

大多数时候我是在markdown文档中写LaTeX公式,因此我需要让vim将.md文件看成.tex文件。代码如下:

au BufNewFile,BufRead *.md set filetype=tex

在编辑文档时,若想实时预览公式,使用下面的代码可以自动保存文件:

"自动保存文件
autocmd TextChanged,TextChangedI <buffer> silent write

但这样会出一个bug:直接打开gvim.exe,编辑“未保存”的文档时会报错:E32: 没有文件名。预想的解决方式:只让扩展名为.tex的文件自动保存。

按键映射

相比于按ESC切换到Normal模式,按jk是更快的选择:

inoremap jk <esc>

打开当前正在编辑的文件所在的文件夹目录(仅适用于windows):

" 打开当前文件所在目录 windows
map <leader>ex :!start explorer %:p:h<CR>

在插入模式,移动光标需要按方向键,需要移动右手,因此我映射Alt+HJKL用于移动光标:

" 插入模式移动光标,alt + hjkl
inoremap <M-j> <Down>
inoremap <M-k> <Up>
inoremap <M-h> <left>
inoremap <M-l> <Right>

vim是可以同时显示多个文档(标签页、窗口)的,所以我设定了一些快捷键,打开新窗口、在不同窗口间移动,调整窗口的大小:

" 为标签页设置快捷键
map <leader>tn :tabnew<cr> "新建标签页
map <leader>tc :tabclose<cr> "关闭标签页
map <leader>th :tabp<cr> "打开左边的标签页
map <leader>tl :tabn<cr> "打开右边的标签页

" 在分割窗口间移动光标
nmap <C-j> <C-W>j
nmap <C-k> <C-W>k
nmap <C-h> <C-W>h
nmap <C-l> <C-W>l

" 正常模式下 alt+j,k,h,l 调整分割窗口大小
nnoremap <M-j> :resize +5<cr>
nnoremap <M-k> :resize -5<cr>
nnoremap <M-h> :vertical resize -5<cr>
nnoremap <M-l> :vertical resize +5<cr>

其他

一些vim的常规配置就不写下来了。

vim只是我写LaTeX公式的一个工具而已,我的笔记保存在RoamResearch里面,用Text Editor Anywhere这个软件在写笔记时调用vim,写完公式随即退出,文字自动粘贴进RR里面。

之前我用过一段时间的Obsidian+Vim,在Obsidian里可以设定快捷键,用vim打开md文档。由于开启了自动保存,在vim里写的公式会实时显示在obsidian里面。

posted @   aoyu321  阅读(257)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示