Skip to main content

Mac 开发环境

https://github.com/jaywcjlove/awesome-mac https://github.com/Louiszhai/tool

1. 系统快捷键

space 预览
cmd + c/x/v/z/a/s/f
cmd + del 删除文件,删除所在行
cmd + opt + v 粘贴并删除源文件 === 移动
cmd + w 关闭tab/窗口
cmd + q 关闭软件
cmd + opt + esc 强制关闭
cmd + n 新建窗口
cmd + space 快速启动 聚焦
cmd + opt + space 访达搜索, 使用 cmd+w 关闭
ctrl + space 切换输入法
capslock 切换中英输入
cmd + tab 切换程序
cmd + ~ 切换同个程序的多个窗口
cmd + m 最小化当前窗口
cmd + h 隐藏程序所有窗口 (常用)
cmd + ctrl + q 锁屏
ctrl + shift + power 睡眠
shift + cmd + 5 截图/录制
shift + cmd + 4 选定区域截图
option + 右键单击 -- 强制退出

## 访达 finder

cmd + shift + g 前往
cmd + [ / ] 访达前进/后退
cmd + up 上层文件夹
Command+Shift+. 可以显示隐藏文件、文件夹,再按一次,恢复隐藏;
cmd + opt + c 复制路径
cmd + d 复制所选文件
opt + 调整尺寸 ==> 下次打开会记住尺寸
cmd + [ / ] 前进后退


## terminal

ctrl + c 强制终止 terminal终端
cmd + d 垂直分屏 terminal
cmd + Shift + D 水平分隔当前标签页


2. 软件快捷键

2.1. Chrome

cmd + t 新tab
cmd + w 关闭tab
cmd + shift + t 重新打开tab
cmd + r 刷新
cmd + shift + [ or ] 左右切换 tab


ctrl + shift + o 书签管理
ctrl + shift + b 显示/隐藏 书签栏
ctrl + j 下载管理

访问 data:text/html,<html contenteditable> chrome 作为记事本

插件快捷键设置 - chrome://extensions/shortcuts

2.2. vscode

opt + z 切换 word soft wrapped
opt + 点击 多列光标
opt + shift + 点击 多列连续选择

自定义代码段 cmd+shift+p,搜索 preferences: user snippets

2.3. fcp

资源库操作:

i 标记入点 (然后拖动到时间轴)
o 标记出点

e 添加片段到时间轴末尾(不覆盖其他)
q 添加片段到当前时间轴坐标位置(不覆盖)
w 添加片段到当前时间轴坐标位置(其他片段自动切割开, 腾出位置)
d 添加片段到当前时间轴坐标位置(其他片段被覆盖)

时间轴操作:

b 切割工具 (通过点击来切割)
cmd + b 通过时间轴当前坐标来切割
a 选择工具
delete 删除 (时间轴上的)片段
t 修剪工具 (i/o 没有设置准确时可以通过这个在时间轴上调整)
p 位置工具(移动片段, 空闲时间轴自动添加黑场)
r 范围选择工具 (选择时间轴上的一个范围, 如可以调整这段的音量)
cmd + r 速度面板, 调整片段的速度
shift + b 分段切割然后调整速度
v 隐藏片段
alt + cmd + up/down 移动片段到上面/下面的时间轴
~ + 拖动 等价上面

z 缩放时间轴工具 (不常用, 一般通过触控板缩放 or cmd+- 来缩放)
shift + z 自动适配时间轴长度到一屏
h 移动工具(移动整个时间轴)

s 切换 视频+音频实时预览
shift + s 切换音频实时预览
n 切换吸附 (片段间相互吸附)

control+T是添加默认字幕
command+T是添加默认转场
control+ shift+t是添加默认三分之一的字幕

command+c复制,
command+shift+v则是粘贴片段的属性
cmd + z 撤销

3. 删除开机自启动

打开“系统偏好设置”窗口,选择“用户与群组”,进入用户与群组窗口(图1)。选择登录项选项卡,再解锁,最后删除开机启动的应用 https://www.jianshu.com/p/dcf6de92a2b5

4. app 安装报错

解决"XX"已损坏,无法打开。 您应该将它移到废纸篓。

允许安装 appstore app store 外的应用程序

无法打开xxx因为无法验证开发者

