10 - BAT - 使用高亮预览文件

cat 指令可以预览文件的内容,是个简单好用的指令,但是它不会对不同的档案类型提供语法高亮的预览,因此看起来会有点吃力。

专为开发而生的预览指令 BAT

BAT 是个 cat 指令的加强版,它特别针对开发者的需求,导入了包含语法高亮、整合 Git 等功能,使开发者可以更轻松、方便地预览程序码。

安装 BAT

使用 Homebrew 安装 BAT :

brew install bat

安装完成後,可以使用 bat 指令叫用。

使用 BAT

batcat 的使用方式类似,在参数中输入想要预览的档案路径,就可以观看预览。

bat .editorconfig

https://ithelp.ithome.com.tw/upload/images/20210926/20107789WY88h0zOtL.png

这个例子我们可以看到语法的高亮显示,并且在左边有以符号表示 Git 状态的标示。

如果加上 -A 参数,我们可以看到平常不会显示的字元,例如空白或换行。

bat -A .editorconfig

https://ithelp.ithome.com.tw/upload/images/20210926/20107789Xu4lQcJtXN.png

如果想要同时预览多个档案,可以使用 glob 来替换指定的档案路径。

bat days/**/*.md

上例会将所有在 days 目录下,不管阶层地输出预览所有的 .md 档案内容。

除了从档案读取内容外, bat 也提供 stdin 的输入。

curl -s https://raw.githubusercontent.com/sharkdp/bat/master/CONTRIBUTING.md | bat

bat 会自动判断内容的类型(只会以第一行判断,例如 #!/bin/sh ),并提供相关的语法高亮,也可以使用 -l 指定格式。

curl -s https://raw.githubusercontent.com/sharkdp/bat/master/CONTRIBUTING.md | bat -l md

整合其他的工具

bat 可以与许多不同的工具整合,这里介绍几个常用的工具。

fd

请确认已经安装 fd

fd 指令可以使用 -X (或 --exec-batch )提供搜寻结果的预览功能:

fd -H -e js -X bat

上例会产生所有 js 档案的预览。

ripgrep

请确认已经安装 ripgrep

使用 batgrep 可以为 ripgrep 所搜寻的结果带来更好的预览效果。

在使用前须要先安装 bat-extras ,这个工具提供许多工具与 BAT 的整合使用。

brew install eth-p/software/bat-extras

安装完成後,我们就可以使用 batgrep 指令叫用 ripgrep 找寻结果并使用 bat 显示预览。

batgrep foo days/

https://ithelp.ithome.com.tw/upload/images/20210926/20107789rj7zz0N3Km.png

本文重点整理

  • cat 提供的档案预览功能,对於开发来说,较为简单。
  • bat 提供语法高亮与 Git 整合的预览功能,对於开发者较为合适。
  • bat -A 会显示隐藏的字元,例如空白或换行。
  • 除了档案内容外, bat 还提供 stdin 的输入方式。
  • 使用 bat -l 可以指定语言高亮的目标。
  • bat 可以与其他工具整合。
    • fdbat 可以使用 -X 参数结合,让我们可以预览搜寻结果的档案内容。
    • ripgrepbat 可以藉由 batgrep 工具整合,让搜寻结果使用 bat 预览。

参考资料


<<:  Day-11 Ruby里字串的单引号和双引号差别?

>>:  [12] [烧瓶里的部落格] 02. 定义和使用资料库 - 使用 SQLite

Day02 - 可能发生的费用、目标架构说明

可能发生的费用 云地混合的DevOps环境 AWS CodeCommit AWS CodePipel...

LeetCode解题 Day23

1328. Break a Palindrome https://leetcode.com/prob...

Day 21 - 天眼CNN 的耳朵和嘴巴 - RNN(2) -LSTM

LSTM vs. Simple RNN 再看一次Simple RNN 图中说明 绿色框为一个cell...

Day 8 - 目前(传统)的机器学习三步骤(3)-训练

第三步 Training : 训练并验证,找出最佳结果 挑选[学习演算法] 什麽是演算法(Algor...

【Side Project】 点菜单功能实作 - 前台资料传到後台

这篇我们接着做: 取得网页上栏位资料 资料送往後台 资料写回资料库 取得栏位资料 在送资料到後台之前...