所遇终端/VSCode-问题合集采录

极客修炼指南

在记录自己的摔倒中不再踟蹰……

终端

3.24

sync:

基本语法

1
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
  • -O大写

  • MacOSX OS大写

  • Linux逻辑控制符

    • && 前者成功才执行后者
    • || 前者失败才执行后者
    • ; 无论前者是否成功都执行后者

基本操作

Mac终端基本快捷键操作

  1. 快速定位(光标移动)
快捷键功能记忆点
Ctrl + A移动到行首A Head (最前面)
Ctrl + E移动到行尾End (末尾)
Option + ←向前跳一个单词在 M4 Mac 上,Option 是词级跳跃
Option + →向后跳一个单词同上
Ctrl + F向前移动一个字符Forward
Ctrl + B向后移动一个字符Backward

  1. 快速删除
快捷键功能逻辑
Ctrl + U删除光标前整行最常用的“清空重来”
Ctrl + K删除光标后整行Kill (杀掉后面的内容)
Ctrl + W删除光标前一个单词Word
Option + Delete删除光标前一个单词macOS 习惯用法
Ctrl + H退格删除(等同于 Backspace)手不用挪出主键盘区
Ctrl + Y粘贴刚才删掉的内容Yank (拽回来)

  1. 历史搜索
快捷键功能场景
Ctrl + R搜索历史命令输入 conda 就能跳出你之前那行超长的 create 命令
!!执行上一条命令比如忘了加 sudo,直接输入 sudo !!
Ctrl + L清屏Look (让屏幕变干净,等同于 clear)
Ctrl + C中止当前进程报错或者卡死时的救命稻草

  1. 窗口管理

macOS 原生终端:

  • Cmd + T:新建标签页(Tab)
  • Cmd + Shift + [ / ]:在不同标签页间切换(切环境时超好用)。
  • Cmd + D:垂直分屏(如果用 iTerm2,这是神技)

Bug

  1. 路径冲突(Shadowing):系统里有两个 conda。Homebrew 版路径在 PATH 中排在前面,挡住官方版。
  2. 权限死锁(Permission Denied):Homebrew 版装在系统目录 /opt 下,普通用户无权写入,导致无法创建虚拟环境。
  3. 卸载失败:由于文件权限混乱,连 brew uninstall 这种常规手段都因 Ruby 脚本无权操作而报错。
1. 强行清障

既然常规卸载无效,直接动用最高权限抹除物理文件和入口:

  • 删本体sudo rm -rf /opt/homebrew/Caskroom/miniforge
  • 删入口sudo rm /opt/homebrew/bin/conda
  • 清记录brew uninstall --cask --force miniforge
2. 权力移交

让新装在个人目录(~/miniconda3)的官方版正式接管 Shell:

  • 强制初始化~/miniconda3/bin/conda init zsh
  • 重载配置source ~/.zshrc
  • 清除缓存hash -r(让 Zsh 忘记旧的路径映射)
3. 状态验证
  • 路径检查whence -p conda 应指向 Users/focus/miniconda3/...
  • 权限确认conda info 显示 base environment : ... (writable)
4. 避坑金律
  • 禁忌 sudo:永远不要在 conda 命令前加 sudo,这会污染环境权限,导致后期包管理彻底瘫痪。
  • 职能分离Homebrew 负责系统级工具(Git, Node);Conda 专门负责 Python 及其科学计算生态。

Python

3.4

循环

1
a=[int(input()) for _ in range(n)]

or

1
2
3
a=[]
for i in range(n):
a.append(int(input()))

读取带有空格的数据

个别数据的读取

1
n,c=map(int,input().split())

数组数据的读取

1
a=list(map(int,input().split()))

高级技巧:sys(更加推荐,vscode上按 Ctrl+D 作为 EOF)

1
2
3
4
5
import sys
input_data=sys.stdin.read().split()
n=int(input_data[0])
c=int(intput_data[1])
a=list(map(int,input_data[2:]))

更优雅的写法 itrator

1
2
3
4
5
import sys
it=iter(sys.stdin.read().split())
n=int(next(it))
c=int(next(it))
a=[int(x) for x in it]

切片问题(slicing snag)

[start,end]包含开头不包含结尾