sudo spctl --master-disable, 在隐私中会出现 "允许任何来源", 建议不要这样做, 而是 “系统偏好设置”——> “安全性与隐私 ”——> “通用”——>“仍要打开”

若还是不行, 尝试 sudo xattr -r -d com.apple.quarantine <app path> (程序路径获取: 可以手动拖动程序到 terminal 窗口) sudo xattr -d com.apple.quarantine <app path> (-r 可有可无)

5. 连接 iPhone 断断续续

sudo killall -STOP -c usbd

6. karabiner 按键映射

https://karabiner-elements.pqrs.org/docs/

Complex模式读取指定目录下的rule配置文件,文件内容以json格式存储,按照每个配置项的参数定义填入参数值即可.官网提供了很多现成rule文件

# 强制删除 卸载
➜ /Applications sudo chflags -R noschg Karabiner-EventViewer.app
sudo chflags -R nouchg Karabiner-EventViewer.app
sudo rm -rf Karabiner-EventViewer.app

6.1. 自定义 rule 配置

也可以自己定义, 放在 ~/.config/karabiner/assets/complex_modifications ~/.config/karabiner/karabiner.json

https://my.oschina.net/huangweiindex/blog/2246247 json配置语法

7. icloud

https://www.cnblogs.com/liuzhongrong/p/12263135.html 指定任意文件夹同步

8. 虚拟机

推荐 parallel desktop

也有免费的方案:

brew cask install virtualbox
brew cask install vagrant

9. telegram

https://zhuanlan.zhihu.com/p/64595764 中文用户解禁

设置 socket5 代理后需要重启才能连接

10. 自启动管理

launchctl list # 当前在运行的服务清单
# 结果:
# PID Status Label
# - 0 com.apple.SafariHistoryServiceAgent
# 1248 0 com.apple.progressd
# - 0 com.google.keystone.user.xpcservice

launchctl list <Label> # 查看这个服务的一些配置信息,可以里面有这个服务启动的程序所在的目录,启动参数等

locate <Label> # 查找 plist 文件路径

# 把一个服务注销掉, 取消开机启动
# , plist 的格式(满足 XML 规范)
launchctl unload <plist_path>
launchctl unload -w /Library/LaunchAgents/com.adobe.AdobeCreativeCloud.plist



# 把一个服务注册到系统服务里
launchctl load <plist_path>



# 目录规范
#
# ~/Library/LaunchAgents 用户的进程 (个人编写的守护进程)
# /Library/LaunchAgents 管理员设置的用户进程
# /Library/LaunchDaemons 管理员提供的系统守护进程
# /System/Library/LaunchAgents Mac操作系统提供的用户进程
# /System/Library/LaunchDaemons Mac操作系统提供的系统守护进程

11. 浏览器 多线程下载

Chrome 浏览器,地址栏输入并回车:chrome://flags/#enable-parallel-downloading

Edge 新版浏览器,地址栏输入并回车:edge://flags/#enable-parallel-downloading

12. 开发环境配置

12.1. ifconfig 详解

lo0: loopback 回环地址一般是127.0.0.1

gif0: software Network Interface 软件网络接口

stf0: 6to4 tunnel interface , 即 ipv6->ipv4通道接口

anpi0, anpi1 ,anpi2

en0: Ethernet以太网 有线网卡 (局域网 ip 就在这里看)

en1,2,3,4,5,6

awdl0: airdrop peer to peer(一种mesh network), apple airdrop设备特有

bridge0:2层桥接

utun0,1,2,3,4,5,6:

p2po: Point-to-Point 协议

llw0


UP代表网卡是开启状态
RUNNING 代表这个网卡是处于网络连接状态
MULTICAST:代表着喝网卡是支持组播的

12.2. chrome

12.2.1. 开启非安全模式

open -n /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir=/Users/xiaoyu/MyChromeDevUserData

12.3. mysql

brew install mysql

# We've installed your MySQL database without a root password. To secure it run:
# mysql_secure_installation

# MySQL is configured to only allow connections from localhost by default

# To connect run:
# mysql -uroot

# To have launchd start mysql now and restart at login:
# brew services start mysql
# Or, if you don't want/need a background service you can just run:
# mysql.server start


12.4. tldr 代替man 帮助

喜欢node可以用:sudo npm install -g tldr
习惯Python的:pip install tldr.py
偏爱Go的:go get github.com/pranavraja/tldr
热爱Ruby的:gem install told


tldr -h

更新缓存,tldr --update或tldr -u


tldr ssh

12.5. ssh 客户端

https://github.com/electerm/electerm

12.6. rsync 使用

http://www.ruanyifeng.com/blog/2020/08/rsync.html TODO

rsync + inotify结合使用,可以实现两台机器的文件同步

12.7. sshpass 免密码登录

https://www.cnblogs.com/misswangxing/p/10637718.html

sshpass -p ${passwd} ssh -p 22 -l root -o StrictHostKeyChecking=no xx.xx.xx.xx 'ls -l'

12.8. 配置 tree 命令

方法 1: 模拟 tree 命令, 编辑 ~/bash_profile, 添加:

alias tree="find . -print | sed -e 's;[^/]*/;|---;g;s;---|; |;g'"


方法 2: 直接安装 tree 命令 brew install tree

12.9. 禁止DS_store生成

.DS_Store是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows的desktop.ini。

# 禁止自动生成
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
# 回复生成
defaults delete com.apple.desktopservices DSDontWriteNetworkStores

# 删除已经生成的文件
find . -name '*.DS_Store' -type f -delete

12.10. 系统自带小命令

# 剪贴板
#
# 复制
pbcopy < file.txt
# 粘贴
pbpaste > file.txt
# 读取剪贴板然后过滤
pbpaste | grep "xxx"

# 打开 finder
open .

# 查看文件路径
mdfind -name jdk*/Users/xiaoyu/green/jdk-14.0.1.jdk

# 复制到剪贴板
cat xxx.txt | grep hah | pbcopy
# 粘贴
pbpaste > xxx.md
# 粘贴, 编码, 复制到剪贴板
pbpaste | base64 | pbcopy


sudo shutdown -h +60

12.11. 配置使用 zsh

修改默认 shell

macOS 自带很多 shell, 通过 cat /etc/shells 查看

Zsh 切换Bash的方法:chsh -s /bin/zsh,重启终端后即为Zsh了。验证 echo $SHELL

zsh --version 查看版本是不是最新的, 最新的版本 brew info zsh 查看

兼容 bash: 在 .zshrc 末尾加上 source .bash_profile

12.11.1. 安装 oh-my-zsh 和 插件

https://github.com/ohmyzsh/ohmyzsh - oh-my-zsh

https://segmentfault.com/a/1190000019828167 - ref

curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh , 这回覆盖 .zshrc 文件, 最好先备份 zshrc

若 失败, 手动安装: git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh, cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc, .zshrc 文件中添加source ~/.bash_profile, chsh -s /bin/zsh,

# zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/plugins/zsh-autosuggestions

# zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/plugins/zsh-syntax-highlighting

# 修改 ~/.zshrc 下的plugins字段, 退出, source
plugins=(git homebrew node npm zsh-autosuggestions zsh-syntax-highlighting)

12.11.2. 和 bash 对比

  • bash script更加接近posix标准,zsh则更加“灵活”. 因此,建议读者日常使用zsh(配合oh-my-zsh),但是使用bash做脚本解释器

    zsh的自动补全功能更加强大

    zsh的拼写检查功能更强

    二者的命令提示符不同,zsh的命令提示符可定制性更高

  • bash基本上上手即用,zsh则需要繁杂的配置(但我们有神一样的oh-my-zsh)

12.12. 配置 vim

cp /usr/share/vim/vimrc ~/.vimrc    #复制 vim 配置模版

echo 'syntax on' >> ~/.vimrc #开启语法高亮

echo 'set nu!' >> ~/.vimrc #开启行号显示

12.13. 安装 python3

mac 自带 python2

输入 python3 即可自动安装 python3 (不推荐) ,卸载 https://www.cnblogs.com/zhzhiy/p/11678660.html

可以通过 brew 安装

# 查询, 看看是否安装
brew info python
brew install python3


# 查看版本
python3 --version

# Python3 已经自带 pip3

12.14. 切换 root

切换 root 用户

12.15. 对目录授权

在Mac OS X 10.11系统以后,/usr/local/等系统目录下的文件读写是需要系统root权限的, 这样 对/usr/local 目录下的文件读写进行root用户授权 sudo chown -R xiaoyu /usr/local

12.16. sudo 免输密码

https://www.cnblogs.com/princesong/p/10293885.html

12.17. 配置 alias ll

vim ~/.bash_profile

alias ll='ls -alF' # -F 会标示目录和可执行文件

12.18. 自带 terminal 终端走代理

问题: 开了SSR并开启全局模式,终端还是不能被代*理.

我使用的是 ss (使用 pac 代理即可, 无需 global 代理), 临时使用可以: export all_proxy=socks5://127.0.0.1:1086, or export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;

持久化配置, 需要 vim ~/.bash_profile or vim ~/.zshrc (这个修改后无需刷新)

function proxy_on() {
# export {HTTP,HTTPS,FTP}_PROXY="http://127.0.0.1:3128" 也可以设置http代理
export ALL_PROXY=socks5://127.0.0.1:1086
}

function proxy_off() {
# unset {HTTP,HTTPS,FTP}_PROXY
unset ALL_PROXY
}

刷新配置, 然后命令行输入 proxy_on 打开代理, proxy_off 关闭代理

验证: curl ip.gs 复制ip 到 https://ip.sb/ 查看 location

or curl google.com

12.19. homebrew

12.19.1. 简单使用

ref: https://swiftcafe.io/post/home-brew

软件包管理工具,用来安装开发环境很方便

通常安装软件, 只需将下载包放到 finder 的 application 文件夹下即可安装(有的时候在网站下载的软件格式是 .dmg 格式,其实是把软件打包成磁盘影像。只要双击打开,通常会出现快捷界面,只要把小窗口的 .app 拖到 Applications 文件夹), 删除即为卸载

手动安装 需要 git , ruby 环境, 需要 xcode cli sudo xcode-select --install, shell 环境 (更新系统后, git异常无法使用, 也使用这条命令)

# 一键安装
# 默认是安装在 /usr/local,可能 需要 root 用户授权
# 推荐指定安装目录, 安装到无需 root 授权的目录
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

# 如果被墙,参考 https://zhuanlan.zhihu.com/p/111014448

# uninstall
$ cd `brew --prefix`
$ rm -rf Cellar
$ brew prune
$ rm `git ls-files`
$ rm -r Library/Homebrew Library/Aliases Library/Formula Library/Contributions
$ rm -rf .git
$ rm -rf ~/Library/Caches/Homebrew

# 查看版本
brew -v

# update brew
brew update

brew outdated # 查看过时可升级的包

brew upgrade node # 升级所有包

brew cleanup # 清理安装包

# 缓存目录
brew --cache
#/Users/xiaoyu/Library/Caches/Homebrew



# how to use

brew search xxx # 在默认主仓库搜索
brew list # 查看安装列表

brew info node # 查看 package info 如 版本
# 甚至可以定制 info, 借助 jq 处理 json
brew install jq
brew info --json=v1 node | jq

# install package
# brew 安装的 pakcage 文件会被放到 /usr/local/Cellar, 通过软链链接到 /usr/local/bin, 传统 apt, yum 方式安装的文件直接放到了 这个目录
brew install node
brew install git
brew install node@6 # 指定版本号
# Bottles 是 Homebrew 中的一个专用名词。 它表示直接用二进制形式发布的包。
# 在使用 brew install 安装程序包的时候有两种方式,一个是下载源代码然后在本地构建,另外一个是直接下载已经编译好的二进制包。 而 Bottles 就是预编译好的二进制包。
# 如果一个源包含预编译的 Bottle, 我们在使用 brew install 的时候会自动使用它。 如果出于某些原因,你不想使用预编译的包,就可以加上 --build-from-source
brew install --build-from-source node

# 安装桌面程序
# brew cask是brew的一个官方源
# brew cask search | wc -l 可以得到cask的数量是3754个。例如常用的包括java, mactex, rstudio等。
brew cask install google-chrome

brew --prefix # brew 的 主目录 /usr/local
brew --repo # 仓库目录 /usr/local/Homebrew


# 删除卸载软件
brew uninstall node

# 暂时的停用, 只会删除符号链接,但并不会删除程序本身
# 这个功能在某些场景中非常有用,比如你需要某个程序包暂时失效,用于调试你正在进行的开发。
brew unlink node
brew link node


