Vim 全局配置 / 设置鼠标模式

新搞的 Linux (Debian) 上的 vim 一右击粘贴就变成 insert (Visual) 模式,上网查了一下,要 set mouse=,但是每次设置太麻烦了,另外我也想改一下全局配色。

定位全局配置文件

看到有篇博客说是在 /usr/share/vim/share/... 下有个 vimrc,可能不同系统或版本有差异,总的来说先去 /usr/share/vim 找,我这一下就找到了:/usr/share/vim/vimrc,看到文件末尾有这么几行:

" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif

看这样就知道是要去改 /etc/vim/vimrc.local。这里分析一下为什么要加个 vimrc.local,而不是直接修改这个文件,这是因为 vim 每次更新之后有可能会修改自己的默认配置,如果直接修改的话在更新的时候就会出现冲突,而 local 的意思正是本地配置,与上游 vim 配置无关。


所以最后在 /etc/vim/vimrc.local 加上

set mouse=
colorscheme slate

实测在那个位置添加 set mouse= 并不会起效。
参考 https://www.jianshu.com/p/29744bae5f3d 发现鼠标的行为在 vimrc.local 之后加载,所以要么在 /etc/vim/vimrc.local 中加上 let skip_defaults_vim=1,要么在我要用的 root 用户主目录下建 .vimrc,但是这样会导致 root 用户没有代码高亮。
其实也好弄,在 ~/.vimrc 加一句 source 就行了:

source $VIMRUNTIME/defaults.vim
set mouse=""

补2

感觉鼠标模式还是挺有用的,所以最好还是弄个快捷键出来快速切换一下鼠标和非鼠标模式
/etc/vim/vimrc.local 中加上这段

map <F9> <ESC>:call Mouse()<CR>

function Mouse()
    if has('mouse')
        if &mouse==""
            :set mouse=a
            :echo "mouse enabled"
        else
            :set mouse=""
            :echo "mouse disabled"
        endif
    else
        :echo "no mouse"
    endif
endfunction

这里面 map 命令将 F9 按键绑定到了 <ESC>:call Mouse()<CR>上,其中 ESC 是为了应对已经进入 Visual 模式的情况,先退出,然后再执行函数;CR 则是换行,应用命令。
函数里 &mouse 表示获取 vim 中 mouse 选项的值。

posted @ 2023-12-03 15:10  BrandonPei  阅读(1790)  评论(0)    收藏  举报