Window 10下使用zsh的多种体验——ConEmu&Msys2+ConEmu_ChildGUI&Msys2&Mintty+ConEmu&ArchWSL

前言

前些天,按照一个错误的博客进行磁盘挂载把我的Mint给搞崩了,此后花了两三天时间尝试了Manjaro总是无法安装Bumblebee或者Prime。但是更诡异的问题是我在双系统下启动Win10后,Mint或者Manjaro的磁盘挂载就会出问题,显示无法Mount,我寻思我的C盘没有挂载过不应该会出现无法识别sda7的问题,在google了很久之后依然没有好的解决方法,结果就是在双系统环境下启动Win10后我的Linux系统就一定崩掉,根本无法进入,也无法恢复数据,没办法,只能放弃折腾重回Win10了。
重回Win10后,我还是是否怀念Manjaro下的终端,所以希望在Win10下配置一个好用的zsh。
基本要求:

  • 能够正常使用bash
  • 可以使用cuda
  • 可以使用docker

多次尝试大概有以下三种方法:

  • ConEmu和Msys2
  • ConEmu的ChildGUI和Mintty下的Msys2
  • ConEmu和ArchWSL

最后我还是选择了ConEmu+ArchWSL

ConEmu+Msys2

Msys2预览

Msys2可以支持pacman,这样就可以在Win10下利用arch极为丰富的软件源,并且msys2 配套的编译器中有MinGW-64,很完美了。
截图如下:
在这里插入图片描述
GPU正常:
在这里插入图片描述
Win10的screenfetch:
在这里插入图片描述
(Windows的ascii字符画图标好丑,GPU显示的有点问题)

ConEmu配置

我主要参考的是
https://blog.csdn.net/hustlei/article/details/86688175
设置Quake在设置->通用->Quake风格->勾选Quake式向下滑动

使用Ctrl+C和Ctrl+V复制粘贴

安装Clink,https://mridgers.github.io/clink/
解压,修改文件夹名字为clink,复制到ConEmu根目录下,我的是C:\Program Files\ConEmu\ConEmu
勾选Clink,即可
在这里插入图片描述

加速ctrl+`呼出

不知道为什么总是得点两次才能呼出,很烦。
在这里插入图片描述
选中上面的restore inactive wiindow by hotkey可以变快,爽!

Vim的Backspace问题的解决

在.vimrc中添加

set backspace=indent,eol,start
inoremap <Char-0x07F> <c-r>=Backspace()<CR>
inoremap <BS> <c-r>=Backspace()<CR>

func Backspace()
  if col('.') == 1
    if line('.')  != 1
      return  "\<ESC>kA\<Del>"
    else
      return ""
    endif
  else
    return "\<Left>\<Del>"
  endif
endfunc

参考:https://github.com/Maximus5/ConEmu/issues/641

其他设置

  • 配色:xterm,虽然只支持8种颜色(tput colors),但是看起来艳丽一些。

Msys2安装与配置

我主要参考的是
https://hustlei.github.io/2018/11/msys2-for-win.html
其中ConEmu配置Msys2的问题上述博客有问题,ConEmu并不能自动识别Msys2,可安装下面的方法配置。
https://blog.csdn.net/hustlei/article/details/86688160
在这里插入图片描述
启动使用zsh的方法直接把上述的\usr\bin\bash.exe换成\usr\bin\zsh.exe即可

ConEmu的ChildGUI与Mintty下的Msys2

conemu是通过cmd实现的,tmux不能直接打开,在ssh到服务器后使用tmux会出现显示的问题,在刷新后总会出现底部栏重叠,还有光标错位的问题。
使用mintty可以解决tmux的问题。
大致按照上述做法安装完毕ConEmu和Msys2后只需要配置一下ChildGUI

Mintty的任务配置

C:\msys64\usr\bin\mintty.exe -i /msys2.ico -t "%CONTITLE%" "/usr/bin/zsh" -new_console:C:"%D%\msys2.ico"

Mintty利用wintty使用Windows下的工具

mintty不能直接调用Windows API,所以不能直接用Windows下的python、MySQL环境。
使用winpty python可以解决这个问题。
还可以设置alias:

alias mysql="winpty mysql"
alias node="winpty node"
alias python="winpty python"
alias ipython="winpty ipython"
alias psql="winpty psql"
alias redis-cli="winpty redis-cli"
alias ping="winpty ping"
alias ipconfig="winpty ipconfig"

ping, ipconfig避免乱码
参考:https://creaink.github.io/post/Computer/Windows/win-msys2.html

鼠标右键菜单集成

设置->集成->右键菜单集成
如果注册过了,首先反注册
命令:{Msys2::Mintty}
图标文件:C:\Program Files\ConEmu\ConEmu64.exe,0
点击注册
参考: https://blog.xinshangshangxin.com/2015/02/22/ConEmu%E8%AE%BE%E7%BD%AE%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E6%89%93%E5%BC%80/

ArchWSL

在这里插入图片描述

安装与配置

安装这位大佬的方法安装:https://www.yumenaka.net/2019/03/21/windows10_wsl_archlinux/
简单配置一下:https://lengthmin.me/posts/install-arch-wsl/
安装Wintty:https://github.com/mintty/wsltty/releases
集成到Conemu:

C:\Users\gz\AppData\Local\wsltty\bin\mintty.exe -i "C:\Users\gz\AppData\Local\wsltty\wsl.ico" --WSL= --configdir="C:\Users\gz\AppData\Roaming\wsltty"

还是上面的老办法,在设置->启动->任务中新建一个,在下方填入上述命令组

常用工具

网络工具

pacman -S net-tools dnsutils inetutils iproute2

Vim配置

pacman -S vim安装
vim ~/.vimrc粘贴

set t_Co=256
set background=dark 
syntax on 
set nu!
colorscheme molokai 
set mouse=a
nmap <silent> `q <Plug>WslCopy

