环境变量使用export导出
在当前shell设置环境变量有两种方式:
ABC="123"
export ABC="123"
第一种只对当前文件有效,对子shell无效
❌bash other.sh
其实也是开了一个子shell,所以第一种方法对这个无效
❌sudo bash -c "echo $ABC" 同理也不行。
✅sudo echo $ABC
可以获取,因为$ABC会直接在当前shell展开
第二种对当前shell和子shell都有效,因此以上三种都可以获取到值
因此export可以让环境变量传递下去,当已有变量ABC,想export可以直接export ABC
在当前shell使用sudo执行命令的一些特殊技巧
-E 等价于 –preserve-env
保留原来环境变量,如果不指定,则会清空当前用户环境变量。
-H 等价于 –set-home 设置home为新用户的
所以这两个组合起来用很好用,也就是-EH或者-HE没区别
测试示例帮助理解这两个参数的使用:123456789101112131415161718192021222324252627282 ...
git进阶学习资料:
https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud
git小技巧
git基础概念
commit branch HEAD
commit就是节点,可以理解为整个git就是通过一个个commit构建起来的,每个commit都会基于一个父节点。commit
通过哈希值唯一标识
branch会指向一个具体的节点
HEAD指向一个分支(间接指向了那个分支的commit节点),如果直接指向某个具体的commit,则处于detached状态,新的提交不属于任何分支,新提交可能丢失,所以需要及时转成新的分支
git reset和git
checkout切换commit区别
理解这个,你首先需要理解git基础概念的知识,理解branch和HEAD的区别
git reset移动的是HEAD当前所在的分支,把当前分支移动到某个commit节点
git checkout移动的是HEAD,进入detached HEAD状态
branch仍然指向原来的commit节点 git chec ...
windows的alacritty配置文件存放在:
%APPDATA%\alacritty\alacritty.toml
文件内容基本可以参考我的linux配置:https://github.com/gxt-kt/dotfiles/blob/master/alacritty/.config/alacritty/alacritty.toml
只需要额外注意以下内容:
因为默认不能使用<C-/>或者说是<C-_>快捷键,所以在配置里已经加入了
1234[keyboard]
bindings = [
{ key = "Slash", mods = "Control", chars = "\u001f" }
]
如果需要alacritty启动的时候自动启动wsl,那么配置加入以下内容:
123[terminal.shell]
# default is "powershell" in windows ( https://alacritty.org/config-alacritty.html#terminal )
program = "C:\\Users\ ...
im-select
nvim自动切换中英文输入法
自动切换中英文输入法使用的是im-select软件
nvim插件:https://github.com/keaising/im-select.nvim
关于im-select的安装可以参考https://github.com/keaising/im-select.nvim
安装完成之后,可以实现在进入到编辑模式时自动切换输入法到中文,退出编辑模式(例如esc)会自动进入到英文。
这个针对本地的终端有用,但是如果是用ssh连接,因为ssh没法知道本地的im-select软件在哪,所以就要麻烦一点。
不过已经有人实现了:https://github.com/mkdir700/im-select-remote.nvim
这个远程支持ssh的我没实际尝试,就不多讲了。
代码块复制功能测试
这是一个测试页面,用于验证各种代码块复制功能是否正常工作。
行内代码测试
这里有一些行内代码:console.log('Hello World')、let x = 10、function test()。
缩进代码块测试(4个空格)
这是通过缩进4个空格创建的代码块:
123456789const testFunction = () => {
console.log('Hello from indented code block');
return 'This should have copy icon on hover';
};
function traditionalCodeBlock() {
let message = "This is created with 4-space indentation";
alert(message);
}
列表中的缩进代码块
第一个项目
这里有一个缩进的代码块:
123git add .
git commit -m "test commit"
git push origin ma ...
标题锚点测试文件
这个文件用于测试主题文件
source/patch/head_anchor/head_anchor.js
中锚点生成代码的各种情况。
基本标题测试
普通英文标题
This is a normal English
heading
Another Normal Heading
普通中文标题
这是一个普通的中文标题
另一个中文标题
特殊字符测试
包含特殊符号的标题
标题包含特殊符号:@#$%^&*()
包含英文冒号的标题: This is a
test
包含中文冒号的标题:这是一个测试
标点符号测试
标题,包含逗号
标题。包含句号
标题!包含感叹号
标题?包含问号
标题;包含分号
标题:包含冒号(末尾)
空格和格式测试
开头有空格的标题
结尾有空格的标题
两端都有空格的标题
标题 中间 有 多个 空格
混合语言测试
中英文混合
中英文混合标题 English
English and 中文混合标题
中文标题 with English words
Unicode字符测试
标题包含 émojis 😊🎉🚀
包含特殊字符 ñ, ü, ç
包含希腊字母 α, ...
iphone 配置美区id
tmux
tmux
其实不需要去淘宝买那种共享美区id,完全可以把自己的id配置成美区的。
主要参考:
https://iyuantiao.com/fenxiangfuli/jiaocheng/tiktok-3.html
其中会用到地址生成器:https://iyuantiao.com/jineng/diannao/personal-letter-from-address-generators-in-the-us-uk-japan-australia-etc.html
配置完成后刷新网页,可以看到地区就是在美国了
在apple store里可以退出重新登录一下就可以了
可以尝试下载一个tiktok,正常的国内id tiktok是无法下载的
但是下载shadowrocket小火箭仍然是需要收费的$2.99,可以考虑别的办法例如购买apple礼品卡进行充值
下载shadowrocket小火箭
参考网址:https://www.xgjs.shop/doc/840/
里面给出了免费的apple
id,登陆后可以直接下载shadowrocket
Git Fixup 和 Autosquash
最佳实践教程
概述
Git 的 fixup 和 autosquash
功能是维护整洁提交历史的强大工具。它们允许你将小的修改合并到之前的提交中,避免产生大量小的修正提交。
本教程将通过实际示例介绍如何有效地使用这些功能。
什么是 Fixup 和 Autosquash?
Fixup Commit
Fixup commit
是一种特殊的提交,标记为对之前某个提交的修正。它的提交信息以
fixup! 开头,后跟目标提交的信息。
Autosquash
Autosquash 是 Git rebase 的一个功能,可以自动将 fixup commit
合并到它们修正的目标提交中。
使用场景
代码审查后的修改:审查后需要做小修改时
忘记添加文件:提交后发现遗漏了文件
小bug修复:发现之前提交中的小错误需要修正
完善功能:对之前添加的功能进行小改进
基本操作流程
1. 查看当前状态
12345678# 查看Git状态
git status
# 查看已暂存的更改
git diff --cached
# 查看提交历史
git log -- ...
tmux 指南
NOTE
并不会很全
主要是怕自己忘掉,所以需要记录下来,有需要的时候可以查
tmux中的基本概念
首先是会话session,我们会attach到一个会话,然后创建窗口window,一个窗口可以分割成多个pane
也就是范围从大到小就是:session -> window -> pane
快捷键
key
description
prefix+C-a
热重载配置
prefix+space
循环改变当前window布局
prefix+m
把当前pane移动到指定window,如果window不存在则移动一个空的pane
很多时候移动过去后布局不是你想要的,就可以prefix+space更改布局
prefix+M
把某个window的pane移动到当前window
由于默认会把指定的window的第一个pane移动到当前window,所以有时候不好用,推荐使用prefix+m
p ...


