大家好云游者们!!
随着我在科技领域的旅程继续,我决定是时候换一台新电脑了。我之前的 MacBook Air 是在2017年参加德克萨斯州律师资格考试时新买的(但已经是两年前的型号)。从那时起,它一直陪伴着我,但由于电池寿命下降和仅有256GB的存储空间,是时候让它退休了。
我犹豫了一阵,但最终还是决定继续使用 Mac。没有什么特别的,只是一台不错的机器,希望能用上3到4年。在探索编码、开发、云和 DevOps 的过程中,我逐渐了解到终端的强大功能,各种代码编辑选项,以及各种应用程序,可以让我这台机器成为我想要的样子。
我将带你了解到目前为止我在这台机器上安装的一些实用应用程序和命令行工具,以及我设置的一些配置细节。希望你能从这里和 YouTube 上的其他文章和视频中学到一些对你自己的工作流程有帮助的东西,就像我从 Medium 上的其他文章中学到的一样。
我有一个秘密想要分享,希望这里是一个我可以坦露自己最黑暗部分的安全地方……直到2023年我才开始使用Spotlight搜索我的系统。我甚至都不知道它的存在。如果你不知道我在说什么——按 cmd + 空格(如果你用的是Mac),看看会发生什么。
Spotlight 是一个很好的方式,可以避免在导航系统时不得不将手从键盘上移开。当你处于某个想法或工作流程中,需要停下来手动操作鼠标并浏览系统 GUI 时,这会打断你的思路并可能影响效率。使用内置的键盘快捷键调出 Spotlight,并通过这种方式操作系统,可以很好地保持你的思维连贯性。
然而,我只在看到一个讨论 Spotlight 替代品的 YouTube 视频后才开始使用 Spotlight。如果你认为这可能有助于你的工作流程,我鼓励你尝试一下 Alfred 和 Raycast 作为 Spotlight 的升级。它们扩展了你的选项,让你不仅可以搜索系统中的文件或应用程序,还可以在你选择的浏览器中进行搜索,将搜索栏用作计算器和货币转换器,以及我尚未探索的各种功能。
Alfred 是一款 macOS 生产力应用,通过热键、关键词和文本扩展等功能提升你的效率。
Raycast 让你可以用几个按键控制你的工具。它设计用于让你保持专注。
Raycast
我一直都在使用 Raycast 和 Alfred,两者我都挺喜欢的,但说实话,Raycast 看起来更漂亮。
我也添加了一些应用程序,希望能帮助我更好地组织事务,而在某些情况下,只是让事情变得更好。
Maccy 是一个剪贴板管理器。就这样。哈哈。听说不错,所以决定试一试。
在我这个博客上记录我的技术探索之旅时,我一直希望能有更好的解决方案来处理截图和屏幕录制。特别是因为QuickTime创建的屏幕录制文件比较大,上传到Medium这样的页面时很难管理。到目前为止,CleanShotX已经很好地完成了这项工作。
CleanShot X 是 Mac 上最好的截屏和屏幕录制应用,内置注释工具,支持云端上传等功能。了解更多
Rectangle 是一个很棒的窗口管理器,我非常喜欢使用它。我仍然在努力更多地使用键盘,减少鼠标使用,而 Rectangle 已经预设了大量的快捷键。
Rectangle 快捷键
Today 是一个简单的应用程序,用于访问您今天的日历条目。因此,它的名字叫 Today。懂了吗?你懂了,你真聪明,我相信你。今年我全力以赴的一个重要部分就是为每个月制定计划,必要时还会制定更长的项目计划。快速访问当天的日历条目非常方便。
菜单栏日历与 Today 差不多,但它提供了访问您完整的月度日历的功能,而不仅仅是您当天的任务。而且 Today 和菜单栏日历都是同一位作者制作的!真有趣!
还有一个来自同一位作者的应用。这是一款真正的纯文本编辑器,哈哈。我有一个目标是写更多的东西(不仅仅是技术文档和博客文章),有一个不分散注意力的画布很有帮助。市面上有很多选择,但我喜欢这款的美学设计,说实话,我没有费心去寻找其他选项。没有必要把事情搞复杂。
如果在这篇文章中不提到 Obsidian,我会显得非常疏忽。随着我对记录和整理我所学的一切以及我想构建的概念越来越重视,我发现自己真正需要一个正式的系统。
如果你最近上网的话,你肯定听说过 Notion。她是一个可爱的女孩,我和她合作了几个月,去年在通过我的一些认证时,她确实帮了我不少忙。但最终,我不得不接受一个事实,我对按照 Notion 的要求来构建一个系统和 GUI 并没有兴趣。这并不是我的菜。Notion 强大的自定义能力也是它不适合我的一个重要原因。配置“完美的”系统反而成了一个分心的因素,而不是帮助。
幸运的是,我在YouTube上瞎点了一通,无意中发现了Obsidian的粉丝俱乐部。我找到了我的同道中人!我看到有人把Obsidian称为“知识管理系统”,而我确实就是这样使用的。不仅用于探索技术并为认证创建学习资料,还用于记录各种有趣的信息、技术概念、最近的法律案例等。
一个示例笔记在我的 Obsidian 保险库中。
我日常生活中想要记住的任何事情最终都会被存入我的 Obsidian 保险库。不仅因为它是一个易于使用的系统,还因为它能够将信息链接在一起,并以视觉形式展示这些联系。
我的 Obsidian 图表视图 — 2024年4月
在最简单的情况下,Obsidian 是一个 Markdown 编辑器和本地文件/文件夹组织工具。Markdown 是一种你可能从 GitHub 读取文件中熟悉的简单标记格式。
Markdown (.md) 语法示例。
当你创建一个 Obsidian 保险库时,它只是你机器上的一个文件夹。你在保险库中创建的任何其他文件和文件夹都会相应地组织在这个本地文件夹内。其他保险库也是以同样的方式设置的,你可以根据需要创建任意数量的保险库。对于希望将生活中的各个部分分开管理的人来说,Obsidian 保险库是一个很好的选择。
我目前使用的是结合了Zettlekasten系统和PARA方法来保持自己有条不紊,随时掌握想法和项目构思,并确保可重复使用的资源随时可用,并通过Obsidian的链接系统与相关笔记关联起来。
在我的 Obsidian 软件 GUI 中名为“Second Brain”的 Obsidian 保险箱。
我的 Obsidian 保险箱从 Finder 图标视图。
随着我对隐私的关注逐渐增加,我发现我的 Notion 文件基于云端且不完全属于我自己的想法开始让我感到不安。虽然我正在探索云技术,并且非常喜欢它能做的事情,但我希望对我的个人文件有更强的掌控。Obsidian 解决了这个问题,并且为我提供了一个简单易用的界面来创建和组织所有内容。Notion 很可爱,但 Obsidian 才是我的菜。这是我个人的经历,我没有任何问题与使用 Notion 的人,它确实是一款很棒的应用。但我们是 Obsidian 粉丝团的一员!
Obsidian 是一个私密且灵活的笔记应用,能够适应你的思维方式。
如果你 somehow 找到了这篇文章和我的 Medium 个人资料,我想你不需要我解释什么是 IDE。但为了全面起见,我会快速地简要说明一下。
一个集成开发环境(IDE)是一种软件,用于帮助工程师和开发人员编写、构建、测试、调试和运行代码。最基本的IDE就是一个文本编辑器,但附加了许多其他功能,使软件能够理解各种编程语言并正确渲染它们。
我喜欢保持基础,只使用 VS Code。作为一名开发者,我还不是很熟练,无法理解 VS Code 和 Jet Brains 之间的区别以及其他内容。然而,我最近在浏览 YouTube,就像我平时做的那样,发现了一个关于用 NeoVim 而不是 VS Code 编码的视频。一开始,标题对我来说没有什么意义,因为我根本不知道什么是 NeoVim,但看得越多,我越感兴趣。
我还在学习 NeoVim 的各种功能,但简单来说,vi 是一个文本编辑器,由 Bill Joy 在 1976 年为 UNIX 系统创建。后来,一位名叫 Bram Moolenaar 的开发者将 vi 推进了 VIM 文本编辑器,你可以在 macOS 系统中找到这个默认软件。打开终端,输入“vim”即可。
VIM 主屏幕
NeoVim 是 Vim 的一个扩展,其创建者称之为该软件的“重构”。
NeoVim 为 Vim 添加了大量的功能,不仅限于编辑代码,还包括处理纯文本。它还创建了一个简单的系统,进一步扩展了软件的可用性,包括用 Lua 编程语言编写的插件。这些插件基本上将一个可能略显臃肿的文本编辑器推到了一个接近完整 IDE 的程度。有些人会争论说,它在每个意义上都是一个完整的 IDE。
我完全意识到自己无法充分解释NeoVim的深度,所以我只是会给你提供一些YouTube视频,展示许多程序员如何将NeoVim作为他们的主要代码编辑器。
现在如果你还在努力理解 Vim、NeoVim 和这个全新的编程世界,让我再给你加点料。NeoVim 有不同的版本!没错,就像冰激凌(或者 Linux 发行版)。由于 NeoVim 需要安装一堆插件才能成为一个有效的代码编辑器,社区中的一些热心人士开发了一些 NeoVim 发行版,这些发行版在安装软件后会预装所有必要的插件,让你可以立即开始编写代码。
个人来说,我一直在探索 NVChad 和 LunarVim,这两个都是非常流行的 NeoVim 版本。我仍然不知道自己在做什么,而且我还不敢用 NeoVim 去尝试一个完整的编码项目,但我希望有一天能实现这个目标。
NVChad 在我的本地机器上的加载页面
NVChad
一个为 Neovim 构建的 IDE 层,具有合理的默认设置。完全免费且由社区驱动。
www.lunarvim.org](https://www.lunarvim.org/?source=post_page-----60cf3879bad8--------------------------------)
我的本地机器上的 LunarVim 加载页面。
LunarVim
为了总结一下开发环境和工具,我想提到一个我一直使用的开源API客户端——Bruno。当我刚开始学习API和端点时,我只被介绍过Postman和Insomnia这两个选项。后来,Thunderclient作为一个VS Code插件加入了这个行列。
我不是全职开发者,也没有打算成为一名全职开发者,所以我不会自封为API客户端方面的权威。但是Bruno从未让我失望过,而且我愿意在有能力的时候支持开源软件。
在我的本地机器上加载 Bruno 的页面。
天啊,我该怎么开始解释终端的方方面面呢?
好的,让我们从头开始。终端或命令行是直接与你机器后台通信的最高效方式。所有在操作系统漂亮界面下的精彩操作都是通过它实现的。虽然有不同版本的命令行脚本语言,但它们(通常)都具有相同的目的。由于 Linux 和 macOS 都源自 Unix,因此它们的命令行有许多相似之处。
如果你曾经使用过电脑上的终端,它可能看起来像这样:
它上面的信息会根据你的机器和用户配置文件进行定制,但如果你使用的是 Mac,基础设置是相同的。该应用程序本身称为终端,它在标题栏中注明使用 zsh 作为 shell。终端提示符为“mello@Noir ~ %”,这表明了我的用户配置文件和本地机器名称,加上“%”符号表示我正在使用的 shell。如果你打算从事某种需要动手操作的技术职业,那么你可能需要学会使用终端。这是操控计算机最有效的方法。
去年的某个时候,我开始学习虚拟机,并通过SSH在我的本地机器上访问它们。这一切对我来说都像是魔法,当我决定更深入地了解如何在终端工作时,我了解到了真正的极客世界——终端自定义。
如上所述,那个简单的终端中有许多可移动的部分。终端应用程序本身、终端内的 shell 以及在您的命令之前的终端提示符。我发现这三部分都可以进行极端的自定义。
有许多终端应用程序(也称为终端模拟器)。它们都可以替代默认的终端应用程序,但通常会增加速度和功能,如自动建议、快捷键和其他自定义功能,以满足你的需求。我一直在探索 Alacritty 和 Warp,两者我都非常喜欢,但只对 Alacritty 进行了深入的自定义。其他终端应用程序包括:
我的自定义 Alacritty 终端。
我的 Warp 终端。
壳是用于与计算机交互的二进制“语言”或脚本。记住,计算机使用计算机语言,并且尽管命令行上开发了一些很酷的命令,计算机仍然需要将这些命令翻译成它能理解的语言。不同的壳在脚本编写和翻译成计算机语言时使用略有不同的“语言”。
到目前为止,我主要专注于 bash 和 fish。选择 bash 是因为它在后端世界中是主要的 shell(在 Windows 环境中则是 PowerShell),而选择 fish 则是因为它的名字叫 fish,这让我觉得很有趣。
无论是 bash
还是 fish
都会带你达到同样的目标(通常情况下),但 bash
(Bourne Again SHell)会像这样赋值和访问变量:
name="John Doe" echo $name
当使用 fish(友好交互式 shell)时,会这样操作:
set name "John Doe" echo $name
你可以看到它们非常相似,但包含一些小差异,当你深入到更高级的脚本编写时,这些差异会逐渐扩大。坦白说,如果你是为了职业目的学习命令行,我绝对建议你专注于学习 bash。bash 是一个符合 POSIX 标准的 shell,这意味着它满足某些标准,以保持跨平台兼容性。但像 fish 和下面列出的其他 shell 也很有趣,可以玩一玩。
终端提示符是终端体验中通常不太重要的一部分。最基本的情况下,它会显示关于机器和当前用户的信息,以及你在文件系统中移动时的路径。
许多终端模拟器自带命令提示符自定义功能,但我选择使用第三方应用——Starship。我花了很多时间根据自己的喜好定制提示符,并在这个过程中学习了 TOML(Tom 的显而易见的最小语言)文件配置“语言”。是的,除了 YAML 和 JSON 之外,还有另一种文件格式,哈哈。不过,学习起来并不难,Starship 的文档提供了很好的自定义提示符的分解说明,甚至还有一些开箱即用的预设。
当你通过命令行应用程序或直接通过终端模拟器自定义命令提示符时,Nerd Fonts 是一个你需要经常访问的网站。在终端中使用 Nerd 字体可以让你拥有非常不错的图标和字体自定义功能,这些功能还可以扩展到你的集成开发环境(如 VS Code)。
我的当前终端是运行 fish shell 并使用 Starship 作为提示符的 Alacritty,字体采用 SauceCodePro Nerd Font。
漫步在我的当前自定义终端。
这篇文章比我原本打算写的要长得多,所以我不会深入介绍这些工具/应用程序,但它们都为你的终端增加了某些功能。有些扩展了终端中已有的功能或命令,而有些则添加了可能帮助你提高效率的有用功能。如果你对其中任何一项感兴趣,我鼓励你去 YouTube 或 Reddit 上了解更多详情。
tmux 是一个终端复用器,这意味着它允许你将可视窗口划分为多个部分,以便同时访问和包含其他应用程序。因此,你不必同时打开多个终端窗口来访问不同的应用程序或运行新的工作流,tmux 允许你在同一个窗口或会话中完成这些操作。
tmux 将窗格垂直分割
thefuck 是一个名字非常激进的应用,它可以纠正错误输入的命令。
btop 会为你提供系统及其资源使用情况的详细概览。
eza 是一个替代 ls 的工具,增加了更多功能。
ls 与 eza 及其额外功能
ls
替代品。通过在 GitHub 上创建一个帐户来参与 eza-community/eza 的开发。
fzf 允许你直接从命令行搜索系统文件。安装应用程序后,运行“fzf”命令来初始化应用程序,然后你可以输入文件名进行搜索。
使用 fzf 搜索我的系统中的“Azure Translator”
zoxide 是 cd 的替代品,它会记住之前使用过的文件路径,这样你可以通过输入“z”命令后跟文件路径的自动建议直接到达该路径。如果你有很深的文件夹,这将是一个非常有用的工具。
ripgrep 是 grep
命令的扩展,可以在文件中搜索输入的短语或单词。
.gitignore
设置 - BurntSushi/ripgrepgithub.com
bat 是 cat 命令的扩展,它将以带有图标和语法高亮的方式显示文件,而不是纯文本。
tldr
基本上是 man
的一个扩展,它是一系列帮助页面的集合,涵盖了你能想到的任何命令。使用 tldr
后跟上你感到困惑的命令。
rip 是 rm 的替代品
navi 允许你创建自己的或下载“快捷参考表”,以了解如何使用命令或 CLI。这在你与云提供商合作并需要记住如何使用 AWS 或 Azure CLI 时特别有帮助。
broot 是 tree 的替代品,这样你的整个终端就不会被列出系统中每个文件和文件夹的过程所占据。
最后我们到了这里。Ollama 的应用程序图标真是太棒了,谁会不喜欢羊驼呢?
但是认真地说,Ollama 是一个用于利用大型语言模型(LLM)的开源应用程序。简单来说——Ollama 是一个免费、开源的应用程序,允许用户访问类似 GPT 的大型语言模型。Ollama 通过终端运行,但也有一个图形界面以提高易用性。此外,通过 Ollama 还可以使用大量的大型语言模型。
在英文中——你可以使用像 Chat-GPT 这样的应用在本地系统上免费使用,而不是通过互联网使用。
Ollama 在终端中运行 Llama2 LLM。
Ollama 还可以在 VS Code 中提供一个编码助手,作为 GitHub Copilot 的替代品。我目前正在使用 Continue VS Code 扩展,它允许我在 VS Code 中访问通过 Ollama 下载的 LLM。Continue 扩展提供了一个简单的 GUI,可以用来提问并获取编写代码时遇到问题的建议。
VS Code 使用 Continue 扩展运行 Starcode LLM。
如果你和我一样觉得 Ollama 这样的项目非常有趣,那么我建议你也去了解一下 HuggingFace 和 Kaggle 的机器学习相关功能。
你们好,我打字打累了。没想到这篇文章会这么长,但我真心希望我给你们展示了一些新的、有趣的东西,以提升你们的生产力和工作流程。我现在得停下来让我的手指休息一下。
再见,云上见!