# 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

# 目录
- [安装](#安装)
- [详细介绍](#详细介绍)
- [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屏保 |
> 矩阵革命来一波( ◔ ڼ ◔ )

## 桌面软件
### 关于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主要的有点是**好看**与**好用**
### 好看

**左边提示符**
* 当前工作目录
* Git分支,
+2表示暂存区有2个变更文件待提交,
!1表示工作区有1个变更文件待暂存 ,
?1表示工作区有1个未跟踪文件
**中间命令行**
* 对命令行进行语法高亮,诸如字符串,变量等等
* 输入前缀自动展示匹配到的历史命令,按Ctrl+E补全
**右边提示符**
* 上条命令运行结果(成功返回0,失败返回非0,接受信号)
* 上条命令运行时间
* 小齿轮表示有后台命令
* NORMAL提示处于vi-mode(Ctrl+[进入,i退出),可使用类似vi的快捷键,额外的,vi-mode中按V键打开编辑器修改命令行
### 好用
**vi-mode**
* Esc或Ctrl+\[:进入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调试器
终端调试器,程序出错了,可以设置断断点,跟踪变量值等等操作,找出产生非预期结果的代码

* 该配置大部分来自网络,提供了一些额外命令比如`pvector`、`pstring`之类的更好地打印容器元素
* 下载cgdb,一个gdb的wrapper,按 a进入gdb-mode,按Esc或Ctrl+\[进入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里