# brew 有多个仓库, 分为主仓库 和 附加功能仓库, 分仓库主要是为了缓解包管理的压力
# 一般包管理工具会把那些常用的软件包放到主仓库,其他的软件包根据功能特性组织到可选的功能仓库中。
# 附属功能仓库比如:
# homebrew/nginx //包含 nginx 相关模块的仓库
# homebrew/php // php 相关模块的仓库
# homebrew/science // 科学计算工具仓库

# brew 默认自带这些 tap:
# homebrew/core
# homebrew/cask
# homebrew/services
# homebrew/bundle

# 查看当前的默认主仓库
brew tap # 返回 homebrew/core

# 加载指定的仓库, 启用某个指定的源
brew tap homebrew/nginx

12.19.2. 禁用自动升级

Homebrew 自动升级触发概率很高,由于网络等问题,检查更新会很久有时会比较烦, 环境变量设置 HOMEBREW_NO_AUTO_UPDATE=1 即可

# or
export HOMEBREW_NO_AUTO_UPDATE=true

12.19.3. 替换国内源

https://www.cnblogs.com/shyw/p/11634447.html

alias ll='ls -alF'

# brew toggle source
function brew_gfw() {
# 替换brew.git
cd "$(brew --repo)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
echo ">>> replace brew ok"

# 替换homebrew-core.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
echo ">>> replace brew-core ok"

# replace homebrew-cask
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git
echo ">>> replace brew-cask ok"

# homebrew-bottles replacement 清华源
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles
echo ">>> replace brew-bottles ok"

# 刷新源
brew update
echo ">>> brew update ok"
}


function brew_reset() {
# 重置brew.git:
cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.git
echo ">>> reset brew ok"

# 重置homebrew-core.git:
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://github.com/Homebrew/homebrew-core.git
echo ">>> reset brew-core ok"

# reset cask
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://github.com/Homebrew/homebrew-cask.git
echo ">>> reset brew-cask ok"

# reset homebrew-bottles
unset HOMEBREW_BOTTLE_DOMAIN
echo ">>> reset brew-bottles ok"

# 刷新源
brew update
echo ">>> brew update ok"
}


用的时候, 在命令行调用一下 function 即可

12.20. 安装 java 开发环境

# 不用这个, 这个安装只是 jre 不是 jdk, 坑
brew install java

# 推荐直接从官网下载 mac 压缩包, 解压后
JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home"
MAVEN_HOME="xxx"
PATH=$JAVA_HOME/bin:$MAVEN_HOME:$PATH:.
#CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export MAVEN_HOME
export PATH
#export CLASSPATH

# https://www.cnblogs.com/imzhizi/p/macos-jdk-installation-homebrew.html
# 最新版 Oracle OpenJDK
brew cask install java
# Oracle OpenJDK11
brew cask install java11

12.21. cpp 开发环境

"c/c++" 插件

编译器 (mac 自带 clang 作为 cpp 编译器, or 下载 gcc )

12.22. 安装 Aria2 下载工具



# aria2
# https://www.jianshu.com/p/6e6a02e1f15e (命令行使用过)

brew install aria2
aria2c --conf-path ./aria2.conf

# aria2.conf
#用户名
#rpc-user=xxxx
#密码
#rpc-passwd=xxxx
#上面的认证方式不建议使用,建议使用下面的token方式
#设置加密的密钥
#rpc-secret=token
#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许外部访问,false的话只监听本地端口
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
#rpc-listen-port=6800
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*
#文件保存路径, 默认为当前启动位置
dir=/Users/xiaoyu/Downloads
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc

# 启动
aria2c --conf-path /xxx/aria2.conf" [-D]


gui 控制台 https://aria2c.com/ 输入 rpc 链接: http://127.0.0.1:6800/jsonrpc

12.23. docker 安装

https://mritd.com/2022/06/08/happy-using-docker-on-macos/ ToDo 推荐更好的工具 lima

# docker

brew cask install docker

12.23.1. 容器和宿主机网络互通

https://www.jianshu.com/p/e63bd5d0cc1e https://www.cnblogs.com/huaxiaoyao/p/12088948.html

colima 代替 orbstack

https://github.com/abiosoft/colima, 免费

12.24. orbstack 代替 docker

# edit config.json
orb config docker
# or just edit
# ~/.orbstack/config/docker.json

# restart
orb restart docker

# If you want to exit orbstack and take the docker desktop in use
# just edit ~/.docker/config.json,
"currentContext": "default" # orbstack --> default
# or
docker context use default
# Switch to OrbStack
docker context use orbstack
# Switch to Docker Desktop
docker context use desktop-linux

