# DotFiles **Repository Path**: mrbeardad/DotFiles ## Basic Information - **Project Name**: DotFiles - **Description**: My configurations for my Manjaro, like vim, tmux and so on. - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-19 - **Last Updated**: 2021-07-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![screen shot](images/screenshot.png) # 目录 - [安装](#安装) - [详细介绍](#详细介绍) - [Gnome桌面环境](#gnome桌面环境) - [全局按键](#全局按键) - [窗口操作](#窗口操作) - [截图与录屏](#截图与录屏) - [文件管理器操作](#文件管理器操作) - [下拉式终端操作](#下拉式终端操作) - [桌面软件](#桌面软件) - [关于deepin-wine系桌面软件中文输入问题](#关于deepin-wine系桌面软件中文输入问题) - [Grub启动加载器](#grub启动加载器) - [SSH远程连接服务器](#ssh远程连接服务器) - [zsh命令行Shell](#zsh命令行shell) - [好看](#好看) - [好用](#好用) - [踩过的坑](#踩过的坑) - [tmux终端复用器](#tmux终端复用器) - [踩过的坑:](#踩过的坑-1) - [xfce4-terminal终端](#xfce4-terminal终端) - [gdb调试器](#gdb调试器) - [chfs](#chfs) - [fcitx5-rime输入法](#fcitx5-rime输入法) - [neovim编辑器](#neovim编辑器) # 安装 **小贴士**:在重装之前,一般需要你需要做两件事 1. 修改 `/etc/sudoers` 与 `/etc/sudoers.d/*` ,使wheel组的`sudo`命令可执行所有命令且无需密码, 并将平时使用的普通用户加入wheel组; 2. 确保你的网络环境OK,注意不要更改`/etc/pacman.conf` 。 准备妥当后,执行 ```sh git clone --depth=1 https://github.com/mrbeardad/DotFiles ~/.local/DotFiles cd ~/.local/DotFiles ./init.sh ``` # 详细介绍 [init.sh](init.sh)脚本中已经写了注释,可以直接打开看看执行流程,不懂bash语法也无关系哦 ## Gnome桌面环境  Gnome作为最流行的DE之一,总是少不了争议,卡是确实有点卡,不知道是Xorg的锅还是Gnome的(或者鱼与熊掌都下锅?)。 开源的事儿,怎么能甩锅给他们呢,那还是Fxxk Nvidia吧。我没用过其它桌面环境,就不多评价了。 > **注意**:Super也就是Win ### 全局按键 | 按键 | 功能 | |---------------------------------|---------------------------| | Super | 打开窗口总览 | | Super+A | 列出本地所有已安装应用 | | Super+num | 启动底部工具栏第num个软件 | | Super+E | 打开文件管理器 | | Super+S | 打开系统设置 | | Super+C | 打开通知窗口 | | Super+R | 打开运行窗口,`r`重启X | | Super+L | 锁屏 | ### 窗口操作 | 按键 | 功能 | |------------------------------------------------|--------------------------| | Super+D | 显示桌面 | | Super+H | 隐藏窗口 | | Super+Q | 关闭窗口 | | Super+ | 最大化窗口 | | Super+ | 还原窗口大小 | | Super+ | 当前窗口左分屏 | | Super+ | 当前窗口右分屏 | | Super+Y | 开启/关闭自动分屏模式 | | Super+tab | 切换窗口 | | Ctrl+Alt+↑/← | 上个工作区 | | Ctrl+Alt+↓/→ | 下个工作区 | | Super+Shift+ | 将当前窗口移至上个工作区 | | Super+Shift+ | 将当前窗口移至下个工作区 | ### 截图与录屏 | 按键 | 功能 | |---------------------------------------------------|------------------------------| | Ctrl+Alt+R | 录屏 | | Ctrl+Alt+A | 截图 | | PrtSc | 保存桌面截图到~/Pictures | | Ctrl+PrtSc | 保存截图到系统剪切板 | | Super+PrtSc | 保存当前窗口截图到~/Pictures | | Ctrl+Super+PrtSc | 保存当前窗口截图到系统剪切板 | | Shift+PrtSc | 保存选择区域截图到~/Pictures | | Ctrl+Shift+PrtSc | 保存选择区域截图到系统剪切板 | ### 文件管理器操作 | 按键 | 功能 | |-----------------------------------------------|---------------| | Ctrl+A | 选择全部 | | Ctrl+C | 复制 | | Ctrl+X | 剪切 | | Ctrl+V | 粘贴 | | Ctrl+F | 搜索 | | Ctrl+Z | 撤销 | | Ctrl+Shift+Z | 重做 | | Ctrl+H | 显示/隐藏文件 | | Ctrl+D | 固定到快捷栏 | | Ctrl+T | 打开新Tab | | Ctrl+W | 关闭Tab | ### 下拉式终端操作 | 按键 | 功能 | |-----------------------------------------------|---------------------| | Alt+Enter | 下拉或隐藏终端窗口 | | F11 | 切换全屏状态 | | Ctrl+Shift+C | 复制 | | Ctrl+Shift+V | 粘贴 | | Ctrl+Shift+T | 切换透明度 | | Ctrl+Alt+H | htop系统资源监控 | | Ctrl+Alt+G | bashtop系统资源监控 | | Ctrl+Alt+I | iotop磁盘IO监控 | | Ctrl+Alt+M | cmatrix屏保 | > 矩阵革命来一波( ◔ ڼ ◔ ) ![cmatrix](images/matrix.gif) ## 桌面软件 ### 关于deepin-wine系桌面软件中文输入问题 这两移植的软件在第一次运行时可能会报错,重启一次就行了。 若无法输入中文的话,检查你的机器是否支持中文:`locale -a`。 若无`zh_CN.UTF-8`则打开/etc/locale.gen取消注释中文那行再运行`sudo locale-gen` ## Grub启动加载器  系统启动加载器(bootloader),由固件启动并加载*Linux Kernel*并为其提供参数, 如果你装的双系统,则需要它提供选单来在开机是决定进入哪个OS。 * 安装漂漂亮亮的主题 * 现在你只需要在`/boot/grub/user.cfg`中定义变量`GRUB_PASSWORD`为`密码`即可为grub设置密码来防止篡改选单内容 ```sh # 输入两次密码,此命令会输出加密后的密码 $ grub-mkpasswd-pbkdf2 # 然后把密码写入/boot/grub/user.cfg,没有该文件就自己建一个 $ vim /boot/grub/user.cfg # 最后/bot/grub/user.cfg中应该设置成这样 GRUB_PASSWORD=grub.pbkdf2.sha512.一长串密码 ``` ## SSH远程连接服务器  安全外壳协议,OpenSSH是它的一个实现。 有了它你就可以安全、方便地远程连接你的主机,连上后取得你的shell,就像在本地登录一样。 它通过[非对称加密技术](https://github.com/mrbeardad/SeeCheatSheets/blob/master/notes/bitcoin.md)为你和主机之间建立安全隧道,故**公私钥对**是必不可少的。 当然你可以使用你的用户密码登录而不用密钥,如果你的主机暴露在互联网中那当然是不推荐的。 * `~/.ssh/ssh_config`,用于git通过ssh协议链接github与gitee > 这个你得自己把`ssh/ssh_config`复制到你的`~/.ssh`下,因为这是我自己的配置, > 你得自己创建**公私钥对**才能用,若不知道可以google,也可以用命令`$ see ssh`查看 * `/etc/ssh/sshd_config`,用于手机ssh链接电脑,端口改为50000 > 本来想设置只允许密钥链接的,结果我手机上用的**JuiceSSH**,它生成的公钥电脑上无法识别, > 电脑上生成的私钥它又无法识别。要是有万能的网友朋友知道,提个issue呀:smile: ## zsh命令行Shell 代替**bash**,强有力的生产工具,当然写脚本一般还是用bash 相较与bash,zsh主要的有点是**好看**与**好用** ### 好看 ![mzsh](images/zsh6.png) **左边提示符** * 当前工作目录 * Git分支, +2表示暂存区有2个变更文件待提交, !1表示工作区有1个变更文件待暂存 , ?1表示工作区有1个未跟踪文件 **中间命令行** * 对命令行进行语法高亮,诸如字符串,变量等等 * 输入前缀自动展示匹配到的历史命令,按Ctrl+E补全 **右边提示符** * 上条命令运行结果(成功返回0,失败返回非0,接受信号) * 上条命令运行时间 * 小齿轮表示有后台命令 * NORMAL提示处于vi-mode(Ctrl+[进入,i退出),可使用类似vi的快捷键,额外的,vi-mode中按V键打开编辑器修改命令行 ### 好用 **vi-mode** * EscCtrl+\[:进入vi-mode,可以使用vi形式的快捷键更方便的修改命令 * /:搜索历史命令 * v:按快捷键v可打开`$EDITOR`编辑命令 > **命令** * 提供了大量的命令别名,其中最主要的就是git的命令别名 * `r`:重复上次命令 * `x`:该命令可以智能解压各种压缩包 * `o`:`xdg-open`的别名,用于使用默认图形应用打开目标文件 * `j`:该命令会根据你`cd`的频率,智能、模糊化地跳转到目标目录 * `f`:该命令启动[fzf](https://github.com/junegunn/fzf)并自动跳转对应目录 * `fuck`:该命令帮助修改上次错误的命令,解气由实用,提高祖安手速 > ### 踩过的坑 * 开启`vi-mode`会导致`history-substring-search`失效。 解决办法是手动设置映射 * 使用`syntax-highlight`会让终端复制极其之慢,原因是该插件会对每个复制的字符进行检测。 解决办法是给该插件设置一下 ## tmux终端复用器 终端分屏工具和环境保护工具: * 首先是分屏: 如果只是在本地登录,那这相较于终端模拟器的分屏没有啥区别, 但如果你是通过ssh连接远程主机的,那你就很需要它了,因为tmux分出的屏都是在同一个session中, 不然你得重新再用ssh连接主机然后再同时进行多个前台任务。 * 然后是环境保护: 使用C/S模型,你所做的操作都由tmux服务端接管,当你意外退出或断线时,你的任务都会被tmux保留, 你只需重新用ssh连接主机在连接tmux即可回复现场,而不用再一个个的打开工作窗口,甚至丢失一些进度 默认把状态栏啥的都关了,你要不确定是不是在tmux里,就按AltW+w试试 * **使用方法:** > AltW 为快捷键前缀,**以下快捷键会省略写出前缀** * pane操作: * s:水平切分panes * v:竖直切分panes * x:关闭当前pane * z:最大化该pane或恢复大小 * 方向键:跳转到该方向的pane * q:选择一个pane * Ctrl+o:交换pane * !:新窗口打开该pane * window操作: * b 上一个window * n 下一个window * session操作: * d:卸离会话(可通过`tmux a -t session-name`重新恢复) * w:预览整个会话窗口 * Ctrl+S:保存会话到磁盘文件 * Ctrl+R:从磁盘文件恢复会话 * copy模式: * \[:进入copy-mode * Space:选取(copy-mode) * Ctrl+V+Space:块选取(copy-mode) * /:搜索(copy-mode) * Enter:复制(copy-mode) * p:粘贴 * 其他操作: * R:重载配置,某些配置重载是没用的,需要重启tmux服务 * ::命令模式 * h:打开htop * g:打开bashtop * r:打开ranger * f:打开fzf * m:打开cmatrix ### 踩过的坑: * 按键序列被截获并更改,导致vim里面的映射失效 * 开启终端真色 * 开启`undercurl`并支持其特殊颜色 * 如果你的neovim剪切板使用的是`xsel`,有时重启X是会导致其失效,因为`$DISPLAY`环境变量在重启X时已经更改了, 而neovim不知道,当你在tmux运行neovim的时候就会出现这bug,因为tmux也不知道`$DISPLAY`变了,而neovim以致被它接管着, 所以解决办法就是重启tmux,`tmux kill-server`把tmux服务杀了在重启。所有在终端启动图形程序的操作都会有这问题 ## xfce4-terminal终端 现在分析一波[xfce4-terminal](https://github.com/xfce-mirror/xfce4-terminal)与[alacritty](https://github.com/alacritty/alacritty)的区别: * alacritty优点: * GPU加速是它的卖点,最快的终端模拟器,莫的之一 * 可以取消 顶栏 的显示,看起来更加清爽 * 可以对**Regular** **Bold** **Italic**三种Style使用不同字体,这是非常nice的, 特别是在vim下开gruvbox主题就会有**Bold** Style区分,两种字体看起来特别清晰 * alacritty缺点: * 不支持fcitx5单行模式,这是因为它没用gtk也没用qt * 没有响铃警报,只有可视铃,就是本该响铃的时候屏幕闪一下,可以配置闪的那下的颜色 > 在官方的issue下看到了一个响铃的issue和merge,但是还是没配置出来 > 当然这一条其实无伤大雅,可视铃已经够用了,而且实在要铃声可以配置tmux, > 我把我的tmux.conf里有关这个的给注释了,有兴趣可以看看 * 中文字体丑陋,但是终端下选字体肯定首先考虑西文字体呀 * emoji字体无法显示: 其实这最后三条都与alacritty没用使用gtk有关,我的DE是gnome,主打gtk, gtk应用搜寻字体时会由fontconfig安排字体回滚顺序,若在应用使用的字体中若没有搜索到对应字体, 则会使用在其他字体中搜索,所以在gtk应用我可以同时拥有好看的中文字体与西文字体, 还有大量大量的**emoji**字体  综上,为了弥补alacritty的缺点,我需要找一个基于gtk的终端模拟器。 同时,为了保留其优点2,我需要在一众gtk TE中选择能够取消顶栏的; 为了保留其优点3,我需要合并字体([fonts目录](fonts)),以让**Regular**、**Bold**与**italic**使用不同字形; **当 !当 !当 !当 !** **Xfce4-terminal**满足所有需求,童叟无欺。配置在xfce4-terminal目录下,与guake一样,会自动运行tmux ## gdb调试器 终端调试器,程序出错了,可以设置断断点,跟踪变量值等等操作,找出产生非预期结果的代码 ![gdb](images/gdb.png) * 该配置大部分来自网络,提供了一些额外命令比如`pvector`、`pstring`之类的更好地打印容器元素 * 下载cgdb,一个gdb的wrapper,按 a进入gdb-mode,按EscCtrl+\[进入vi-mode,一下为vi-mode中的快捷键 * /?快速搜索 * :进入命令模式 * space设置断点 * [更多gdb命令](https://github.com/mrbeardad/SeeCheatSheets/blob/master/notes/devtool.md) 真正调试的话,脚本下载了更好用的[gdbgui](https://github.com/cs01/gdbgui), 里面可以使用gdb命令,所以学好gdb命令很有必要 ## chfs [一个小型局域网web](http://iscute.cn/chfs),方便手机与电脑传文件,当然用wine.qq也很方便,不过wine.qq没法在局域网共享资源吧 * `init.sh`默认安装并设置了开机自动启动它,使用`ip a`查看主机的ip地址,然后用浏览器访问就ok,端口是50001 ## fcitx5-rime输入法  fcitx5是一个输入框架。Rime是一个输入法引擎,高度自定义。 Linux称作中州韵,Windows小狼毫,Mac鼠须管。作者文化人,仰慕!  开启了**全拼**、**双拼**与**英文**,默认双拼。 修改`~/.local/share/fcitx5/rime/default.custom.yaml`中的顺序即可更改默认方案。 常用快捷键: | 按键 | 功能 | |-------------------------------|--------------------| | Ctrl+\` | 选单 | | Shift_L | 切换中英文 | | Ctrl+. | 切换中西文标点符号 | | Ctrl+; | 系统剪切板 | | \` | 笔画反查 | 默认提供了几款皮肤,可用fcitx5配置工具修改,若不合口味则可利用[ssfconv](https://github.com/fkxxyz/ssfconv)转换搜狗输入法的皮肤  **注意**:词库需要由`yaml`格式转换成二进制格式,有时会重新执行这一过程,需要点时间 ## neovim编辑器 vim/neovim是现在最流行的编辑器之二。 通过编写脚本与安装插件,可以让双手打字有飞一般的感觉 这个配置单独一个仓库,[传送门](https://github.com/mrbeardad/SpaceVim) vim目录下的配置是以前用vim是自己搭的,现在转neovim了,并把配置都转移到了spacevim里