Windows git bash输入vim报错,不能使用vim-plug插件管理器

Windows系统下的git bash在安装时自带了默认的vim,我自己也下了个gvim,并且配置了.vimrc,其中使用了vim-plug管理nerdtree这些插件。但是在bash中vim <file>时,就会蹦出来几行报错:

处理 /c/Users/<username>/.vimrc 时发生错误:
第  152 行:
E117: 未知的函数: plug#begin
第  155 行:
E492: 不是编辑器的命令: Plug 'scrooloose/nerdtree'
第  161 行:
E117: 未知的函数: plug#end
请按 ENTER 或其它命令继续

bash和Windows的vim

我们在bash中输入which vim,显示结果是/usr/bin/vim代表bash用的是自带的vim,而不是我们的gvim,同时gvim也带了个vim.exe,这里我们可以比较下三者的不同。

显示

  • bash自带的vim(“C:\Program Files\Git\usr\bin\vim.exe”)
    在这里插入图片描述在这里插入图片描述
  • gvim (“C:\Program Files (x86)\Vim\vim82\gvim.exe”)
    在这里插入图片描述
  • gvim下的vim.exe (“C:\Program Files (x86)\Vim\vim82\vim.exe”)
    在这里插入图片描述

可以看到他们的界面是有些差异的:bash的vim和gvim长得很像,但是不能读plug且窗口界面小了很多。而vim.exe界面渲染不同,颜色炫酷了些,且窗口大小和bash的vim一样。

.vimrc配置

我在.vimrc中设置了winpos 380 210,指定了窗口的位置,所以他们左上角的位置是相同的。

使用vim.exe作为bash的vim

因为bash自带的vim不能正常工作,我们决定修改vim的别名

# 方案一
$ alias vim="C:\Program Files (x86)\Vim\vim82\gvim.exe"
# vim <file>后跳出新的gvim窗口
# 方案二
$ alias vim="C:\Program Files (x86)\Vim\vim82\vim.exe"
# vim <file>后仍在当前bash窗口,但是窗口移动到了.vimrc中定义的380 210位置,大小也随之改变。
# :q!退出vim后窗口位置不变,大小恢复

方案一比较省事,跳出的vim界面也可以编辑,但是美中不足的是不在shell内
方案二仍是在shell窗口编辑,但是窗口的大小和位置都会改变。

之后就可以将alias vim="C:\Program Files (x86)\Vim\vim82\vim.exe"放在~/.bash_profile中了。至于为什么放在.bashrc中无效,放在最后讨论

这里我们进一步优化方案二

修改bash窗口的位置和大小

在这里插入图片描述
其中调整窗口位置和.vimrc中一致即可。不过

.bashrc和.bash_profile

主目录下有.bash_profile.bashrc,每次打开新的git窗口时,就会加载.bash_profile而不是.bashrc。这里就涉及到了login shell和non-login shell,我们的git bash就属于前者。

Windows下的git bash是login shell Windows没有login shell的概念

简洁的方法就是在.bash_profile最后添加

# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
fi

这样就可以执行.bashrc中的指令了

参考:

  • .bashrc not executed when opening new terminal(这是askubuntu、、Git for Windows不是GNU/Linux,用虚拟机或wsl吧)
  • Shell 启动类型探究 ── login && interactive(启动文件的顺序)
  • Git for Windows: .bashrc or equivalent configuration files for Git Bash shell(新版的git for Windows,启动时自带–login,所以不会直接读.bashrc,需要在.bash_profile加source .bashrc)

关于删除.bash_profile那些事

想尝试下删掉~/.bash_profile.bashrc会不会被自动执行,结果重新打开git就给出了warning:

WARNING: Found ~/.bashrc but no ~/.bash_profile, ~/.bash_login or ~/.profile.

This looks like an incorrect setup.
A ~/.bash_profile that loads ~/.bashrc will be created for you.

然后在主目录下发现了新的.bash_profile

# generated by Git for Windows
test -f ~/.profile && . ~/.profile
test -f ~/.bashrc && . ~/.bashrc

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis报错-CROSSSLOT keys in request don‘t hash in the same slot

背景 问题涉及&#xff1a;spring security、spring session、redis 问题描述 springbootspringsecurityspringsessionantd 登录功能的时候&#xff0c;在源码中使用到了redis的rename命令&#xff08;如下图所示&#xff09; 在这里就会报错 CROSSSLOT keys in request d…

Shell通配符和正则表达式

目录 ​​​​​​​grep 通配符 正则表达式 grep grep家族有三大成员分别为&#xff1a; grep&#xff1a;支持使用基本正则表达式。 egrep&#xff1a;支持使用扩展正则表达式。 fgrep&#xff1a;不支持使用正则表达式&#xff0c;即所有的正则表达式中的元字符都将作…

网络安全(黑客技术)自学笔记

首先给大家简单介绍一下网络安全&#xff1a; 1.什么是网络安全&#xff1f; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、…

感受C++模版的所带来的魅力

一、泛型编程思想 首先我们来看一下下面这三个函数&#xff0c;如果学习过了 C函数重载 和 C引用 的话&#xff0c;就可以知道下面这三个函数是可以共存的&#xff0c;而且传值会很方便 void Swap(int& left, int& right) {int temp left;left right;right temp; }…

基于Java+Swing+Mysql影院购票系统