12.25. vscode 安装配置

配置 mac 命令行即可启动vscode:打开命令面板 (shift + cmmand + P) ,输入 shell command’,找到: “Install ‘code’ command in PATH”,点击就可以了

生成 md 目录 格式错乱, 更改 settings -> text editor -> files -> eol 为 \n 即可

https://blog.csdn.net/qq_43827595/article/details/104277051 vim 插件按键映射

12.25.1. vscode插件

12.25.1.1. editorconfig

# http://editorconfig.org
root = true

# 空格替代Tab缩进在各种编辑工具下效果一致
[*]
indent_style = space
indent_size = 4
charset = utf-8
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true

; [*.java]
; indent_style = tab

[*.{json,yml}]
indent_size = 2

[*.md]
insert_final_newline = false
trim_trailing_whitespace = false

12.25.2. 创建文件文件夹 快捷键

https://blog.csdn.net/u011511756/article/details/85058990

new file, new folder -> explorerResourceIsFolder && !inputFocus

12.25.3. 使用 debugger for Chrome

.vscode 配置文件中的专有变量:

${workspaceFolder} :表示当前workspace文件夹路径,就是根目录, .vscode 所在目录

${workspaceRootFolderName}:表示workspace的文件夹名,也即Test

${file}:文件自身的绝对路径,也即/home/Coding/Test/.vscode/tasks.json

${relativeFile}:文件在workspace中的路径,也即.vscode/tasks.json

