โคลน cat(1) พร้อมการเน้นไวยากรณ์และการรวม Git
คุณสมบัติหลัก • วิธีใช้งาน • การติดตั้ง • การปรับแต่ง • เป้าหมายโครงการ ทางเลือกอื่น
[ภาษาอังกฤษ] [中文] [日本語] [เกาหลี] [Русский]
ขอขอบคุณ เป็นพิเศษสำหรับผู้สนับสนุนรายใหญ่ที่สุดของเรา:
แอปของคุณพร้อมสำหรับองค์กร
เริ่มขายให้กับลูกค้าองค์กรด้วยโค้ดเพียงไม่กี่บรรทัด
เพิ่มการลงชื่อเพียงครั้งเดียว (และอื่นๆ) ในไม่กี่นาทีแทนที่จะเป็นเดือน
bat
รองรับการเน้นไวยากรณ์สำหรับภาษาโปรแกรมและมาร์กอัปจำนวนมาก:
bat
สื่อสารกับ git
เพื่อแสดงการแก้ไขที่เกี่ยวข้องกับดัชนี (ดูแถบด้านซ้าย):
คุณสามารถใช้ตัวเลือก -A
/ --show-all
เพื่อแสดงและเน้นอักขระที่ไม่สามารถพิมพ์ได้:
ตามค่าเริ่มต้น bat
ไปป์เอาต์พุตของตัวเองไปยังเพจเจอร์ (เช่น less
) หากเอาต์พุตมีขนาดใหญ่เกินไปสำหรับหนึ่งหน้าจอ หากคุณต้องการให้ bat
ทำงานเหมือน cat
ตลอดเวลา (ไม่ต้องส่งออกหน้า) คุณสามารถตั้ง --paging=never
เป็นตัวเลือกได้ทั้งบนบรรทัดคำสั่งหรือในไฟล์กำหนดค่าของคุณ หากคุณตั้งใจจะใช้นามแฝง cat
to bat
ในการกำหนดค่าเชลล์ของคุณ คุณสามารถใช้ alias cat='bat --paging=never'
เพื่อรักษาพฤติกรรมเริ่มต้นได้
แม้จะมีชุดเพจเจอร์ คุณยังคงสามารถใช้ bat
เพื่อต่อไฟล์ได้ เมื่อใดก็ตามที่ bat
ตรวจพบเทอร์มินัลที่ไม่โต้ตอบ (เช่นเมื่อคุณไพพ์ไปยังกระบวนการอื่นหรือลงในไฟล์) bat
จะทำหน้าที่แทนแบบดรอปอินสำหรับ cat
และถอยกลับไปพิมพ์เนื้อหาไฟล์ธรรมดา โดยไม่คำนึงถึงตัวเลือก --pager
ค่า.
แสดงไฟล์เดียวบนเทอร์มินัล
> bat README.md
แสดงหลายไฟล์พร้อมกัน
> bat src/ * .rs
อ่านจาก stdin กำหนดไวยากรณ์โดยอัตโนมัติ (หมายเหตุ การไฮไลต์จะใช้ได้ก็ต่อเมื่อสามารถกำหนดไวยากรณ์ได้จากบรรทัดแรกของไฟล์ โดยปกติจะผ่าน shebang เช่น #!/bin/sh
)
> curl -s https://sh.rustup.rs | bat
อ่านจาก stdin ระบุภาษาอย่างชัดเจน
> yaml2json .travis.yml | json_pp | bat -l json
แสดงและเน้นอักขระที่ไม่สามารถพิมพ์ได้:
> bat -A /etc/hosts
ใช้แทน cat
:
bat > note.md # quickly create a new file
bat header.md content.md footer.md > document.md
bat -n main.rs # show line numbers (only)
bat f - g # output 'f', then stdin, then 'g'.
fzf
คุณสามารถใช้ bat
เป็นตัวอย่างสำหรับ fzf
เมื่อต้องการทำเช่นนี้ ให้ใช้ตัวเลือก bat
s --color=always
เพื่อบังคับให้เอาต์พุตเป็นสี คุณยังสามารถใช้ตัวเลือก --line-range
เพื่อจำกัดเวลาในการโหลดสำหรับไฟล์ขนาดยาว:
fzf --preview " bat --color=always --style=numbers --line-range=:500 {} "
สำหรับข้อมูลเพิ่มเติม โปรดดูที่ README
ของ fzf
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
โปรดทราบว่าเราต้องปิดเพจจิ้งเพื่อให้สิ่งนี้ทำงานได้ นอกจากนี้เรายังได้ระบุไวยากรณ์อย่างชัดเจน ( -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 --relative --diff-filter=d | xargs bat --diff
}
หากคุณต้องการใช้สิ่งนี้เป็นเครื่องมือแยกต่างหาก ลองดูที่ batdiff
ใน bat-extras
หากคุณกำลังมองหาการสนับสนุนเพิ่มเติมสำหรับการดำเนินการ git และ diff ลองดู delta
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
(แทนที่ bat
ด้วย batcat
หากคุณใช้ Debian หรือ Ubuntu)
อาจจำเป็นต้องตั้งค่า MANROFFOPT="-c"
หากคุณประสบปัญหาในการจัดรูปแบบ
หากคุณต้องการรวมสิ่งนี้ไว้ในคำสั่งใหม่ คุณสามารถใช้ batman
ได้
โปรดทราบว่าไวยากรณ์ Manpage ได้รับการพัฒนาในพื้นที่เก็บข้อมูลนี้และยังต้องการการปรับปรุงบางอย่าง
นอกจากนี้ โปรดทราบว่าสิ่งนี้จะไม่ทำงานกับการใช้ man
Mandocs
prettier
/ shfmt
/ rustfmt
สคริปต์ prettybat
เป็น wrapper ที่จะจัดรูปแบบโค้ดและพิมพ์ด้วย bat
--help
ข้อความ คุณสามารถใช้ bat
เพื่อปรับสีข้อความช่วยเหลือ: $ cp --help | bat -plhelp
คุณยังสามารถใช้กระดาษห่อหุ้มรอบสิ่งนี้ได้:
# in your .bashrc/.zshrc/*rc
alias bathelp= ' bat --plain --language=help '
help () {
" $@ " --help 2>&1 | bathelp
}
จากนั้นคุณสามารถทำ $ help cp
หรือ $ help git commit
เมื่อคุณใช้ zsh
คุณยังสามารถใช้นามแฝงร่วมเพื่อแทนที่ -h
และ --help
ทั้งหมด:
alias -g -- -h= ' -h 2>&1 | bat --language=help --style=plain '
alias -g -- --help= ' --help 2>&1 | bat --language=help --style=plain '
ด้วยวิธีนี้ คุณสามารถใช้ cp --help
ต่อไปได้ แต่รับหน้าวิธีใช้ที่มีสีต่างๆ
โปรดทราบว่าในบางกรณี -h
อาจไม่ใช่ตัวย่อของ --help
(เช่น ls
)
โปรดรายงานปัญหาใดๆ เกี่ยวกับไวยากรณ์ความช่วยเหลือในพื้นที่เก็บข้อมูลนี้
apt
)... และการแจกแจง Linux อื่น ๆ ที่ใช้ Debian
bat
พร้อมใช้งานบน Ubuntu ตั้งแต่ 20.04 ("Focal") และ Debian ตั้งแต่เดือนสิงหาคม 2021 (Debian 11 - "Bullseye")
หากการติดตั้ง Ubuntu/Debian ของคุณใหม่พอ คุณก็สามารถเรียกใช้:
sudo apt install bat
สิ่งสำคัญ : หากคุณติดตั้ง bat
ด้วยวิธีนี้ โปรดทราบว่าไฟล์ปฏิบัติการอาจถูกติดตั้งเป็น batcat
แทนที่จะเป็น bat
(เนื่องจากการขัดแย้งของชื่อกับแพ็คเกจอื่น) คุณสามารถตั้งค่า bat -> batcat
symlink หรือนามแฝงเพื่อป้องกันปัญหาใด ๆ ที่อาจเกิดขึ้นเนื่องจากสิ่งนี้และเพื่อให้สอดคล้องกับการแจกแจงอื่น ๆ :
mkdir -p ~ /.local/bin
ln -s /usr/bin/batcat ~ /.local/bin/bat
.deb
ล่าสุด)... และการแจกแจง Linux อื่น ๆ ที่ใช้ Debian
หากแพ็คเกจยังไม่ได้รับการเลื่อนระดับเป็นการติดตั้ง Ubuntu/Debian ของคุณ หรือคุณต้องการ bat
รุ่นล่าสุด ให้ดาวน์โหลดแพ็คเกจ .deb
ล่าสุดจากหน้าเผยแพร่และติดตั้งผ่าน:
sudo dpkg -i bat_0.18.3_amd64.deb # adapt version number and architecture
คุณสามารถติดตั้งแพ็คเกจ bat
ได้จากแหล่งที่มาอย่างเป็นทางการ โดยคุณต้องเปิดใช้งานพื้นที่เก็บข้อมูลที่เหมาะสม:
apk add bat
คุณสามารถติดตั้งแพ็คเกจ bat
ได้จากแหล่งข้อมูลอย่างเป็นทางการ:
pacman -S bat
คุณสามารถติดตั้งแพ็คเกจ bat
ได้จากที่เก็บ Fedora Modular อย่างเป็นทางการ
dnf install bat
คุณสามารถติดตั้งแพ็คเกจ bat
ได้จาก dev-kit
emerge sys-apps/bat
คุณสามารถติดตั้งแพ็คเกจ bat
ได้จากแหล่งข้อมูลอย่างเป็นทางการ:
emerge sys-apps/bat
คุณสามารถติดตั้ง bat
ผ่าน xbps-install:
xbps-install -S bat
คุณสามารถติดตั้ง bat
ผ่าน pkg:
pkg install bat
คุณสามารถติดตั้งแพ็คเกจ bat
ที่คอมไพล์แล้วด้วย pkg:
pkg install bat
หรือสร้างมันขึ้นมาเองจากพอร์ต FreeBSD:
cd /usr/ports/textproc/bat
make install
คุณสามารถติดตั้งแพ็คเกจ bat
โดยใช้ pkg_add(1)
:
pkg_add bat
คุณสามารถติดตั้ง bat
โดยใช้ตัวจัดการแพ็คเกจ nix:
nix-env -i bat
คุณสามารถติดตั้ง bat
โดยใช้ Flox
flox install bat
คุณสามารถติดตั้ง bat
ด้วย zypper:
zypper install bat
ขณะนี้ไม่มีแพ็คเกจ snap ที่แนะนำ แพ็คเกจที่มีอยู่อาจมีให้ใช้งาน แต่ไม่ได้รับการรองรับอย่างเป็นทางการและอาจมีปัญหา
คุณสามารถติดตั้ง bat
ด้วย Homebrew:
brew install bat
หรือติดตั้ง bat
ด้วย MacPorts:
port install bat
มีตัวเลือกในการติดตั้ง bat
บน Windows หลายวิธี เมื่อคุณติดตั้ง bat
แล้ว ลองดูที่ส่วน "การใช้ bat
บน Windows"
คุณจะต้องติดตั้งแพ็คเกจ Visual C++ Redistributable
คุณสามารถติดตั้ง bat
ผ่าน WinGet:
winget install sharkdp.bat
คุณสามารถติดตั้ง bat
ผ่าน Chocolatey:
choco install bat
คุณสามารถติดตั้ง bat
ผ่านสกู๊ป:
scoop install bat
คุณสามารถดาวน์โหลดไบนารีที่สร้างไว้ล่วงหน้าได้จากหน้าวางจำหน่าย
คุณจะต้องติดตั้งแพ็คเกจ Visual C++ Redistributable
ตรวจสอบหน้าวางจำหน่ายเพื่อดู bat
เวอร์ชันที่สร้างไว้ล่วงหน้าสำหรับสถาปัตยกรรมที่แตกต่างกันมากมาย ไบนารีที่เชื่อมโยงแบบคงที่ยังมีอยู่: ค้นหาไฟล์เก็บถาวรที่มี musl
ในชื่อไฟล์
หากคุณต้องการสร้าง bat
จากแหล่งที่มา คุณต้องมี Rust 1.70.0 ขึ้นไป จากนั้นคุณสามารถใช้ cargo
เพื่อสร้างทุกสิ่ง:
cargo install --locked bat
โปรดทราบว่าไม่สามารถติดตั้งไฟล์เพิ่มเติม เช่น man page หรือไฟล์การเติมเชลล์ด้วยวิธีนี้ได้ พวกเขาจะถูกสร้างขึ้นโดย cargo
และควรจะอยู่ในโฟลเดอร์เป้าหมายสินค้า (ภายใต้ build
)
ใช้ bat --list-themes
เพื่อรับรายการธีมที่มีอยู่ทั้งหมดสำหรับการเน้นไวยากรณ์ หากต้องการเลือกธีม TwoDark
ให้เรียก bat
ด้วยตัวเลือก --theme=TwoDark
หรือตั้งค่าตัวแปรสภาพแวดล้อม BAT_THEME
เป็น TwoDark
ใช้ export BAT_THEME="TwoDark"
ในไฟล์เริ่มต้นของเชลล์ของคุณเพื่อทำการเปลี่ยนแปลงอย่างถาวร หรือใช้ไฟล์กำหนดค่าของ bat
หากคุณต้องการดูตัวอย่างธีมต่างๆ ในไฟล์ที่กำหนดเอง คุณสามารถใช้คำสั่งต่อไปนี้ (คุณต้องใช้ fzf
สำหรับสิ่งนี้):
bat --list-themes | fzf --preview= " bat --theme={} --color=always /path/to/file "
bat
จะเลือกธีมที่เหมาะสมโดยอัตโนมัติ โดยขึ้นอยู่กับสีพื้นหลังของเทอร์มินัลของคุณ คุณสามารถใช้ตัวเลือก --theme-light
/ --theme-light
หรือตัวแปรสภาพแวดล้อม BAT_THEME_DARK
/ BAT_THEME_LIGHT
เพื่อปรับแต่งธีมที่ใช้ สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณสลับระหว่างโหมดมืดและโหมดสว่างบ่อยครั้ง
คุณยังสามารถใช้ธีมที่กำหนดเองได้โดยทำตามส่วน "การเพิ่มธีมใหม่" ด้านล่าง
bat
มีธีมสามธีมที่ใช้สี 8 บิตเสมอ แม้ว่าจะรองรับ TrueColor แล้วก็ตาม:
ansi
ดูดีบนเทอร์มินัลใด ๆ โดยจะใช้สีแบบ 3 บิต: ดำ แดง เขียว เหลือง น้ำเงิน ม่วงแดง ฟ้า และขาวbase16
ได้รับการออกแบบมาสำหรับธีมเทอร์มินัล base16 ใช้สี 4 บิต (สี 3 บิตบวกตัวแปรที่สว่าง) ตามหลักเกณฑ์การกำหนดรูปแบบ base16base16-256
ได้รับการออกแบบมาสำหรับ base16-shell โดยจะแทนที่สีสว่างบางสีด้วยสี 8 บิตตั้งแต่ 16 ถึง 21 อย่า ใช้สิ่งนี้เพียงเพราะคุณมีเทอร์มินัล 256 สี แต่ไม่ได้ใช้ base16-shellแม้ว่าธีมเหล่านี้จะถูกจำกัดมากกว่า แต่ก็มีข้อได้เปรียบเหนือธีมสีจริงสามประการ พวกเขา:
คุณสามารถใช้ตัวเลือก --style
เพื่อควบคุมลักษณะที่ปรากฏของเอาต์พุตของ bat
คุณสามารถใช้ --style=numbers,changes
เพื่อแสดงเฉพาะการเปลี่ยนแปลง Git และหมายเลขบรรทัด แต่ไม่มีตารางและไม่มีส่วนหัวของไฟล์ ตั้งค่าตัวแปรสภาพแวดล้อม BAT_STYLE
เพื่อทำการเปลี่ยนแปลงเหล่านี้อย่างถาวร หรือใช้ไฟล์การกำหนดค่าของ bat
เคล็ดลับ
หากคุณระบุสไตล์เริ่มต้นในไฟล์ปรับแต่งของ bat
คุณสามารถเปลี่ยนส่วนประกอบที่จะแสดงในระหว่างการรัน bat
ครั้งเดียวโดยใช้อาร์กิวเมนต์บรรทัดคำสั่ง --style
ด้วยการนำหน้าส่วนประกอบด้วย +
หรือ -
คุณสามารถเพิ่มหรือลบออกจากสไตล์ปัจจุบันได้
ตัวอย่างเช่น หากการกำหนดค่าของคุณมี --style=full,-snip
คุณสามารถเรียกใช้ bat ด้วย --style=-grid,+snip
เพื่อลบกริดและเพิ่มส่วนประกอบ snip
กลับเข้าไป หรือหากคุณต้องการแทนที่สไตล์ทั้งหมด คุณใช้ --style=numbers
เพื่อแสดงเฉพาะหมายเลขบรรทัดเท่านั้น
หากคุณพบว่าไวยากรณ์บางอย่างไม่พร้อมใช้งานภายใน bat
คุณสามารถทำตามคำแนะนำเหล่านี้เพื่อเพิ่มไวยากรณ์ใหม่ลงในการติดตั้ง bat
ปัจจุบันของคุณได้อย่างง่ายดาย
bat
ใช้ไลบรารี syntect
ที่ยอดเยี่ยมสำหรับการเน้นไวยากรณ์ syntect
สามารถอ่านไฟล์และธีม Sublime Text .sublime-syntax
ได้
แหล่งข้อมูลที่ดีสำหรับการค้นหาแพ็คเกจ Sublime Syntax คือ Package Control เมื่อคุณพบไวยากรณ์แล้ว:
สร้างโฟลเดอร์ที่มีไฟล์คำจำกัดความทางไวยากรณ์:
mkdir -p " $( bat --config-dir ) /syntaxes "
cd " $( bat --config-dir ) /syntaxes "
# Put new '.sublime-syntax' language definition files
# in this folder (or its subdirectories), for example:
git clone https://github.com/tellnobody1/sublime-purescript-syntax
ตอนนี้ใช้คำสั่งต่อไปนี้เพื่อแยกวิเคราะห์ไฟล์เหล่านี้ลงในแคชไบนารี:
bat cache --build
สุดท้าย ให้ใช้ bat --list-languages
เพื่อตรวจสอบว่ามีภาษาใหม่ให้ใช้หรือไม่
หากคุณต้องการกลับไปสู่การตั้งค่าเริ่มต้น ให้โทร:
bat cache --clear
หากคุณคิดว่าไวยากรณ์เฉพาะควรรวมอยู่ใน bat
โดยค่าเริ่มต้น โปรดพิจารณาเปิดตั๋ว "คำขอไวยากรณ์" หลังจากอ่านนโยบายและคำแนะนำที่นี่: เปิดคำขอไวยากรณ์
การทำงานนี้คล้ายกันมากกับวิธีที่เราเพิ่มคำจำกัดความไวยากรณ์ใหม่
ขั้นแรก สร้างโฟลเดอร์ที่มีธีมเน้นไวยากรณ์ใหม่:
mkdir -p " $( bat --config-dir ) /themes "
cd " $( bat --config-dir ) /themes "
# Download a theme in '.tmTheme' format, for example:
git clone https://github.com/greggb/sublime-snazzy
# Update the binary cache
bat cache --build
สุดท้าย ให้ใช้ bat --list-themes
เพื่อตรวจสอบว่าธีมใหม่พร้อมใช้งานหรือไม่
คุณสามารถเพิ่มรูปแบบชื่อไฟล์ใหม่ (หรือเปลี่ยนที่มีอยู่) โดยใช้ตัวเลือกบรรทัดคำสั่ง --map-syntax
ตัวเลือกรับอาร์กิวเมนต์ของรูปแบบ pattern:syntax
โดยที่ pattern
เป็นรูปแบบ glob ที่จับคู่กับชื่อไฟล์และเส้นทางไฟล์สัมบูรณ์ ส่วน syntax
คือชื่อเต็มของภาษาที่รองรับ (ใช้ bat --list-languages
สำหรับภาพรวม)
หมายเหตุ: คุณอาจต้องการใช้ตัวเลือกนี้เป็นรายการในไฟล์การกำหนดค่าของ bat
เพื่อความคงอยู่ แทนที่จะส่งผ่านบรรทัดคำสั่งแบบครั้งเดียว โดยทั่วไป คุณจะใช้ -l
หากคุณต้องการระบุภาษาสำหรับไฟล์ด้วยตนเอง
ตัวอย่าง: หากต้องการใช้การเน้นไวยากรณ์ "INI" สำหรับไฟล์ทั้งหมดที่มีนามสกุลไฟล์ . .conf
ให้ใช้
--map-syntax= ' *.conf:INI '
ตัวอย่าง: หากต้องการเปิดไฟล์ทั้งหมดชื่อ .ignore
(ตรงกันทุกประการ) ที่มีไวยากรณ์ "Git Ignore" ให้ใช้:
--map-syntax= ' .ignore:Git Ignore '
ตัวอย่าง: หากต้องการเปิดไฟล์ .conf
ทั้งหมดในโฟลเดอร์ย่อยของ /etc/apache2
ด้วยไวยากรณ์ "Apache Conf" ให้ใช้ (การแมปนี้มีอยู่แล้วภายใน):
--map-syntax= ' /etc/apache2/**/*.conf:Apache Conf '
bat
ใช้เพจเจอร์ที่ระบุไว้ในตัวแปรสภาพแวดล้อม PAGER
หากไม่ได้ตั้งค่าตัวแปรนี้ ระบบจะใช้ less
ตามค่าเริ่มต้น หากคุณต้องการใช้เพจเจอร์อื่น คุณสามารถแก้ไขตัวแปร PAGER
หรือตั้งค่าตัวแปรสภาพแวดล้อม BAT_PAGER
เพื่อแทนที่สิ่งที่ระบุใน PAGER
บันทึก
หาก PAGER
more
หรือ most
bat
จะใช้ less
อย่างเงียบๆ แทนเพื่อให้แน่ใจว่ารองรับสี
หากคุณต้องการส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งไปยังเพจเจอร์ คุณสามารถตั้งค่าผ่านตัวแปร PAGER
/ BAT_PAGER
ได้:
export BAT_PAGER= " less -RF "
แทนที่จะใช้ตัวแปรสภาพแวดล้อม คุณยังสามารถใช้ไฟล์การกำหนดค่าของ bat
เพื่อกำหนดค่าเพจเจอร์ ( ตัวเลือก --pager
)
less
เป็นเพจเจอร์ เมื่อใช้ less
เป็นเพจเจอร์ bat
จะส่งตัวเลือกพิเศษไปยัง less
โดยอัตโนมัติเพื่อปรับปรุงประสบการณ์ โดยเฉพาะ -R
/ --RAW-CONTROL-CHARS
, -F
/ --quit-if-one-screen
และภายใต้เงื่อนไขบางประการ -X
/ --no-init
และ/หรือ -S
/ --chop-long-lines
สำคัญ
ตัวเลือกเหล่านี้จะไม่ถูกเพิ่มหาก:
less
--pager
มีอาร์กิวเมนต์บรรทัดคำสั่งใด ๆ (เช่น --pager="less -R"
)BAT_PAGER
มีอาร์กิวเมนต์บรรทัดคำสั่ง (เช่น export BAT_PAGER="less -R"
) ตัวเลือก --quit-if-one-screen
จะไม่ถูกเพิ่มเมื่อ:
--paging=always
ถูกนำมาใช้BAT_PAGING
ถูกตั้งค่าเป็น always
จำเป็นต้องใช้ตัวเลือก -R
เพื่อตีความสี ANSI อย่างถูกต้อง
อ็อพชัน -F
สั่งให้ออก less
ลงทันที หากขนาดเอาต์พุตมีขนาดเล็กกว่าขนาดแนวตั้งของเทอร์มินัล ซึ่งสะดวกสำหรับไฟล์ขนาดเล็ก เนื่องจากคุณไม่จำเป็นต้องกด q
เพื่อออกจากเพจเจอร์
จำเป็นต้องใช้ตัวเลือก -X
เพื่อแก้ไขข้อบกพร่องด้วยฟีเจอร์ --quit-if-one-screen
ในเวอร์ชันที่เก่า less
เวอร์ชัน 530 น่าเสียดายที่มันยังหยุดการรองรับล้อเมาส์ด้วย less
. หากคุณต้องการเปิดใช้งานการเลื่อนด้วยล้อเลื่อนของเมาส์ในเวอร์ชันที่ less
และไม่ต้องกังวลว่าจะสูญเสียคุณสมบัติออกจากหน้าจอหนึ่งหน้าจอ คุณสามารถตั้งค่าเพจเจอร์ (ผ่าน --pager
หรือ BAT_PAGER
) เป็น less -R
สำหรับ less
530 หรือใหม่กว่า ก็ควรจะใช้งานได้ทันที
ตัวเลือก -S
จะถูกเพิ่มเมื่อมีการใช้ตัวเลือก -S
/ --chop-long-lines
ของ bat
สิ่งนี้บอกให้ตัดทอนบรรทัดใด ๆ ที่ใหญ่กว่าความกว้างของเทอร์มินัล less
bat
ขยายแท็บเป็น 4 ช่องว่างด้วยตัวเองโดยไม่ต้องอาศัยเพจเจอร์ หากต้องการเปลี่ยนแปลง เพียงเพิ่มอาร์กิวเมนต์ --tabs
พร้อมจำนวนช่องว่างที่คุณต้องการให้แสดง
หมายเหตุ : การกำหนดแท็บหยุดสำหรับเพจเจอร์ (ผ่านอาร์กิวเมนต์ --pager
โดย bat
หรือผ่านตัวแปรสภาพแวดล้อม LESS
สำหรับ less
) จะไม่ถูกนำมาพิจารณาเนื่องจากเพจเจอร์จะได้รับช่องว่างที่ขยายแทนแท็บแล้ว มีการเพิ่มลักษณะการทำงานนี้เพื่อหลีกเลี่ยงปัญหาการเยื้องที่เกิดจากแถบด้านข้าง การเรียก bat
ด้วย --tabs=0
จะแทนที่มันและปล่อยให้เพจเจอร์ใช้แท็บ
หากคุณใช้คุณสมบัติโหมดมืดใน macOS คุณอาจต้องการกำหนดค่า bat
ให้ใช้ธีมอื่นตามธีมของระบบปฏิบัติการ ตัวอย่างต่อไปนี้ใช้ธีม default
เมื่ออยู่ใน โหมดมืด และใช้ธีม GitHub
เมื่ออยู่ใน โหมดสว่าง
alias cat= " bat --theme= $ (defaults read -globalDomain AppleInterfaceStyle &> /dev/null && echo default || echo GitHub) "
bat
ยังสามารถปรับแต่งด้วยไฟล์กำหนดค่าได้ ตำแหน่งของไฟล์ขึ้นอยู่กับระบบปฏิบัติการของคุณ หากต้องการรับเส้นทางเริ่มต้นสำหรับระบบของคุณ โปรดโทร
bat --config-file
หรือคุณสามารถใช้ตัวแปรสภาพแวดล้อม BAT_CONFIG_PATH
หรือ BAT_CONFIG_DIR
เพื่อชี้ bat
ไปยังตำแหน่งที่ไม่ใช่ค่าเริ่มต้นของไฟล์การกำหนดค่าหรือไดเร็กทอรีการกำหนดค่าตามลำดับ:
export BAT_CONFIG_PATH= " /path/to/bat/bat.conf "
export BAT_CONFIG_DIR= " /path/to/bat "
สามารถสร้างไฟล์การกำหนดค่าเริ่มต้นได้ด้วยตัวเลือก --generate-config-file
bat --generate-config-file
ขณะนี้ยังมีไฟล์การกำหนดค่าทั้งระบบ ซึ่งอยู่ภายใต้ /etc/bat/config
บน Linux และ Mac OS และ C:ProgramDatabatconfig
บน windows หากมีไฟล์การกำหนดค่าทั้งระบบ เนื้อหาของการกำหนดค่าผู้ใช้จะถูกผนวกเข้าไป
ไฟล์การกำหนดค่าเป็นรายการอาร์กิวเมนต์บรรทัดคำสั่งอย่างง่าย ใช้ bat --help
เพื่อดูรายการตัวเลือกและค่าที่เป็นไปได้ทั้งหมด นอกจากนี้ คุณสามารถเพิ่มความคิดเห็นได้ด้วยการขึ้นบรรทัดใหม่ด้วยอักขระ #
ตัวอย่างไฟล์การกำหนดค่า:
# Set the theme to "TwoDark"
--theme= " TwoDark "
# Show line numbers, Git modifications and file header (but no grid)
--style= " numbers,changes,header "
# Use italic text on the terminal (not supported on all terminals)
--italic-text=always
# Use C++ syntax for Arduino .ino files
--map-syntax " *.ino:C++ "
bat
บน Windows bat
ส่วนใหญ่ใช้งานได้ทันทีบน Windows แต่ฟีเจอร์บางอย่างอาจต้องมีการกำหนดค่าเพิ่มเติม
คุณจะต้องติดตั้งแพ็คเกจ Visual C++ Redistributable
Windows มีเพจเจอร์ที่จำกัดมากในรูปแบบ more
. คุณสามารถดาวน์โหลดไบนารี Windows less
จากหน้าแรกหรือผ่าน Chocolatey หากต้องการใช้งาน ให้วางไบนารีไว้ในไดเร็กทอรีใน PATH
ของคุณหรือกำหนดตัวแปรสภาพแวดล้อม แพ็คเกจ Chocolatey ติดตั้งโดยอัตโนมัติ less
Windows 10 รองรับสีทั้ง conhost.exe
(พร้อมรับคำสั่ง) และ PowerShell ตั้งแต่ v1511 รวมถึงใน bash เวอร์ชันใหม่กว่า ใน Windows เวอร์ชันก่อนหน้า คุณสามารถใช้ Cmder ซึ่งรวมถึง ConEmu
หมายเหตุ: less
เวอร์ชันเก่าไม่สามารถตีความสีบน Windows ได้อย่างถูกต้อง เพื่อแก้ไขปัญหานี้ คุณสามารถเพิ่มเครื่องมือเสริม Unix ให้กับ PATH ของคุณเมื่อติดตั้ง Git หากคุณไม่ได้ติดตั้งเพจเจอร์อื่นๆ คุณสามารถปิดใช้งานเพจเจอร์ทั้งหมดได้โดยส่ง --paging=never
หรือโดยการตั้งค่า BAT_PAGER
เป็นสตริงว่าง
bat
บน Windows ไม่รองรับเส้นทางสไตล์ยูนิกซ์ของ Cygwin ( /cygdrive/*
) เมื่อส่งผ่านเส้นทาง cygwin สัมบูรณ์เป็นอาร์กิวเมนต์ bat
จะพบข้อผิดพลาดต่อไปนี้: The system cannot find the path specified. (os error 3)
ซึ่งสามารถแก้ไขได้โดยการสร้าง wrapper หรือเพิ่มฟังก์ชันต่อไปนี้ลงในไฟล์ .bash_profile
ของคุณ:
bat () {
local index
local args=( " $@ " )
for index in $( seq 0 ${ # args[@]} ) ; do
case " ${args[index]} " in
- * ) continue ;;
* ) [ -e " ${args[index]} " ] && args[index]= " $( cygpath --windows " ${args[index]} " ) " ;;
esac
done
command bat " ${args[@]} "
}
หากไฟล์อินพุตมีรหัสสีหรือลำดับหลีก ANSI หรืออักขระควบคุมอื่นๆ bat
จะมีปัญหาในการเน้นไวยากรณ์และการตัดข้อความ ส่งผลให้เอาต์พุตอ่านไม่ออก
หากเวอร์ชัน bat
ของคุณรองรับตัวเลือก --strip-ansi=auto
ก็สามารถใช้เพื่อลบลำดับดังกล่าวก่อนที่จะเน้นไวยากรณ์ หรือคุณสามารถปิดการใช้งานทั้งการเน้นไวยากรณ์และการตัดคำโดยส่งตัวเลือก --color=never --wrap=never
ไปที่ bat
บันทึก
ตัวเลือก auto
ของ --strip-ansi
หลีกเลี่ยงการลบลำดับการหลีกเลี่ยงเมื่อไวยากรณ์เป็นข้อความธรรมดา
bat
จัดการเทอร์มินัล ทั้งที่มี และ ไม่มี การสนับสนุน truecolor อย่างไรก็ตาม สีในธีมเน้นไวยากรณ์ส่วนใหญ่ไม่ได้รับการปรับให้เหมาะกับสี 8 บิต ดังนั้นจึงขอแนะนำอย่างยิ่งให้คุณใช้เทอร์มินัลที่รองรับ TrueColor 24 บิต ( terminator
, konsole
, iTerm2
, ...) หรือใช้หนึ่งในธีม 8 บิตพื้นฐานที่ออกแบบมาสำหรับชุดสีที่จำกัด ดูบทความนี้สำหรับรายละเอียดเพิ่มเติมและรายการเทอร์มินัลทั้งหมดที่รองรับ TrueColor
ตรวจสอบให้แน่ใจว่าเทอร์มินัล TrueColor ของคุณตั้งค่าตัวแปร COLORTERM
ให้เป็น truecolor
หรือ 24bit
มิฉะนั้น bat
จะไม่สามารถระบุได้ว่ารองรับ Escape Sequence 24 บิตหรือไม่ (และถอยกลับไปเป็นสี 8 บิต)
โปรดลองใช้ธีมอื่น (ดูรายการ bat --list-themes
) ธีม OneHalfDark
และ OneHalfLight
ให้สีตารางและเส้นที่สว่างยิ่งขึ้น
bat
รองรับ UTF-8 และ UTF-16 โดยกำเนิด สำหรับการเข้ารหัสไฟล์อื่นๆ คุณอาจต้องแปลงเป็น UTF-8 ก่อน เนื่องจากโดยทั่วไปแล้วการเข้ารหัสจะไม่สามารถตรวจพบอัตโนมัติได้ คุณสามารถ iconv
ทำได้ ตัวอย่าง: หากคุณมีไฟล์ PHP ในการเข้ารหัส Latin-1 (ISO-8859-1) คุณสามารถโทร:
iconv -f ISO-8859-1 -t UTF-8 my-file.php | bat
หมายเหตุ: คุณอาจต้องใช้ตัวเลือก -l
/ --language
หาก bat
ไม่สามารถตรวจพบไวยากรณ์อัตโนมัติได้
# Recursive clone to retrieve all submodules
git clone --recursive https://github.com/sharkdp/bat
# Build (debug version)
cd bat
cargo build --bins
# Run unit tests and integration tests
cargo test
# Install (release version)
cargo install --path . --locked
# Build a bat binary with modified syntaxes and themes
bash assets/create.sh
cargo install --path . --locked --force
หากคุณต้องการสร้างแอปพลิเคชันที่ใช้คุณสมบัติการพิมพ์ที่สวยงามของ bat
เป็นไลบรารี โปรดดูเอกสารประกอบ API โปรดทราบว่าคุณต้องใช้ regex-onig
หรือ regex-fancy
เป็นคุณสมบัติเมื่อคุณใช้ bat
เป็นไลบรารี
ดูคำแนะนำ CONTRIBUTING.md
โปรดติดต่อ David Peter ทางอีเมล หากคุณต้องการรายงานช่องโหว่ใน bat
bat
พยายามบรรลุเป้าหมายต่อไปนี้:
cat
(POSIX)มีทางเลือกมากมายหากคุณกำลังมองหาโปรแกรมที่คล้ายกัน ดูเอกสารนี้สำหรับการเปรียบเทียบ
ลิขสิทธิ์ (c) 2018-2023 ผู้พัฒนาค้างคาว
bat
มีให้บริการภายใต้เงื่อนไขของใบอนุญาต MIT หรือ Apache License 2.0 ตามตัวเลือกของคุณ
ดูไฟล์ LICENSE-APACHE และ LICENSE-MIT สำหรับรายละเอียดใบอนุญาต