Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

詢問 space 和 tab 轉換工具 #142

Open
puff-tw opened this issue Jan 2, 2018 · 6 comments
Open

詢問 space 和 tab 轉換工具 #142

puff-tw opened this issue Jan 2, 2018 · 6 comments

Comments

@puff-tw
Copy link
Member

puff-tw commented Jan 2, 2018

詢問 space 和 tab 自動轉換工具

有沒有什麼工具可以幫你做 space 和 tab 自動轉換

  • 指的是語法風格上面的 space 和 tab ( 每行的縮排 )
  • 把 space 和 tab 轉成你指定的 2 or 4 space
  • 指定資料夾或大量檔案
  • 檔案大多是程式語言檔 (eg: javascript、ruby )
  • 不限定編輯器的套件、獨立工具
  • 不限定作業系統,但最好是 Linux base
  • 如果有 space 和 tab 不固定數量隨機夾雜,也能正確轉換

可以的話,不希望一個個檔案打開來套用。

測試附件space2tab.txt
結果附件result.txt

@ascendbruce
Copy link

ruby 方面可以試試看 rubocop

裝好以後,開一個只抓 indent 相關的 rubocop config file

AllCops:
  DisabledByDefault: true

Layout/IndentationWidth:
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-indentation
  Enabled: true
  Width: 2

Layout/Tab:
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-indentation
  Enabled: true

在 command line 執行

rubocop --auto-correct

command line 的參數說明在 http://rubocop.readthedocs.io/en/latest/basic_usage/

但是你的 project 原本的 style 不固定的話,他可能會更正太多東西,所以你可能還要微調其他幾個參數例如

  • Layout/CaseIndentation
  • Layout/AccessModifierIndentation
  • Layout/CommentIndentation
  • ...

總之如果不滿意自動更正的結果,到 http://rubocop.readthedocs.io/en/latest/cops/#layout 找所有的 indent, space 相關的參數並調整 config

@aryung
Copy link

aryung commented Jan 2, 2018

https://stackoverflow.com/questions/11094383/how-can-i-convert-tabs-to-spaces-in-every-file-of-a-directory

可以用 linux 的 find 和 sed 組合來解決 ?

@puff-tw
Copy link
Member Author

puff-tw commented Jan 2, 2018

@aryung 我懂你的意思,就是單純使用正規表示法的 pattern 來取代。
你可以看我上面的測試附件,不固定的 space,那麼我 pattern 就要寫的更彈性才能符合需求。

@aryung
Copy link

aryung commented Jan 2, 2018

@puff-tw 測試文件可以補一下你想要變成的結果嗎?

@puff-tw
Copy link
Member Author

puff-tw commented Jan 2, 2018

@aryung

請參考最上面的結果附件

規則

  • 1個 tab 視為 2個 space
  • 2個space 視為 2個 space
  • 不足2個space 視而不見
  • 只限每行開頭的縮排,碰到文字後面有space、tab 不可以取代

範例

1個space 1個tab 變2個space
2個space 1個tab 變4個space
3個space 1個tab 變4個space
4個space 1個tab 變6個space
5個space 1個tab 變6個space
1個tab 1個space 變2個space
1個tab 2個space 變4個space
1個tab 3個space 變4個space
1個tab 4個space 變6個space
1個tab 5個space 變6個space

@yutin1987
Copy link

如果只是 js 我會建議你使用 eslint -fix ,所有的 code style 一次解決

https://eslint.org/docs/user-guide/command-line-interface

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants