使用 Dotfiles 管理开发和其他许多神奇的功能

Avatar of Simon Owen
Simon Owen

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

大家好!🎉 我是 Simon Owen,多年来,我一直很乐意成为 dotfiles 社区 的一员并从中学习。我花费大量时间 教授开发者并举办研讨会。在这些课程中,演示我如何设置开发环境通常是人们最欣赏的事情之一。

Dotfiles 是我的开发环境的关键部分。没听说过它们?好吧,即使你听说过,回顾一下它们是什么以及使用它们的好处也是个好主意。

去年,我给自己设定了一个目标,要创建一个 屏幕录制系列。如果您喜欢这篇文章并想了解更多信息,请 订阅邮件列表并获取下载链接。如果您非常喜欢它,您也可以🦄 在这里捐赠!🦄

什么是点文件?

如果您是第一次听说 dotfiles,对它们是什么以及它们的作用感到困惑是完全正常的。我记得我花了相当长的时间才意识到点文件只是一个在文件名前面带有一个点的文件!

有两种常见的点文件示例。首先,您可能已经熟悉的一些点文件通常位于许多开源项目的根目录下——例如,.editorconfig 包含代码编辑器首选项,以帮助维护项目的编码风格一致性。您可能还见过 .stylelintrc.eslintrc,它们分别设置 CSS 和 JavaScript 规则。

其次(也是我们今天要看的),是可以在用户目录的根级别(即 /Users/<username>)存在的点文件。其中一个点文件是 .aliases,它包含自定义命名的命令,可以加快终端中的工作速度。另一个是 .bash_prompt,它用于将终端中的 $ 更改为更有趣的东西。在我的情况下,我设置了这个家伙,以便当事情变得艰难时,他可以跳出来让我微笑。

༼ つ ◕_◕ ༽つ

希望您已经开始了解 dotfiles 的有用之处。它们就像隐藏的宝石(从字面上看,因为默认情况下它们是隐藏的),可以为您的机器解锁超级能力,以帮助进行开发。我们正在谈论自动化、优化和高效的工作流程等。

首先,我要感谢 dotfiles 社区

在我们深入研究 dotfiles 之前,值得一提的是它们背后的社区是多么棒。当我第一次分叉 Paul Irish 的 dotfile 仓库 时,里面有很多我不理解的东西。Mathias BynensPaul Irish 通过回答有关代码的问题给了我极大的帮助,正是他们乐于助人的态度成为我被这个概念和社区吸引的原因之一。

有时,我会在社区发布一些我想自动化的内容,但我无论如何也弄不明白。而且,我总是会收到有用的回复。例如:Eric Czarny 为我编写了一个应用程序来自动化我的 Spectacle 设置,Mathias 还贡献了一个 代码片段。这太酷了!

然后还有 macOS 更新之类的事情。dotfiles 社区通常会紧跟这一趋势,并在 GitHub 评论中提供有关任何不再起作用的内容或其他有用信息的建议。然后,您可以相应地修改您的 dotfiles,例如添加以下代码,该代码可以提高蓝牙耳机/耳机的音质。

defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -int 40

深入了解 dotfiles

上面的代码示例可能看起来有点熟悉。它与这个经常使用的示例类似,用于显示隐藏文件。

defaults write com.apple.finder AppleShowAllFiles -bool true

…或这个示例,用于 在 Dock 中添加空格

defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}'; killall Dock

这些命令可以直接粘贴到终端中。正如您可能预期的那样,类似于 -bool true 的内容会将布尔值从 false 更改为 true 并重置命令以供以后使用。

如果您像我一样拥有**很多**此类命令,那么 .macos(以前为 .osx)点文件将变得特别有用。我们可以自动化并一次运行所有这些命令,而不是逐个复制粘贴每个命令。

让我们浏览一些示例

在 dotfiles 中我们可以做很多很棒的事情。以下是一些我日常工作中依赖的一些实用案例。

为默认命令设置别名 (.aliases)

在终端中导航不同的目录可能很麻烦,并且很容易迷失在 cd 的混乱中。

我们可以使用 .aliases 点文件中自定义命令替换标准的“更改目录”(cd)命令。例如,使用此别名完全放弃使用 cd .. 命令向上移动一个目录时的 cd 前缀,而只使用 .. 本身。

alias ..="cd .."

当然,它只减少了两个字母,但这更容易记住。

An animated screenshot of a Terminal window typing two periods instead of the full cd command to move up a level in the directory.

我们可以做同样的事情来创建到某些目录的快捷方式。

alias dl="cd ~/Downloads"

或者,为简写命令任务创建别名。

alias hs="hexo serve"
An animated screenshot of a Terminal window typing a command called hs instead of typing out hexo serve in full.

哦,还有一个!仅列出目录。

alias lsd="ls -lF ${colorflag} | grep --color=never '^d'"

为终端创建自定义 bash 提示符 (.bash_prompt)

我之前稍微提到过这一点,但以下是我如何将我的 bash 提示符($)变成一个更有趣的小家伙。这是在 .bash_prompt 点文件中直接完成的。

PS1="༼ つ ◕_◕ ༽つ"

创建 Git 快捷方式以加快提交速度 (.gitconfig)

我们可以使用 .gitconfig 点文件更有效地一次提交所有更改。使用 ca!git add -A && git commit -av 简洁得多。

ca = !git add -A && git commit -av

另一个方便的快捷方式:按提交消息查找提交。

fm = "!f() { git log --pretty=format:'%C(yellow)%h  %Cblue%ad  %Creset%s%Cgreen  [%cn] %Cred%d' --decorate --date=short --grep=$1; }; f"

自动化常见的 Homebrew 任务 (brew.sh)

使用 Homebrew 进行包管理?虽然严格来说它不是点文件(它在文件名前面没有点),但 Homebrew 为我们提供了 brew.sh shell 脚本文件。此文件自动执行应用程序和工具的安装和管理。

brew install git
brew install tree
brew cask install google-chrome
brew cask install iterm2
brew cask install sublime-text

保护您的 Git 凭据 (.extra)

将您不想公开分享的信息隐藏在一个私有仓库中的一个文件中,并仅供自己使用。例如,此文件的一个好主意是任何特定于您的内容,例如您的 Git 凭据。这将防止其他人克隆、运行您的 dotfiles,然后以您的身份提交!

# Git credentials
# Not in the repository, to prevent people from accidentally committing under my name
GIT_AUTHOR_NAME="Simon Owen"
GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
git config --global user.name "$GIT_AUTHOR_NAME"
GIT_AUTHOR_EMAIL="<ADD-YOUR-EMAIL-HERE>"
GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
git config --global user.email "$GIT_AUTHOR_EMAIL"

为任务编写自定义函数 (.functions)

Dotfiles 不仅仅是快捷方式和别名。我们还可以在 .functions 中创建自定义函数来执行更高级的操作。例如,创建一个新目录并更改到该目录

function mkd() {
  mkdir -p "$@" && cd "$_";
}
An animated screenshot of a Terminal window typing mkd new to trigger the creation of a new folder and navigating to it.

或者,我们可以使用一个字母命令 (o) 在 Finder 中打开给定位置

function o() {
  if [ $#-eq 0 ]; then
    open .;
  else
    open "$@";
  fi;
}

指定您的 $PATH 并保持私有 (.path)

$PATH 允许运行可执行文件。在这里,我们可以设置文件路径,以便可以直接运行可执行文件,而不是在终端中手动导航到每个路径。此文件可能包含敏感信息。因此,此文件通常保存在私有仓库中。

这是一个将 ~/utils 添加到 $PATH 的示例

export PATH="$HOME/utils:$PATH"

强制 Vim 使用特定主题 (.vimrc)

编辑器配置文件非常适合确保跨项目的格式一致性,但我们也可以在 .vimrc 文件中告诉 Vim 编辑器使用特定的主题

" Use the Solarized Dark theme
set background=dark
colorscheme solarized
let g:solarized_termtrans=1

额外:macOS 的有用终端技巧

好的,这里有一些针对 Mac 用户的额外内容,与 dotfiles 无关,但我们可以在终端中执行一些操作,使 macOS 拥有强大的功能,从而完成一些非常棒的事情,使日常使用更加轻松和愉快。

首先,我们可以通过在终端中输入以下命令,在 Finder 中默认显示隐藏文件,以便始终可见 dotfiles

defaults write com.apple.finder AppleShowAllFiles -bool true

发现 Finder 中滚动条的切换方式很烦人?让我们始终使其可见

defaults write NSGlobalDomain AppleShowScrollBars -string "Always"

默认情况下,macOS 每周检查一次软件更新。但也许我们希望每天或以其他时间间隔检查一次

defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1

您知道按住键盘上的某个键会重复该字符吗?好吧,它会以确定的速度重复,我们可以将其提升到极快的速度

defaults write NSGlobalDomain KeyRepeat -int 0

有些人喜欢 macOS 在截取窗口截图时包含阴影框的方式。其他人则不。以下是如何将其关闭

defaults write com.apple.screencapture disable-shadow -bool true

并且,在此示例中,我们可以自动调整 Dock 中图标的大小

defaults write com.apple.dock tilesize -int 36

这仅仅是冰山一角!在我的屏幕录像系列中,我介绍了 100 多个这样的技巧。

结论

随着时间的推移,Web 开发变得越来越复杂。我们都有根据个人喜好使开发工作流程变得更加轻松和舒适的方法。

您可能是一位经验丰富的开发者,了解 Node、npm 和 Git 等内容,但仍然发现自己陷入了终端窗口中,遇到了一堆错误。或者,您可能是新手,发现这些工具和其他工具复杂且难以掌握。

无论哪种方式,希望了解有关 dotfiles 及其功能的更多信息都能为您提供新的武器,使您的开发环境适合您,加快您的工作流程,并为您的机器赋予更多强大的功能!

提醒一下,我的 屏幕录像系列 将为您提供更多提示和技巧,以及如何设置开发环境的良好思路。这是该系列的第一部分。展望未来,我将考虑扩展它,因此如果您有任何其他想让我涵盖的内容,请告诉我!