Saya memiliki skrip shell besar yang menggunakan campuran spasi dan tab. Saya ingin inden kembali seluruh file berdasarkan sintaks, seperti Format Eclipse. Apakah ada program (mempercantik?) Yang akan melakukan ini?
Saya mengalami kesulitan mencari tahu logika dengan semuanya macet bersama misalnya
if [ "$CANCELLATION" ]
then
while test $num -gt 0
do
if [ "$cjb" -gt 0 ]
Mempelajari cara memanggil fungsi di Vim tetapi itu tidak berhasil.
Emacs - kehilangan semua baris baru
linux
indentation
jsymolon
sumber
sumber
M->
adalah pengikat yang biasa untukend-of-buffer
. Karena melepas tangan Anda dari keyboard itu jahat.C-x h
, yang berjalanmark-whole-buffer
.untabify
semuanya menjadi tidak dipilih, dan (2) apakah ini tidak hanya digunakan untuk berada di menu juga? Layak untuk menjadi!Di Vi / Vim setelah Anda mengatur sintaks file yang benar (
:set syntax=sh
), Anda dapat menekan: gg=G(atau 1G=G) untuk memperbaiki indentasi seluruh file.Berikut adalah perintah untuk memformat seluruh file di tempat:
Catatan: Buat cadangan sebelum menjalankan perintah di atas.
Untuk menguji format pertama, mengedit file dalam Vim dan jalankan:
:norm gg=G
.Lihat juga: Mengindeks ulang kode yang indentasi buruk di Vi SE
sumber
if
danfi
kata kunci. Mungkin diperlukan beberapa plugin?filetype=sh
(atauft
).Sepertinya shfmt bisa melakukan trik untuk Anda. Ini memformat kode shell / bash, yang mencakup lekukan.
sumber
shfmt -i 2 -ci ~/mariadb-qa/pquery-run.sh
Anda mungkin menginginkan Super Shell Indent . Simpan ke ~ / .vim / indent dan ketika Anda berikutnya di vim, jalankan
:source ~/.vim/indent/sh.vim
Anda juga mungkin ingin mengatur indentasi file berbasis di .vimrc Anda
Jika Anda tidak keberatan vim mengacaukan pemformatan Anda, tambahkan baris ini ke vimrc juga.
Bagaimanapun, inilah yang Anda tunggu-tunggu. Saat Anda selanjutnya mengedit skrip shell di vim, dengan asumsi Anda telah mengaktifkan indentasi pintar dan menginstal super shell ident, cukup tekan tombol ikuti untuk memasang kembali skrip Anda:
gg=G
sumber