搭建工作环境
本文是对新电脑安装软件的简单汇总。以Windows为主。
基础环境
Windows相关
Cygwin和Msys2都比较常用,暂时没能体会出区别。轻量开发不需要。
此外还有Windows Subsystem for Linux (WSL),但经常容易出现同一台机器上两个版本的软件这种问题,比较麻烦。
Windows Terminal可以集成多种环境,但是没有什么特别的需求。
以Msys2为例,安装完后执行pacman -Syu
来更新包,可能需要执行两次。此外,要对系统变量做如下设置:
- 增加用户变量
MSYS2_PATH_TYPE
,值为inherit
,否则不会继承系统的PATH。 - 将
msys64\usr\bin
和msys54\usr\local\bin
加入系统PATH。
编程环境
C++ / Java 开发
Python
Windows+Python是一个众所周知的灾难。方便起见还是直接使用Anaconda吧!分别对应了Python2和3的版本。安装时记得勾选加入PATH
中。
首先执行
1 | conda update conda |
进行更新,接下来在Anaconda的目录中分别将python.exe
复制到同目录下python2.exe
及python3.exe
方便调用不同版本。具体python
指向哪一个是根据PATH
中的先后顺序,可以用where python
来查看。同理复制Scripts
文件夹中的pip.exe
及pip-script.py
。调用python
会给WARNING说没有激活conda环境,方法是先conda init <powershell>
更改为当前shell,重启shell后用conda info --envs
找到地址,接着conda activate base
就可以了。
或许需要用
set-ExecutionPolicy RemoteSigned
来提供权限。
推荐安装black来进行Code Formatting。需要用Python3来安装
1 | python3 -m pip install black |
但是装完后black命令也可以用在Python2文件上。
Emacs
最好的编辑器(操作系统)Emacs,目前Windows最新版26.3。
下载并解压后,根据官方的提示执行bin\runemacs.exe
即可。运行bin\emacs.exe
也可以,只是会多出一个黑框。
在命令行下直接运行
bin\emacs.exe
不会多一个命令行窗口。同时支持-nw
选项。
将<folder>\emacs\bin
文件夹加入PATH中,方便直接调用。
在PowerShell或Windows Terminal中查看PATH需要用
$env:PATH
首先要找到Emacs加载配置的地址。用echo ~
来确认。通常在c:/Users/<usrname>/AppData/Roaming/
中。
1 | cd ~/.emacs.d/ |
直接引用
可以直接用别人现成的配置。已有的配置推荐这几个。
Spacemacs
一个开源项目,重点是Emacs与Vim的兼容。首次启动会询问用户更倾向于哪种编辑器方式,以及需要轻量或重量的编辑器。安装方式直接
1 | git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d |
注意备份好自己原先的配置文件。首次安装比较缓慢,后面的效率还是不错的。
此外,作者还推出了一个21天Emacs学习指南,解释的还是比较清楚的。后半部分和Vim关系比较大。
高手配置
Steve Purcell的配置在Github上Star最多(5.3k Stars),应该是业界翘楚了。
1 | git clone https://github.com/purcell/emacs.d.git ~/.emacs.d |
但是在我的电脑上每次打开要加载18秒,太慢了。。。
自己配置
白盒用起来还是更舒服,至少要知道每一块的作用是什么。比较推荐的Reference有:Emacs-China 社区, Emacs-TW 社区, 以及一篇Python社区的文章。
首先建立.emacs.d/init.el
文件。这是emacs读取配置的入口。规范起见,所有的.el
文件开头结尾应该遵循如下规范:
1 | ;;; package --- summary |
同时,为了能在配置时快速找到这个文件,暂时将它绑定到<F2>
。
1 | ;; Fast open init file, bind to <F2> |
文件管理
为了有效管理不同文件,建立一个lisp
文件夹以管理不同的el
文件。
同时在init.el
中加入
1 | (add-to-list 'load-path "~/.emacs.d/lisp/") |
这样后面就可以用(require)
命令来直接引用(provide)
的文件了。
此外可以通过org
来管理,步骤略。
依赖项
最新版本已经集成packages.el
,直接引用即可。安装并配置use-package
,方便其他包的安装。使用auto-compile
确保编译包,并使用最新版本。
1 | ;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
重新启动Emacs并等待初始化。
接下来定义my-packages
变量, 后面需要什么包的话都加在里面统一管理。
1 | (defvar my-packages |
UI配置
更改UI使得界面更加清楚美观。
- 设定编码
1
2
3
4
5
6
7;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; setup coding system
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(prefer-coding-system 'utf-8)
(setenv "LANG" "en_US.UTF-8")
(setenv "LC_ALL" "en_US.UTF-8")
(setenv "LC_CTYPE" "en_US.UTF-8") - 去掉工具栏、菜单、滚动条, 以及minibuffer的滚动条。可以把指针改成竖线,但我习惯方块。
1
2
3
4
5
6
7
8;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; Basic Settings
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; (setq-default cursor-type 'bar)
(tool-bar-mode -1)
(menu-bar-mode -1)
(scroll-bar-mode -1)
(set-window-scroll-bars (minibuffer-window) nil nil) - 打开时最大化,并取消欢迎界面及scratch上的信息。
1
2
3(setq inhibit-splash-screen 1
initial-scratch-message nil
initial-frame-alist `((fullscreen . maximized)))
Tmux
个人感觉Tmux是一个简装Emacs,但是提供了多窗口和独立于ssh session的功能,非常实用。