${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即tasks

${fileBasename}:当前文件的文件名,tasks.json

${fileDirname}:文件所在的文件夹路径,也即/home/Coding/Test/.vscode

${fileExtname}:当前文件的后缀,也即.json

${lineNumber}:当前文件光标所在的行号

${env:PATH}:系统中的环境变量

12.25.4. snippets

https://github.com/microsoft/vscode/issues/89700 当前文件夹名字

"ts react funcitonal component": {
"prefix": "fc",
"body": [
"import React from \"react\";",
"",
"const ${TM_DIRECTORY/^.+\\/(.*)$/$1/}$1: React.FC = ($2) => {",
" return (",
" <>",
" $0",
" </>",
" );",
"};",
"",
"export default ${TM_DIRECTORY/^.+\\/(.*)$/$1/}$1;",
""
],
"description": "create ts react funcitonal component"
},

12.25.5. code copilot 插件使用快捷键


接受建议:Tab
拒绝建议:Esc
打开Copilot:Ctrl + Enter (会打开一个单独的面板,展示10个建议)
下一条建议:Alt/Option + ]
上一条建议:Alt/Option + [
触发行内Copilot:Alt/Option + \ (Coplit还没有给出建议或者建议被拒绝了,希望手工触发它提供建议)

12.26. 修改 hosts 文件

sodu vim /etc/hosts


# 推荐使用 switchHosts https://github.com/oldj/SwitchHosts
# 修改后若无效, 可以尝试手动激活host, 还不行, 尝试重启机器
Windows:在 CMD 窗口输入:ipconfig /flushdns
Linux 命令:sudo rcnscd restart
Mac 命令:sudo killall -HUP mDNSResponder

12.27. idea

12.27.1. idea 无法启动 missing essential plugins

删除以下文件夹中的idea和jetbrains文件:
# xxx为用户名
/Users/xxx/Library/Preferences/
/Users/xxx/Library/Caches/
/Users/xxx/Library/Application\ Support/
/Users/xxx/Library/Logs/


rm -rf /Users/xxx/Library/Preferences/jetbrains.jetprofile.asset.plist

rm -rf /Users/xxx/Library/Caches/JetBrains

rm -rf /Users/xxx/Library/Application\ Support/JetBrains

rm -rf/Users/xxx/Library/Logs/JetBrains


12.27.2. vm 配置文件路径

/Users/xiaoyu/Library/Application Support/JetBrains/IntelliJIdea2020.3

12.27.3. 完全卸载

进入 cd Users/xiaoyu/Library/

rm -rf Logs/IntelliJIdeaxxx/

rm -rf Preferences/IntelliJIdeaxxx/

rm -rf Application Support/IntelliJIdeaxxx/

rm -rf Caches/IntelliJIdeaxxx

把~/下的.idea/也删掉

12.27.4. 插件无法搜索

可能是 idea 代理设置不正确, 如果实在不行, 可以: 官网下载 , 导入 -> http://plugins.jetbrains.com/

12.27.5. ideavim

http://einverne.github.io/post/2017/10/vim-config-map.html vimrc 按键映射 http://einverne.github.io/post/2020/07/idea-vim-usage.html ideavim 内置了插件

  • nmap 普通模式 (Normal)映射
  • vmap 选择模式 (Visual)
  • imap 插入模式 (Insert) 下的键映射
  • cmap 在命令模式下生效
  • unmap 解除映射

等等

修改 ~/.ideavimrc

imap jk <Esc>
imap kj <Esc>
set timeoutlen=300

12.27.6. 自定义堆内存

https://www.jianshu.com/p/2fa801238a1d https://www.jianshu.com/p/c858e6a988b9

/Users/xiaoyu/Library/Application Support/JetBrains/IntelliJIdea2020.2/idea.vmoptions

12.28. tmux 多会话管理

http://www.ruanyifeng.com/blog/2019/10/tmux.html

brew install tmux

# check version
tmux -V

# 快捷键生效需要先按下Ctrl+b,
# 帮助命令的快捷键是Ctrl+b ?, 按下 ESC 键或q键,就可以退出帮助
# Ctrl+d或者显式输入exit命令,就可以退出 Tmux


# 新建默认 session, 编号是0,第二个窗口的编号是1,以此类推
tmux
# 新建指定名字
tmux new -s <session-name>
# 退出当前会话
exit

#分离会话
# (退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行)
#按下Ctrl+b d或者输入
tmux detach

# 查看所有会话
#Ctrl+b s
tmux ls
# or
tmux list-session

#接入会话
$ tmux attach -t <session_number/session_name>
# or
tmux attach-session -t my_session

# 杀死会话
$ tmux kill-session -t <session_number/session_name>

# 切换会话
$ tmux switch -t <session_number/session_name>

# 重命名会话
#Ctrl+b $
tmux rename-session -t <old_session_name/number> <new-name>

窗格相关命令


# 切分窗格
# 划分上下两个窗格
# Ctrl+b "
$ tmux split-window
# 划分左右两个窗格
# Ctrl+b %
$ tmux split-window -h

# 移动光标到窗格
# Ctrl+b <arrow key>
# 光标切换到上方窗格
$ tmux select-pane -U
# 光标切换到下方窗格
$ tmux select-pane -D
# 光标切换到左边窗格
$ tmux select-pane -L
# 光标切换到右边窗格
$ tmux select-pane -R

# 交换窗格位置
# 当前窗格上移
$ tmux swap-pane -U
# 当前窗格下移
$ tmux swap-pane -D

窗格快捷键


Ctrl+b %:划分左右两个窗格。
Ctrl+b ":划分上下两个窗格。
Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。
Ctrl+b ;:光标切换到上一个窗格。
Ctrl+b o:光标切换到下一个窗格。
Ctrl+b {:当前窗格与上一个窗格交换位置。
Ctrl+b }:当前窗格与下一个窗格交换位置。
Ctrl+b Ctrl+o:所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。
Ctrl+b Alt+o:所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。
Ctrl+b x:关闭当前窗格。
Ctrl+b !:将当前窗格拆分为一个独立窗口。
Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。
Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小。
Ctrl+b q:显示窗格编号。

使用 oh my tmux 配置:

https://github.com/gpakosz/.tmux

# 进主目录
$ cd
$ git clone https://github.com/gpakosz/.tmux.git
# 将 .tmux.conf 软链接到当前目录下
$ ln -s -f .tmux/.tmux.conf
# 用户自定义配置文件
$ cp .tmux/.tmux.conf.local .


# 让 tmux 配置生效
tmux source-file ~/.tmux.conf

12.29. htop 替代 top

12.30. 安装 visualvm

https://github.com/oracle/visualvm

修改 ➜ vim /Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf 添加 jdkhome

13. 空格预览插件

https://github.com/sindresorhus/quick-look-plugins https://github.com/haokaiyang/Mac-QuickLook

如果升级macos, 需要 brew reinstall qlcolorcode 重装

14. 拼音输入法

  • tab 筛选声调
  • 「shift+option+B」和「shift+6」激活标点和颜文字符号面板
  • control+shift+space打开手写板
  • 拆字输入, 先键入“mamama”,然后按下shift+space就会有驫

15. 视频

http://blog.codinglabs.org/articles/using-mplayer-for-coursera.html 命令行视频播放器

windows 系统

windows 常用命令

# windows 查看端口占用, 
netstat -ano | findstr "8090"

# 查询进程号2448信息
tasklist|findstr "2448"

# 杀进程
taskkill -pid xxx -f

# 在资源管理器中打开文件夹
start .

wsl2

wsl 命令

# 打开PowerShell (admin): win+x, a

wsl -l -v # 查看 wsl 版本, Linux 发行版本

ubuntu1804.exe config --default-user root # 修改默认用户


安装

激活 Windows10 professional

试用的是Ubuntu最新版本

Ubuntu的默认root密码是随机的, 可以自己修改root密码: sudo passwd, 然后敲入当前用户密码, 设置新的密码, 此时密码即为root密码; 也有另外的方法 sudo su - 然后 passwd 输入两遍设定密码, 此时即为 root 密码 (xy/123456, root/root)

修改默认的软件包仓库数据源: https://blog.csdn.net/sunnyliqian/article/details/50179915

升级到 wsl2

wsl2 没有启 systemd、systemctl 等等

MySQL

安装 MySQL : https://blog.csdn.net/weixin_39345384/article/details/80860060

安装好后需要新建 user, 无法用root远程登陆: https://blog.csdn.net/hyl999/article/details/77777184 连接参数: localhost, 3306, newUser, 123456

vscode配合

vscode 在 wsl 中打开后 无法移动文件, 重命名文件 (wsl2 已经没有这个问题了): https://code.visualstudio.com/docs/remote/wsl#_i-see-eaccess-permission-denied-error-trying-to-rename-a-folder-in-the-open-workspace

docker

配置 wsl2 一条龙开发环境

Windows 连接 wsl2 中 docker 的 mysql 还有bug, 如使用 navicat 无法连接, 使用 idea 连的时候, 需要查 wsl2 的 ip, 不能使用 localhost 连接

windows terminal

https://www.seepine.com/git/oh-my-zsh/ 配置 zsh

下载 zsh 安装包, 解压后复制 usr, etc 目录 到 git 安装目录下, 替换 git 的 usr/etc

打开 git bash,
vim ~/.bashrc

if [ -t 1 ]; then
exec zsh
fi

install oh my zsh

一键脚本 sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

(通过 Github 代理安装)
curl -# -O https://ghproxy.com/https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
修改默认Github 地址 vim install.sh
REPO=${REPO:-ohmyzsh/ohmyzsh}
REMOTE=${REMOTE:-https://ghproxy.com/https://github.com/${REPO}.git}
BRANCH=${BRANCH:-master}
执行: sh install.sh

下载插件
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
修改 .zshrc
ZSH_THEME="ys"
# plugins=(git)
plugins=(git zsh-syntax-highlighting zsh-autosuggestions)

source ~/.zshrc

package manager

chocolatey 权限混乱,自定义目录麻烦,包依赖太多, 不推荐

所有的包都来自一个由用户自发维护的源,更新还是蛮快的。坏处就是不挂梯子这个源相当慢......不过还是很全的

Scoop 开源的, github 社区维护, 会自动添加环境变量,对开发友好,所有包都是干净的,一般是便携版,exe 的也会提取出来,所有软件安装到一个指定目录,方便管理; 还可以自己添加 添加bucket

scoop 不接收不干净的包, 如国内的 qq 等软件,虽然可以自己新建 bucket 然后编写这些软件的 Manifest 文件,但是麻烦

winget-cli 微软自家的 (https://github.com/microsoft/winget-cli)

choco

https://community.chocolatey.org/packages

choco install <packagename> [-y]
cinst <packagename> [-y]
choco install jdk8
choco install nodejs.install # 最新版
choco install nodejs-lts # lts 版本
choco install git.install
choco install googlechrome
choco install vscode
choco install 7zip.install
choco install intellijidea-community //社区版
choco install intellijidea-ultimate //旗舰版

# 快速生效环境变量。
refreshenv

团队统一环境:

dev-tools.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="jdk8" />
<package id="googlechrome" version="71.0.3578.98" />
<package id="vscode" />
<package id="7zip" />
</packages>