vim用的人比较多,但是我还是感觉几种模式互相切换有些反人类,我用的多的还是micro

复制到系统剪切板

https://github.com/christianfosli/wsl-copy

Vim配置
set t_Co=257
set background=dark 
syntax on 
set nu!
colorscheme molokai 
set mouse=a
nmap <silent> `q <Plug>WslCopy
xmap <silent> `q <Plug>WslCopy

molokai安装教程很多,一搜就有

Micro安装与配置

micro的github地址:https://github.com/zyedidia/micro
pacman无法安装,只能用yay
之前没用过yay安装的话还得配置一下,安装fakeroot、binutils,否则会安装失败
可以参考这个日本人写的东西https://qiita.com/Hayao0819/items/1d647683bf458d10351a
片假名比较多,中国人理解起来应该没太大问题(反正我看得懂)
我当时是这样做的

  1. 安装base-devel,pacman -S base-devel
  2. 下载fakeroot-tcp
  3. 安装fakeroot-tcp,pacman -U fakeroot-tcp-1.23-1-x86_64.pkg.tar.xz
    fakeroot有点问题,需要使用fakeroot-tcp替代,安装时遇到冲突选择卸载fakeroot。
pacman -S yay
yay -S micro

如果你在root下需要切换到普通用户态su - your_user_name(没有普通用户就创一个)
yay不能在root下安装

复制粘贴

之所以费这么大劲安装micro,就是这个的快捷键跟windows类似,看起来比nano美观得多
按住shift,用鼠标选中文字,ctrl+c就可以复制到系统剪切板,需要安装xsel或者xclip,pacman一下就行了。
复制还是有点bug,有行号时只能复制一行,否则会带上行号,也只能粘贴一页。
但是直接用ctrl+c和ctrl+v还是很爽。

  • 从系统剪切板粘贴:ctrl+shift+v
  • 从本文件粘贴:ctrl+v
  • 从系统剪切板复制: 按住shift鼠标选中后,ctrl+c
  • 从本文件复制:ctrl+c

zshrc配置

export ZSH="/root/.oh-my-zsh"

ZSH_THEME="ys"

ZSH_DISABLE_COMPFIX="true"

plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

source $ZSH/oh-my-zsh.sh