基于JavaSwingMysql影院购票系统 一、系统介绍二、功能展示1.用户登陆2.用户订票管理3.电影售票中心4.电影上映管理4.退票记录查询 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看管理员登陆、用户订票管理、电影上映管理、电影售票中心、退票记录查询…

vue的学习

title: VUE 一、Vue简介 1.1 简介 ::: tip Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式的js框架&#xff0c;发布于 2014 年 2 月。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0…

我对运维初学者的几点小建议

我对运维初学者的几点小建议 在此分享一下运维的职业规划和Linux学习的路线。希望给正在做运维工作或者准备入行运维这行的同学一些启发和帮助。 首先在学习Linux之前&#xff0c;我个人其实非常建议先把计算机基础知识学习好的。这些基础十分重要&#xff0c;别看都是一些理论…

使用Lambda表达式对List<Map<String,Object>>中key值相同的Map进行分组合并

现有两张表A表和B表&#xff0c;A表存放的是各省市的认证次数&#xff0c;B表存放的是各省市的申领次数&#xff0c;重点关注dq,cs这两个字段&#xff0c;其他的字段可忽略 A表&#xff08;省市认证次数表&#xff09; B表&#xff08;省市申领次数表&#xff09; 项目中有以下…

qt完整教程

各个组件的意思(功能介绍) Python Qt GUI设计:UI界面可视化组件、属性概述(基础篇—3)-腾讯云开发者社区-腾讯云 qt 如何设计好布局和漂亮的界面。_qt界面_花狗Fdog的博客-CSDN博客 样式表(美化关键)/*灰色*/ Q/*灰色*/ QWidget {background-color: rgb(255, 182, …

MySQL-概述-数据模型SQL简介

数据库&#xff1a;DataBase&#xff08;DB&#xff09;&#xff0c;是存储和管理数据的仓库数据库管理系统&#xff1a;DataBase Management System&#xff08;DBMS&#xff09;&#xff0c;操作和管理数据库的大型软件。SQL&#xff1a;Structured Query Language&#xff0…

汇报方案设计方案规划方案资源下载

标题汇报方案设计方案规划方案资源下载https://wheart.cn/so/home?mdw&tag%E5%AE%89%E5%85%A8文章标签事业单位人事人才信息综合管理系统建设设计报价方案人事系统,人事人才,事业单位,工资系统,职称系统xx纪检委智慧监督平台建设方案汇报.docx建设方案,规划设计,汇报方案营…

【C++】priority_queue使用与模拟实现

认识priority_queue 1、priority_queue(优先级队列)是一种容器适配器&#xff0c;底层是一个完全二叉树的大堆&#xff08;堆总是一颗完全二叉树&#xff0c;根结点最大的堆叫做大堆&#xff1b;根结点最小的堆叫做小堆&#xff09;&#xff0c;头文件在queue中&#xff0c;根…

入侵排查与响应-window和linux版

目录 &#xff08;一&#xff09;关于这方面的一些简单了解 1、我们的电脑为什么会被黑客入侵 2、黑客攻击的方式 &#xff08;二&#xff09;window入侵排查 1、查看异常特征 2、系统账户安全 3、检测异常端口、进程 4、查看启动项、计划任务、服务 5、检查系统相关信…

Spring Cloud微服务治理框架深度解析

在学习一个技术之前&#xff0c;首先我们要了解它是做什么的&#xff0c;我们为什么要用它。不然看再多资料都理解不了&#xff0c;因此我们先来讲解下Spring Cloud Spring Cloud是一套微服务治理框架&#xff0c;几乎考虑到了微服务治理的方方面面。那么接下来具体说下 Spring…

Linux 的常用命令

文章目录 lsllcdpwd编辑简单文件touchcatecho 编辑复杂文件vim mkdirrmcpmvgerppsnetstat总结 ls 查看当前目录或指定目录下的所有文件 ls 什么都不加表示查看当前目录中的内容 ls目录名&#xff0c;就是插卡指定目录下的所有文件。/代表根目录。 注&#xff1a;蓝色的表示目…

【Leetcode】42.接雨水(困难)

一、题目 1、题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例1: 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6…

OpenCV实现一张图片的特定区域上添加另一张图片

#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv;int main( ){Mat image= imread

java并发编程 10:AQS

目录 什么是AQS原理 什么是AQS juc包的结构如下图&#xff1a; AQS就是AbstractQueuedSynchronizer&#xff0c;是个抽象类&#xff0c;实现了自己的一些方法。它是阻塞式锁和相关的同步器工具的框架。很多并发类都是基于它实现的&#xff0c;如&#xff1a;ReentrantLock、Co…

Edge浏览器无法展示Stable Diffusion Control Net插件

Edge浏览器无法展示Stable Diffusion Control Net插件 最近在学习Stable Diffusion&#xff0c;需要使用到Control Net插件&#xff0c;结果通过各种方式安装成功插件后&#xff0c;浏览器页面没有展示ControlNet相关页面&#xff0c;最终换到Chorme浏览器后正常&#xff0c;猜…

连接区块链节点的 JavaScript 库 web3.js

文章目录 前言web3.js 介绍web3.js安装web3.js库模块介绍连接区块链节点向区块链网络发送数据查询区块链网络数据 前言 通过前面的文章我们可以知道基于区块链开发一个DApp&#xff0c;而DApp结合了智能合约和用户界面&#xff08;客户端&#xff09;&#xff0c;那客户端是如…