初装系统,初装软件安装,搭建开发环境等的步骤。重装备用。会持续更新。
目前(2023)包括mac zshell,vim,git及常用软件。这次比较折腾了一下的是vim主题,忍不住跑偏。
安装 homebrew
因为被墙的关系,很多文章记录的都行不通。故记录。
-
官网下载,步骤点进去有
-
如果
ping github
不通,就要改host -
在终端用vpn下载方法:
- 选择clashX的“复制终端代理命令”,黏贴到终端运行
- 运行完了再进行步骤1
* 此命令关掉此终端就没了
-
如果遇到错误命令
error: Not a valid ref: refs/remotes/origin/master
运行
export HOMEBREW_NO_INSTALL_FROM_API=1
brew 一些命令的说明
brew list # 列出通过brew安装的所有包
brew list go # 查看go实际安装的路径
>> /usr/local/Cellar/go/1.21.6/bin/go
>> /usr/local/Cellar/go/1.21.6/bin/gofmt
>> /usr/local/Cellar/go/1.21.6/libexec/api/ (24 files)
...
>> /usr/local/Cellar/go/1.21.6/libexec/ (6 files)
brew --prefix # brew本身的安装路径
brew --prefix go # 显示出来是软链,指向当前激活的go版本
>> /usr/local/opt/go
终端设置和dotfiles文件
文档管理
这段是第一段,但是是后面补的。当各种文件配置越来越多,就会需要一个统一的规范将这些配置文档管理起来。也有很多学名,此文件夹一般叫做dotfiles
。 意思就是里面放置了各软件的配置文件,包括shell zsh/bash,vim,等等一些配置。这样统一托管起来,一键拉下就可以在不同的系统环境上使用熟悉的配置。
比较系统的介绍是这篇:使用 GNU stow 管理你的點文件
我参考了许多,综合了一下,目前的方案是这样。
dotfiles:
– init.sh # 初始化shell,启动设置以及source prompt.sh 和 config.sh,如果当前是zsh,source zsh.zshrc,如果是bash,目前还没用到,就先source ~/.bashrc
– prompt.sh # 放prompt提示符样式的配置,zsh和sh都可以
– config.sh # 放普通的通用设置,颜色啊历史啊,以及export各文件path。这下就没有用.zshenv这个文件了。
– zsh.zshrc # zsh专用配置,分出此脚本因为绑定热键的时候发现zsh和bash语法又不一样。目前配了一些快捷键,主要是想用前缀查找历史命令
– init.vim # 和init.sh对应,初始化vim配置。但目前还没有太多功能需求,所以都写在这里面了。
– bootstrap.sh # 运行一下,把init.sh 添到~/.zshrc (bash是~/.bashrc)里去,把init.vim 添到 ~/.vimrc里去。
配置文件的注意点
- 此时(2023年)之后mac默认shell是zsh。查看
echo $SHELL
(需大写)。
而root的shell是sh,且没有软链到bash 。查看-lh /bin/sh
- 以前一般bash的默认配置在
~/.bashrc
里,mac的shell是zsh的话,用~/.zshrc
。
普通bash和zsh这两者,不登陆模式也加载,但是每次开新shell都会加载,多了启动会慢。
这两者还分别有对应文件~/.bash_profile
和~/.zprofile
。这两个只初始加载一次,但需要登陆。 - 本机(普通和root都)初装没有
.zshrc
,也没有.bash_profile
和.bashrc
。 - 现在一般都只留rc系列,即 mac默认配置shell的话,普通用户配置
~/.zshrc
指向/User/[USERNAME]/.zshrc
,root用户(bash版)配置~/.bashrc
指向/var/root/.bashrc
。 ~/.zshrc
不分登不登陆。
~/.bashrc
,如果只有它的话就都读它,如果还存在~/.bash_profile
,且是登陆方式,就会跳过/.bashrc
。- 但是root的sh初始化是POSIX模式,为了兼容。只初始化尽可能少的内容,只有$ENV变量扩展而得到的文件,其他文件通通不执行。所以相当于上一条那些文件都没有的样子,所以命令行启动项是这样子的:
因为sh不是bash,不会加载sh-3.2#
/etc/bashrc
来规范PS1
的变量。
且由于sudo su
过来什么都不执行,所以source各种下次再开也没用。
环境语言
-
在iTerm2里面,profile-terminal下的
Set locale variables automatically
去掉。 -
此时默认locale就为空了,那么再
export LANG="zh_CN.UTF-8"
,考虑到语言是全局设定,在/etc/profile
里添加此设置。 -
此时vim编辑时中文乱码,在
~/.vimrc
中添加set termencoding=utf-8 set encoding=utf8 set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030
后面配置文件改成
[mypath]/init.vim
了,在~/.vimrc
中source。
如果后面vim配置文件多了,再拆分init.vim忽然又ls乱码了,source了一下
etc/profile
。为啥要手动source?
原来是因为zsh不会加载此文件,于是改成将LANG
的设置添入/etc/zshenv
,因为搜了一下,这个文件在交互/不交互各种模式都会加载。 -
最后在git的时候,文件名里的中文也不能显示,敲命令
git config --global core.quotepath off
shell设置
搜索了一圈,拒绝ohmyzsh,太重了,所以后面的配置都是自己弄的。但是以下这三个官方插件,权衡很久还是很有必要装一下。
- zsh-autosuggestions # 自动补全
- zsh-syntax-highlighting # 代码错误高亮
- zsh-history-substring-search # 前缀搜索
在终端运行:brew install [插件名称]
要source的path是:"$(brew --prefix)/share/$pkg/$pkg.zsh"
。
其中 $pkg是包名字。
$(brew –prefix)是brew的安装路径。*这里不能直接取包路径,因为包安装路径和它source的路径还不一样。
shell设置复杂的多。现在已经有三个文件,$HOME/.zshrc
的本机文件。给所有通用的配了init.sh文件,放在/Users/config/
下面,终端的样式prompt配置单独写了一个prompt.sh
也放在这里。最后因为热键绑定zsh和sh又不一样,最后又单独分离出一个zsh.zshrc文件出来写专门zsh的配置,给init.sh只留下通用的启动项。
目前方案是,单独本机的配置先放在~/.zshrc
中,它source init.sh
,which放一些公共的设置,init.sh
再source zsh.zshrc
和 prompt.sh
,which设置zsh的配置和终端外观。等我思考一下如何从github上将它们一键布置。
目前~/.zshrc的设置只有source init.sh和 各语言的alias和export path。
init.sh是一些通用配置,目前有color,history大小,启动propmt和zsh专有配置。
zshrc和prompt单独说。
zshrc
先阅读 archwiki-zsh
zsh.zshrc的热键映射语法和sh不一样,所以单独分出来。这边绑热键,涉及键盘键位、iterm设置,终端设置,所以绕了好久。
补:
Zsh 使用自带的 zle 代替 readline,并且不会读取 /etc/inputrc 或者 ~/.inputrc。 Zle 有 emacs 和 vi 两个模式,默认根据环境变量 $EDITOR 来决定模式,为空/默认为 emacs 模式。bindkey -e 或者 bindkey -v 来手动指定模式。
首先是键盘,目前是宁芝x99(嘿嘿),先设置了mac布局。
然后下载了karabiner,主要在这里改键盘热键。
主要是我还是想用win的ctrl+cv复制黏贴,短手caps用不了一点,默认的大拇指折进去也费劲。且同时win和mac的cmd和alt好像换了键位,导致涉及三个键的更改,后面配屏幕显示和实际按键的时候已经晕了,又从头开始捋。
一层一层加。先在mac系统配键盘快捷键→修饰键那里,互换ctrl和cmd。这一层是为了用ctrl+cv来复制黏贴。
💡 这里要注意的是,如果使用了karabiner,在mac设置里,要选karabiner键盘,选物理键盘改键没用。
然后这时cmd和alt的键位是错的,再进入karabiner,互换左comd和左opt(alt),以及右opt和右ctrl又反了不知为何,这里也换过来。
复杂映射目前配了鼠标的侧键复制黏贴(感觉上键有点费劲);改了用left_shift切换输入法;用shift+esc代替cmd+backspace来删除文件夹中的文件;将caps_lock映射成cmd+ctrl+opt+shift。
caps映射这里本来我用caps映射了fn的,但是很容易误触,因为我打开了fn唤出表情符号,而且这四个+其他键还可以组好多快捷键,所以后面换成这个了。但是我的fn又没地方放了,宁芝键盘没有单纯的fn键,fn+F1这些就很难按。
💡 这里要注意的是,我已经换了ctrl和opt,所以删文件的json原本是opt的地方要改成ctrl。
顺便在karabiner重新配了f1-f12,宁芝默认音量和播放那些键和系统默认的不一样,改一下。并打开as standard function keys,意思是音量和播放这些键要配合辅助键使用。默认的f1-f12这些,又回mac设置里绑了启动台,调度中心这些。
mac默认没有json,所以浅记录一下目前弄的mac系统快捷键
命令 | 键盘按下 | 屏幕显示 | 其他 |
---|---|---|---|
打开/关闭程序坞 | ctrl+esc | ⌘⎋ | |
显示启动台 | F1 | F1 | |
聚焦搜索 | F2 | F2 | |
打开/关闭台前调度 | F9 | F9 | |
应用程序窗口 | F10 | F10 | |
调度窗口 | F11 | F11 | |
显示桌面 | F12 | F12 | |
截屏 | alt+1 | ⌥1 | |
截屏内容拷到剪贴板 | alt+2 | ⌥2 | |
全屏拷到剪贴板 | alt+3 | ⌥3 | |
服务→通用→newfile | caps+t | ⌃⌥⇧⌘T | 自己建的,新建文件,建法请搜索 |
服务→文本→半全繁简 | cmd+拼音首字母 | ⌃拼音首字母 | 起作用了一下就失灵了不知为何 |
服务→下面想唤出应用笺条和iterm | caps+字母 | ⌃⌥⇧⌘字母 | 应用想统一用ctrl,但不起作用不知为何 |
访达搜索窗 | ctrl+shift+f | ⇧⌘F |
其他的目前还没懂啥意思。
====
自此可以在zsh.zshrc里配置快捷键了,其实我想记的也不多,就是想实现ipython中上下翻历史前缀匹配,和按word和line移动和删除。但是❗️要时刻注意的是,映射的时候,^名字是叫ctrl,但是alt映射上去的。反之一样。
这里面涉及到两个地方,三个概念。两个地方是指iterm2的preference,和终端的zshrc文件设置。三个概念是指,需要将键盘的按键,按键所指的ascii(之类的)码,以及需要绑定的动作,都对应起来。
为什么要这么多,因为终端bindkey命令的字符,竟然系统跟系统都能不一样,照别人的配完了有的都不起作用。
而来到iterm配置,send映射的又有两种,一种是send esc+[让你填],这里面填的码和终端的部分一样。一种是直接send hexcode,这个code我翻了很久也不知道它如果用终端代码写对应的是什么。
终端查看已有的映射 敲命令bindkey
,结果like:
"^[[3~" delete-char
"^[[A" up-line-or-history
"^[[B" down-line-or-history
"^_" undo
" "-"~" self-insert
"^?" backward-delete-char
"\M-^@"-"\M-^?" self-insert
"^U" kill-whole-line
"^X^U" undo
结合iterm的key,esc写死了,delete-char为[3~
,可知esc的码为^[
(虽然不知为什么,并没按下esc键啊),不过照猫画虎可以模仿一些命令。但是不以^[
开头的就不懂了。
又搜了一阵,开始使用命令【我按下的是】cmd+v
,然后输入想看的组合键,看屏幕上显示什么,就是该组合键的码。发现^也大概是ctrl,(但我要按cmd键),譬如^U我就按了cmd+U。但是我按ctrl+←
还是什么也出现的是^U
,而且我在zshrc里bindkey它也不起作用。真的很confuse。还有很多比如ctrl+backspace
用这个方式不显示。
后面知道这个码叫做 CSI序列
。
按 ctrl+v
或输入cat > /dev/null
,之后输入想查的按键可得。
最先确定和有效的是 backward/forward-word/line,上下左右键底层对应的是ABCD。ctrl(我按下alt)应该对应^[[1;5
,alt(我按下ctrl)应该对应^[[1;3
。但其中alt【按键,非显示】没有对应,于是在iterm设置里的key,send了esc+[1;5D
/[1;5C
map上alt【按键,非显示】+←/→
我私自许cmd对应^[[1;4
,不过没绑。
iterm里有两处可设置key,我设在全局里。profile的按终端设置处,先配置了Natural Text Editing
,再适当删减冲突。
相应zshrc里写
bindkey '^[[1;3D' backward-word # [ctrl-left]
bindkey '^[[1;3C' forward-word # [ctrl-right]
bindkey '^[[1;5D' beginning-of-line # [alt-left]
bindkey '^[[1;5C' end-of-line # [alt-right]
然后解决上下键查历史前缀匹配,^[[A
是上,这个比较好确认。在上面下载history插件的基础上,唯一迷惑了一下的就是history-substring-search-*
和 history-beginning-search-*
有什么区别。原来前者是前缀匹配,后者是全string中任意匹配。
此部分代码如下:
autoload -U up-line-or-beginning-search
autoload -U down-line-or-beginning-search
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "^[[A" up-line-or-beginning-search # Up
bindkey "^[[B" down-line-or-beginning-search # Down
然后又各种搜索,发现一张唯一看起来靠谱的表。copy过来。
key[F1] = '^[[[A'
key[F2] = '^[[[B'
key[F3] = '^[[[C'
key[F4] = '^[[[D'
key[F5] = '^[[[E'
key[F6] = '^[[17~'
..
key[F10] = '^[[21~'
key[F11] = '^[[23~' # 缺22
key[F12] = '^[[24~'
key[Shift-F1] = '^[[25~'
key[Shift-F2] = '^[[26~'
key[Shift-F3] = '^[[28~' # 缺27
key[Shift-F4] = '^[[29~'
key[Shift-F5] = '^[[31~' # 缺30
..
key[Shift-F8] = '^[[34~'
key[Insert] = '^[[2~'
key[Delete] = '^[[3~'
key[Home] = '^[[1~'
key[End] = '^[[4~'
key[PageUp] = '^[[5~'
key[PageDown] = '^[[6~'
key[Up] = '^[[A'
key[Down] = '^[[B'
key[Right] = '^[[C'
key[Left] = '^[[D'
key[Bksp] = '^?'
key[Bksp-Alt] = '^[^?'
key[Bksp-Ctrl] = '^H' console only.
key[Esc] = '^['
key[Esc-Alt] = '^[^['
key[Enter] = '^M'
key[Enter-Alt] = '^[^M'
key[Tab] = '^I' or '\t' unique form! can be bound, but does not 'showkey -a'.
key[Tab-Alt] = '^[\t'
A = 'a' (duhhh)
A-Shift = 'A' (who would have guessed?)
A-Alt = '^[a'
A-Ctrl = '^A'
A-Alt-Ctrl = '^[^A'
A-Alt-Shift = '^[A'
A-Ctrl-Shift = '^A' (Shift has no effect)
/-Shift-Ctrl = Bksp = '^?'
[-Ctrl = Esc = '^['
M-Ctrl = Enter = '^M'
I-Ctrl = Tab = '^I' or '\t'
# Actually that is ASCII DELete not Backspace. Backspace is ^H ... but
of course the Del key might send any of ^? or ^H or ^[[3~ etc., and
the key labeled Backspace often sends ^?.
它还解释了为什么缺以及
for some reason if you use 'bindkey' within a script (as in '.zshrc') '^[' must be replaced with '\e'
bindkey -s '^[[[A' 'my-command \C-m'
bind 'F1' to 'my-command' and execute it (the '\C-m' simulates the 'Enter' key).
in '.zshrc':
bindkey -s '\e[25' 'my-command1 ; my command2 \C-m'
bind 'Shift-F1' to 'my-command1' followed by 'my-command2' and execute both of them.
回来试试\e的。
可惜它没写del的。我恨。
由于 ctrl+backspace
为 ^H
,直接写在终端我这不起作用,在iterm的send esc处又无法分解,bindkey里现有的码又不知道它代表什么键。只能转向iterm的send hexcode。
浅收下最终映射表:
后面用着调整了回删
alt+backspace删word更顺手一点。
意义 | hex code | CSI 序列 | 我附加的weight【按键版】 |
---|---|---|---|
往前删一个词 | 0x1b 0x08 | alt + backspace | |
往后删一个词 | 0x1b 0x64 | alt + del | |
往前删到头 | 0x17 | ctrl + backspace | |
往后删到头 | 0x0b | ctrl + del | |
删整行 | 0x15 | cmd + backspace | |
左移一个词 | 0x1b 0x62 | ^[[1;5D | ctrl + ← |
右移一个词 | 0x1b 0x66 | ^[[1;5C | ctrl + → |
移至行首 | 0x01 | ^[[1;3D | alt + ← |
移至行尾 | 0x05 | ^[[1;3C | alt + → |
undo | 0x1f | ||
redo | 0x18 0x1f |
最后我的整个删除都是直接在iterm里配的没有用bindkey。
上面的还是得更新一下。
此外cmd+c是kill进程,ctrl+c是copy,因为我的ctrl按下去是cmd。
用stty -a
可查看kill进程快捷键
最后搜到了权威的wiki定义:ANSI转义序列,部分相关。
还要研究一下ctrl+z 的undo和停止进程的冲突问题。
参考:
依云的zsh tag
我是如何让我的 Zsh 像丝般顺滑的
在不借助oh-my-zsh的前提下进行Zsh配置
如何使用 shell(3/3)—— 配置 zsh
配置:
https://github.com/Aloxaf/dotfiles
https://github.com/skywind3000/vim/blob/master/etc/zshrc.zsh
https://github.com/goreliu/zshguide/wiki/.zshrc
https://github.com/QuarticCat/dotfiles/blob/main/zsh/.zshrc
https://github.com/ckelsel/vim-init/blob/master/init.vim
M1芯片的mac: omz reload 97bcde
prompt
单独说一下prompt终端样式配置。目前放在 [mypath]/prompt.sh
下,里面zsh,bash都有配。从 [mypath]/init.sh
内source。
我需要的:
不要ohmyzsh。简单,不要复杂图案,颜色不要跳。
错误提示;
git提示,韦易笑主张不要但我还是加上;但是是自己写的
单行,韦易笑又主张不要但是我看依云两行也挺好看的,她要命令起始位置相同,方便看;
path除了最后一个其他缩进;
几个坑点:bash和zsh语法又不一样;mac切换root变成了sh环境,最后也简单配了一下。但是其他linux适配还是等有机器再说;语法真的好难懂。
目前我的bash_profile.sh里面都是配置终端样式的内容。
我的终端样式:
表示是mac,输错命令会变红;
路径折叠,节省行空间;
添加git提示;
右端添加显示时间;又更新了
背景是黄其淋gucci官摄,加了透明度。
好好看呀。
一些参考资料:
vim的设置
目前设置在init.vim
中。
vim和sh编辑器不一样 注释符号是👉 "
vim的设置退出后不用source。
这个blogVim中的按键映射科普的比较好。
这个blogMy Vim是唯一见的写的比较好的,配置不是复制黏贴。
其他都不如这两个。
记录一下坑:
首先除了必要的文字编码、语法高亮、缩进等等内容,用vim比较少,我目前最想设置的还是跟shell一样的复制黏贴,左右移动和删除。但是始终两个地方很迷乱。
一是vim的寄存器太多,状态也多,什么visual、insert,试了好多命令都没法达到在所有状态下选中可复制黏贴。最后成功的设置是这样的:
set mouse=v
set clipboard=unnamed
" CTRL-A Select all
noremap <快捷键> gggH<C-O>G “ggVG是光标自动移到行尾
" CTRL-X Cut
inoremap <快捷键> "+x
" CTRL-C Copy
noremap <快捷键> "+y
inoremap <快捷键> <C-o>"+y
" CTRL-V Paste
noremap <快捷键> "*p
inoremap <快捷键> <Esc>"*p
参考:https://gist.githubusercontent.com/razrLeLe/76cecb05d5b0e282f2a6/raw/57ab6f21f945307ef587e690d45fbf175757d398/.vimrc
原来mouse=a之后,用鼠标复制黏贴就失效了。但是不设=a,又不能使用鼠标,必须用上下左右移动。
且可以复制的时候,多行复制行号也复制进去了。世事难两全。
搜到了和我设置一样的Vim 复制粘贴探秘,也没有解决。
先不搞了,有时间再精进……
二是mac中,又又又是alt和ctrl的问题。上面代码中的<快捷键>
,比如复制,应该是ctrl+c,即,但我按下ctrl映射的是alt,所以我应该改成或,但是不知为何alt失效的彻底。
后面排查到是alt+快捷键没用,不止vim,在shell里都没用,而且alt+F1到F12有效,只是0-9a-zA-Z没用,打开了iterm的设置option to esc+也没用,在vim强硬设置也没用。不知道怎么回事,暂且搁置吧。
GIT 配置
初始配置
- 生成 SSH key
然后把.pub结尾的文件内容复制进github.com。# 配置用户名("username"是自己GitHub上的用户名) git config --global user.name "username" # 配置邮箱("username@email.com"是注册GitHub账号时所用的邮箱) git config --global user.email "username@email.com" # 看配好没 git config --global --list # 检查电脑是否已经有 SSH key ls ~/.ssh # 此时应该无 # 生成本台电脑的ssh ssh-keygen -t rsa # 一路空格
然后看好了没有。# 不要按回车!要输入yes ssh -T git@github.com
- 开始
# 在当前目录新建一个Git代码库 git init # 新建一个目录,将其初始化为Git代码库 git init <project-name> # 下载一个项目和它的整个代码历史 git clone <url>
目前软件path设置都放在<mypath>/config.sh
下,从 <mypath>/init.sh
内source。
git 配置文件
git 有三个配置文件
- system 系统
系统所有用户都会生效,一般在安装路径下
查看此文件路径:git config -e --system
我的在:/opt/homebrew/etc/gitconfig
- global 全局
当前用户生效
路径:$HOME/.gitconfig
- local 本地
仅当前项目生效
路径:(当前项目)/.git/config
优先级:local > global > system
设置用户名密码的时候使用的命令git config --global <用户名>
,global意思就是改在了global config里。
给global,因为是我自己电脑,我就设系统里了,添加下面配置:
[init]
defaultBranch = main # 初始分支设为main
[core]
quotepath = off # 允许中文显示
[gui]
encoding = utf-8 # 代码库统一使用utf-8
[i18n]
commitencoding = utf-8 # log编码
[svn]
pathnameencoding = utf-8 # 支持中文路径
此外,我的dotfiles文件也要建仓库,但本地文件没放在当前user下,而是放在根目录下,所以上传的时候报错fatal: Could not read from remote repository.
给全局文件dotfiles的.git/config
增添设置:
[core]
sshCommand = "ssh -i <想设的路径>/.ssh/id_rsa"
[user]
name = xxx
email = xxx@xxx.com
主要是ssh路径,下面的user想想也添上了。
再pull,大成功。
语言配置 & 软件安装
安装 python
python 设置
使用brew可以安装指定版本的python,且不用配置环境。
brew search python@ # 搜索版本
brew install python@3.10 #安装
brew uninstall python@3.9 #卸载
brew cleanup python@3.11 #清一下不用的包
目前mac默认安装了python3.9,而且软链是python3,所以要换。
先查探
which python # 这条会error 因为此时python还没连
which python3 # 这条会在/usr/bin/python3,默认那版
which python3.10 # 这条会在/opt/homebrew/bin/python3.10,刚下的
而且brew下的python已经默认被brew link了,因为 %python3.10
回车有东西:
brew link python@3.10
>> Warning: Already linked: /opt/homebrew/Cellar/python@3.10/3.10.12_1
每个python都有pip,所以python10的pip也叫pip3.10
whereis pip3.10
>> pip3.10: /opt/homebrew/bin/pip3.10
所以需要alias上面which的那个地址
alias python="/opt/homebrew/bin/python3.10"
alias pip="/opt/homebrew/bin/pip3.10"
然后source
最后改成了 alias python=python3
安装java和maven
就统一使用brew安装了
brew install temurin
# 检查
java -version
javac -version
maven是要去官网下压缩包,然后解压。并关联环境变量。我就想把它放在java目录下。正好java无论哪种方式安装,目录都是/Library/Java/JavaVirtualMachines/
,于是我就解压在这里。
顺便这样如果忘了,可以/Lib
一路tab下去。
然后配置环境变量。我就先不集成到dotfiles了,直接export在.zshrc
里。
export JAVA_HOME="$(/usr/libexec/java_home)"
export MAVEN_HOME=$(ls -d /Library/Java/JavaVirtualMachines/apache-maven-* | sort -V | tail -n 1)
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
安装 Go
go的path委实太迷惑了,而且所有项目都在一个/go下面,蛮奇葩的。幸亏在v1.12之后改成go module模式,不用纠结go path了。
以下的设置都基于v1.12及以后的版本。
如果不自己设路径,go会自动分配。看了一下,goroot
,which应该设置为go的安装路径,是对的。所以不用管goroot了。
❗️但是go env
出的GOROOT是go运行时的环境变量,而echo $GOROOT
则会显示当前shell环境中的GOROOT环境变量,which是没有赋值的,而GOBIN
,还需要设置一下,而GOBIN
是GOROOT/bin
(应该是吧!),所以要在脚本中使用,还是需要手动获取一下GOROOT
。
gopath
它是自动设了一个/usr/user_name/go
的路径,此文件夹之后存放的是下载的第三方包之类的东西。可以自己重新设置。
# Go
go env -w GO111MODULE=on # 爱gomodule模式,开。
GOROOT=$(go env GOROOT) # 获取GOROOT
export GOPATH="$(brew --prefix go)" # 此时 gopath就可以随便设置文件了,我设到brew go软链的路径下了。
export GOBIN="${GOROOT}/bin"
# 添加path看到有可能重复添加,防止重复添加:
if [[ ":${PATH}:" != *"${GOBIN}"* ]]; then
export PATH="$PATH:${GOBIN}"
fi
if [[ ":${PATH}:" != *"${GOPATH}/bin"* ]]; then
export PATH="$PATH:${GOPATH}/bin"
fi
安装 React
几个步骤:
- 安装node。
node是js的开发环境,要运行js脚本必须安装brew install node
- 安装create-react-app
是官方推出的构建react单页应用的手脚架工具。集成了webpack,并配置了一系列内置的loader和默认的npm的脚本。sudo npm install -g create-react-app
顺便装一个TypeScript
sudo npm install -g typescript
mac配置
finder显示资源库:chflags nohidden ~/Library
rime输入法
为了写markdown,需要rime输入法。见配置适合写markdown程序员体质的rime-鼠须管
其他
- 解决v2ex打不开的问题。
它在clash里是直连。打开配置文件夹-西部世界,在rule下找到v2ex,把direct改成proxy。然后重载文件夹。
sublime 设置
环境配置
安装package control:
按Ctrl+Shift+p
,输入install package
,然后回车。
go build 环境
Tools → Build System → New Build System
打开的文档写:
{
"shell_cmd": "${GOPATH}/bin/go run $file", // $里面的内容,填自己go编译的路径,用`go env`查。一般是GOROOT,因为我把GOPATH设成系统给的运行go的软链,所以这个path我就设成了这个软链的path。
"encoding": "utf-8"
}
保存,命名为Golang
。这个名字就是保存后,在build system里选择编译语言的名字。然后就选这个就行了。
网上那一堆是按插件的,妈呀能不能提前说明是插件。以为是必须的,其实并没有很想要。那个gosublime存的路径在mac上怎么打开:
Sublime Text → Setting → Browse Packages
python build 环境
java build 环境
Tools → Build System → New Build System
打开的文档写:
{
"shell_cmd": "javac -encoding utf-8 $file_name && java $file_base_name",
"file_regex": "^ *\\[javac\\] (.+):([0-9]+):() (.*)$",
"working_dir": "${project_path:${folder}}",
"selector": "source.java",
"encoding": "utf-8",
"shell": true
}
保存为java.sublime-build
。
❗️注意然后再运行的时候,一定要切换 Tools → Build System → java
先,否则会有权限问题。
个人配置
我默认需要:自动换行 和 显示路径。
设置path:
- win
Preferens - Settings
- mac
Sublime Text - Settings - Settings
我的设置
{
"word_wrap": "true", # 我爱换行
"auto_complete": false, # 不爱提示
"save_on_focus_lost": true,
"show_full_path": true,
}
vscode
打开setting快捷键:ctrl + p
已安extensions:
- live server
- leetcode
换主题
挑theme:按ctrl+shift+p
,再输入 color theme
一些设置:
- 不知为何直接选reference的setting点不开,要去help里敲setting
- 关闭各种提示:
- editor > hover: enabled。取消它。(错误提示,后面又打开了)
- editor.parameterHints.enabled。取消它。
- editor.quickSuggestions & editor.suggestOnTriggerCharacters。 取消 - 世界清净了。
多个标签页显示
多个标签页有的就给挤没了,找的时候小心翼翼又怕不小心点着❌。
不想用多行显示,丑。
不想用快捷键。
本来想找有没有像浏览器那样前后翻页的,没找到。
最后找到一个setting: workbrench > editor:Tab Sizing,改为shrink。
leetcode的坑
首先是登录的时候总登不上去。【就不登cn版】
选择使用cookies登录。获取cookies的路径:
leetcode.com网页版登录 → 检查的network选all → 刷新 → 选request标头的cookie
其次leetcode的配置怎么找:
gui的最左选extension图标 → 右键leetcode选extension setting
然后很让人裂开的一件事,一直提示缺插件让安然后它安装又fail。此是准备工作没做好:
- 先要设置go mod
- 要设置go proxy
怎么设见 [go语法笔记]
最后我怎么找不见test和submit呢。原来是,已经保存的文件它就不会改了,比如已经有1.two_sum.go
了,然后改了配置:题目写在文件里,但是默认打开的还是这个文件,它就没有更改。要把这个文件删了,然后重新从题目那边code now
,才会生成正确的file。不用自己写测试函数!