alias python="python.exe"
alias conda="conda.exe"
alias ipython="ipython.exe"
alias nosetests="nosetests.exe"
alias pip="pip.exe"
alias nvidia-smi="/mnt/c/Program\ Files/NVIDIA\ Corporation/NVSMI/nvidia-smi.exe"
alias docker=docker.exe
alias docker-compose=docker-compose.exe
alias proxy="export ALL_PROXY=socks5://127.0.0.1:1080"
alias unproxy="unset ALL_PROXY"
alias ls="sudo ls"
alias jupyter="jupyter.exe"
alias cht="/mnt/c/msys64/home/gz/bin/cht.sh"
alias gz="su - gz"
alias ipconfig="ipconfig.exe"
alias qjup="kill $(pgrep jupyter)"

一些bug

使用Mintty无法杀死所有的Windows程序(比如ping.exe,jupyter.exe等),所以直接安装ArchWSL还是有点问题,下面用UbuntuWSL解决这个问题。

ConEmu+UbuntuWSL的壳+ArchWSL的boottrap

在这里插入图片描述

ArchWSL boottrap安装

参考https://www.bilibili.com/read/cv3258103/
写得十分详细,跟下来基本没有什么问题。

集成到ConEmu

方法一(较为完美)

参考https://twasa.ml/post/wsl/
在设置->启动->任务中新建,命令组填入

set "PATH=%ConEmuBaseDirShort%\wsl;%PATH%" &   %ConEmuBaseDirShort%\conemu-cyg-64.exe --wsl -cur_console:pm   -t zsh -l

在这里插入图片描述
这里可以使用ConEmu的配置而非ChildGUI下使用Mintty的配置(ConEmu的配置更多一些,更灵活)
使用了上述配置后还是有问题,在wsl中运行的Windows 程序无法使用ctrl+C终止。
由于目前WSL不支持Linux原生Docker以及显卡驱动,所以无可避免地使用docker.exe和python.exe在WSL中使用Windows下的程序。但是无法用Ctrl+C终止就很烦,开启了就jupyter notebook就没法停止,调用了notepad.exe就没法关掉,实在令人窒息。
参考GitHub上的issue,有两种解决方法:

  1. Copy script contents to /usr/bin/winrun
  2. Make the file executable using sudo chmod +x /usr/bin/winrun

可以关掉notepad.exe,也可以关掉jupyter notebook。
但是使用winrun ping.exe z.cn没有结果输出,不知道为什么,无所谓了,可以pacman -S net-tools安装Linux下的ping命令,虽然有时候ping错了网址会耗时所以上述的ping.exe不能用有一点影响,但用Linux下的ping替换后问题不大。
其余的,winrun ipconfig.exe也不行,影响不大,ipconfig速度很快,没必要用ctrl+c终止。
在micro、vim中不能直接用ctrl+c,ctrl+v利用系统剪切板复制粘贴,可以这样:shift+左键选择文本可以复制一行(多行会把行号复制进去),alt+左键选择矩形,框住多行就可以多行复制了。
暂时没遇到什么不能忍受的问题,本来Windows下独有的命令行工具都一般般,没必要太过在意。
这种方式不局限于ConEmu,应该同样适用WSLTTY,Terminus,Fluent Terminal,Hyper等终端模拟器。

方法二(在vim中无法使用鼠标定位光标)

ConEmu任务配置的命令组写C:\Windows\System32\bash.exe -cur_console:p5
除了-cur_console:p5外的参数无法使用方向键和鼠标滚动。
但是就算加了这个参数还是无法使用鼠标定位光标。
但是这样可以直接像WSL默认终端一样调用终止命令,不存在无法终止的问题。
唯一难受的就是在vim和micro中无法用鼠标定位光标。
右键集成得改改命令:
命令:{WSL::Arch} -cur_console:p5
图标文件:C:\ProgramFiles\ConEmu\ConEmu64.exe,0
在这里插入图片描述
改右键集成是我翻了半天注册表才琢磨出来的,佛了。
这种方法接近原生,但鼠标还是有点问题。方法一的任务命令组配置应该是最合适的了

结语

对巨硬家的产品,我向来是表示怀疑的。
下次换笔记本争取只装Manjaro,在虚拟机里跑个Win10写写Word什么的就够了
真是太折腾了,从暑假把系统搞崩了,格式化固态硬盘重装系统后丢失了我的Ubuntu后一直探索到了现在,半个学期了,目前的应该是最完美了的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值