百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

「效率工具分享」:支持大量编程和标记语言的语法突出显示:bat

liuian 2025-01-03 17:18 29 浏览

更多互联网新鲜资讯、工作奇淫技巧关注【飞鱼在浪屿】(日更新)

bat 支持大量编程和标记语言的语法突出显示:


Git集成

bat与git以显示有关索引的修改(请参见左侧栏):


显示不可打印的字符

可以使用-A/--show-all选项来显示和突出显示不可打印的字符:


自动分页

默认情况下,如果输出对于一个屏幕来说太大,则将bat其自身的输出通过管道传送(例如less)。如果您希望一直bat像cat以前一样工作(从不输出页面),则--paging=never可以在命令行或配置文件中将其设置为选项。如果你打算别名cat来bat在你的shell配置,您可以使用alias cat='bat --paging=never'保存的默认行为。


文件串联

即使设置了pager,您仍然可以使用bat串联文件。每当bat检测到非交互式终端时(即,当您通过管道传输到另一个进程或文件中时),无论该选项的值如何,bat都将作为临时替代品cat并退回打印纯文件内容--pager。


如何使用

在终端上显示单个文件

>bat README.md

一次显示多个文件

>bat src / * .rs

从stdin读取,自动确定语法(请注意,仅当可以从文件的第一行确定语法时,突出显示才会起作用,通常通过诸如的shebang来确定#!/bin/sh)

> curl -s https://sh.rustup.rs | bat

从标准输入中读取,明确指定语言

> yaml2json .travis.yml | json_pp | bat -l json

显示并突出显示不可打印的字符:

>bat -A / etc / hosts

作为cat的替代品:

bat > note.md  # 快速 创建一个新文件

bat header.md content.md footer.md > document.md

bat -n main.rs  # 展示行数 (only)

bat f - g  # 先输出 'f', 之后是 stdin, 之后是 'g'.

与其他工具整合

fzf

您可以bat用作的fzf的预览器fzf。为此,请使用bats--color=always选项强制输出彩色。您还可以使用--line-range option限制长文件的加载时间:

fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'

find 或者 fd

您可以使用的-exec选项find来预览所有搜索结果bat:

find … -exec bat {} +

如果碰巧使用fd,则可以使用-X/--exec-batch选项执行相同的操作:

fd … -X bat

ripgrep

使用batgrep,bat可以用作ripgrep搜索结果的打印机。

batgrep needle src/

tail -f

bat可以tail -f与语法高亮结合使用以持续监视指定文件。

tail -f /var/log/pacman.log | bat --paging=never -l log

git

您可以与bat结合使用,git show以突出显示正确语法的形式查看给定文件的旧版本:

git show v0.6.0:src/main.rs | bat -l rs

git diff

您可以bat与结合使用git diff,以适当的语法高亮显示围绕代码更改的行:

batdiff() {
    git diff --name-only --diff-filter=d | xargs bat --diff
}

xclip

输出的行号和Git修改标记bat会使复制文件内容变得困难。为了防止这种情况,您可以bat使用-p/--plain选项调用,或简单地将输出通过管道传递到xclip:

bat main.cpp | xclip

bat 将检测到输出被重定向并打印纯文件内容。

man

bat可以man通过设置 MANPAGER环境变量用作的彩色分页器:

export MANPAGER="sh -c 'col -bx | bat -l man -p'"
man 2 select

(如果您使用的是Debian或Ubuntu,请替换bat为batcat)

安装

在Ubuntu上(使用apt)

apt install bat

重要提示:如果以bat这种方式安装,请注意,可执行文件可能是batcat而不是bat(由于与另一个软件包的名称冲突)而安装的。您可以设置bat -> batcat符号链接或别名,以防止因此而引起的任何问题并与其他发行版保持一致:

mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat

在Ubuntu上(使用最新.deb软件包)

...以及其他基于Debian的Linux发行版。

如果该软件包尚未升级到您的Ubuntu / Debian安装中,或者您想要的是最新版本bat,请.deb从发行页面下载最新的软件包, 并通过以下方式进行安装:

sudo dpkg -i bat_0.18.1_amd64.deb   #修改版本号和体系结构

在MacOS(或Linux)上通过Homebrew

您可以在MacOS上bat使用Homebrew进行安装,或者在Linux上使用Homebrew进行安装:

brew install bat

在MacOS上通过MacPorts

port install bat

在Windows上

您将需要安装Visual C ++可再发行组件包。

Chocolatey

通过Chocolatey安装:

choco install bat

scoop

通过scoop安装:

scoop install bat

cargo

如果bat要从源代码构建,则需要Rust 1.45或更高版本。然后,您可以cargo用来构建所有内容:

cargo install --locked bat

突出主题

使用bat --list-themes获得的语法高亮所有可用的主题列表。要选择TwoDark主题,请bat使用 --theme=TwoDark选项进行调用或将BAT_THEME环境变量设置为 TwoDark。export BAT_THEME="TwoDark"在Shell的启动文件中使用,以使更改永久生效。或者,使用bat的 配置文件。

如果要在自定义文件上预览不同的主题,则可以使用以下命令(需要fzf此命令):

bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"

bat默认情况下,在深色背景上看起来不错。但是,如果您的终端使用浅色背景,则某些主题对GitHub或OneHalfLight会更好。您还可以按照下面的“添加新主题”部分使用自定义主题 .

相关推荐

Optional是个好东西,如果用错了就太可惜了

原文出处:https://xie.infoq.cn/article/e3d1f0f4f095397c44812a5be我们都知道,在Java8新增了一个类-Optional,主要是用来解决程...

IDEA建议:不要在字段上使用@Autowire了!

在使用IDEA写Spring相关的项目的时候,在字段上使用@Autowired注解时,总是会有一个波浪线提示:Fieldinjectionisnotrecommended.纳尼?我天天用,咋...

Spring源码|Spring实例Bean的方法

Spring实例Bean的方法,在AbstractAutowireCapableBeanFactory中的protectedBeanWrappercreateBeanInstance(String...

Spring技巧:深入研究Java 14和SpringBoot

在本期文章中,我们将介绍Java14中的新特性及其在构建基于SpringBoot的应用程序中的应用。开始,我们需要使用Java的最新版本,也是最棒的版本,Java14,它现在还没有发布。预计将于2...

Java开发200+个学习知识路线-史上最全(框架篇)

1.Spring框架深入SpringIOC容器:BeanFactory与ApplicationContextBean生命周期:实例化、属性填充、初始化、销毁依赖注入方式:构造器注入、Setter注...

年末将至,Java 开发者必须了解的 15 个Java 顶级开源项目

专注于Java领域优质技术,欢迎关注作者:SnailClimbStar的数量统计于2019-12-29。1.JavaGuideGuide哥大三开始维护的,目前算是纯Java类型项目中Sta...

字节跨平台框架 Lynx 开源:一个 Web 开发者的原生体验

最近各大厂都在开源自己的跨平台框架,前脚腾讯刚宣布计划四月开源基于Kotlin的跨平台框架「Kuikly」,后脚字节跳动旧开源了他们的跨平台框架「Lynx」,如果说Kuikly是一个面向...

我要狠狠的反驳“公司禁止使用Lombok”的观点

经常在其它各个地方在说公司禁止使用Lombok,我一直不明白为什么不让用,今天看到一篇文章列举了一下“缺点”,这里我只想狠狠地反驳,看到列举的理由我竟无言以对。原文如下:下面,结合我自己使用Lomb...

SpringBoot Lombok使用详解:从入门到精通(注解最全)

一、Lombok概述与基础使用1.1Lombok是什么Lombok是一个Java库,它通过注解的方式自动生成Java代码(如getter、setter、toString等),从而减少样板代码的编写,...

Java 8之后的那些新特性(六):记录类 Record Class

Java是一门面向对象的语言,而对于面向对象的语言中,一个众所周知的概念就是,对象是包含属性与行为的。比如HR系统中都会有雇员的概念,那雇员会有姓名,ID身份,性别等,这些我们称之为属性;而雇员同时肯...

为什么大厂要求安卓开发者掌握Kotlin和Jetpack?优雅草卓伊凡

为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡一、Kotlin:Android开发的现代语言选择1.1Kotlin是什么?Kotlin是由...

Kotlin这5招太绝了!码农秒变优雅艺术家!

Kotlin因其简洁性、空安全性和与Java的无缝互操作性而备受喜爱。虽然许多开发者熟悉协程、扩展函数和数据类等特性,但还有一些鲜为人知的特性可以让你的代码从仅仅能用变得真正优雅且异常简洁。让我们来看...

自行部署一款免费高颜值的IT资产管理系统-咖啡壶chemex

在运维时,ICT资产太多怎么办,还是用excel表格来管理?效率太低,也不好多人使用。在几个IT资产管理系统中选择比较中,最终在Snipe-IT和chemex间选择了chemex咖啡壶。Snip...

PHP对接百度语音识别技术(php对接百度语音识别技术实验报告)

引言在目前的各种应用场景中,语音识别技术已经越来越常用,并且其应用场景正在不断扩大。百度提供的语音识别服务允许用户通过简单的接口调用,将语音内容转换为文本。本文将通过PHP语言集成百度的语音识别服务,...

知识付费系统功能全解析(知识付费项目怎么样)

开发知识付费系统需包含核心功能模块,确保内容变现、用户体验及运营管理需求。以下是完整功能架构:一、用户端功能注册登录:手机号/邮箱注册,第三方登录(微信、QQ)内容浏览:分类展示课程、文章、音频等付费...