본문 바로가기

SmartHome. IoT/SmartHome 팁

HomeAssistant 사용시 YAML 에디트 팁

728x90
반응형

안녕하세요~ 레이군 입니다.

오늘은 홈 어시스턴트 사용시, 여러가지로 사용할 수 있는 yaml 에디트 팁 몇개를 가지고 왔습니다.

일반적으로 HA에서 yaml 에디트를 사용할때는, UI편집시 / 자동화 or 스크립트 구성시 / file editor 사용시 등

기본적인 설정이 아닌 좀 세부적인걸 다루고 싶을때 주로 사용하게 됩니다.

보통은 UI에디터로 충분히 가능한 부분들이라 자주 안 쓰시겠지만,

키보드에서 단축키를 쓰면 마우스 사용하는것 보다 빠르듯, 익숙해지면 쉽고 빠르고 강력하게 사용할 수 있습니다.

들여쓰기 단축키

그런데 yaml 에디트를 사용하다 보면 실수할 가능성이 엄청 높은게 있습니다.

바로 들여쓰기(indent) 인데요

이건 yaml 에디트를 할때 정말, 매우, 너무나 중요한 부분입니다.

가령 위 자동화 액션을 보시면, 선택(choose) 로 컨티션과 시퀀스를 정하고

그 아래 다시 컨디션과 시퀀스를 정하는데 시퀀스 아래 보면 또 choose가 있고..복잡하죠?

이런걸 구성할때, 한줄이라도 앞으로 당겨져 있거나 하면 제대로 동작이 안됩니다.

UI에디트를 할때야 그냥 클릭클릭 하면 알아서 들여쓰기까지 다 맞춰주니 상관 없지만,

어딘가에서 소스를 보고 긁어와서 붙여넣기를 할때 보면 문제가 발생하는 경우가 많죠.

그래서 우리는 이 들여쓰기를 맞춰주는걸 매우 중요하게 생각합니다.

가끔 네이버 댓글에 yaml 구문을 긁어서 붙여보셨다면, 엄청 귀찮아 지는걸 보실 수 있습니다.

글자의 앞 공백은 전부 무시하고, 앞으로 달라붙게 되거든요.

이렇게 적으면 됩니다! 하고 쫙 붙여넣어서 엔터를 치면...

이렇게... 앞에 공백이 전부 사라집니다...? 헐?

알아보기 어려운것도 문제지만, 구조를 좀 알아서 이건 이만큼 들여쓰기 하면 되겠다~ 싶어도

이걸 언제 하나하나 들여쓰기 하나요.. 엄청 귀찮아지겠죠?

하지만 이 귀찮은 과정도 조금은 쉽게 가능할 수 있어요.

한번 같이 해보시죠!

자...이렇게 붙여넣어 보니 좀 암담하네요...

일단 action: 한줄을 제외하고는 최소한 2칸 이상 인덴트가 되어야 하니...

어우 이게 얼마인가요... 스페이스만 최소 60번을 넘게쳐야 하죠..

이 끔찍한 과정을 진행하지는 않을거예요!

우리에겐 단축키가 있습니다.

바로 탭키 입니다.

키보드 좌측 상단에 있는 이 녀석이요.

그리고 탭과 쉬프트의 조합은 매우 좋습니다.

쉬프트 아시죠?

탭키의 역할은? 바로 2칸 들여쓰기 입니다. 2번 누르면 4칸이 들여써 지겠죠.

??? 그래봐야 30번 넘게 쳐야하는건 똑같지 않나요??

아뇨.. 전혀 다릅니다.

왜냐? 이 탭키는.... 여러 줄에 한번에 입력을 할 수 있어요.

이렇게 주르르륵 선택하고

탭을 누르면, 선택한 줄 전체가 2칸 밀립니다.(들여쓰기)

그리고 쉬프트 탭을 누르면, 반대로 2칸 앞으로 가요.(내어쓰기)

그러면 이걸 이용해서 적당히 선택 후 탭으로 2칸 밀고, 또 선택범위 바꿔서 2칸 밀고..

떨어진 줄을 선택할때는 컨트롤 키를 이용하면 쉽게 여러줄 선택이 가능합니다.

그리고 탭/쉬프트 탭은, 해당 줄 전체가 선택되어 있어야 하는건 아니예요.

단 한글자라도 선택되었다면, 그 줄은 탭/쉬프트 탭의 영향을 받습니다.

대충 러프하게 긁어서 적용할 수 있지요.

물론 이걸 알고있다고 해도 위 문구등에 들여쓰기 단계를 다 맞춰주는건 쉽지 않습니다.

그래도 단계를 맞출때 매우 편해지겠죠?

찾기/변경

이건 뭐...많이들 사용하시고, 잘 알고계실만한건데요

에디터 에서 컨트롤+F 를 누르면 찾기와 변경을 할 수 있는 메뉴가 뜹니다.

네이버 댓글이 앞쪽 공백을 모두 지운다고 말씀드렸죠?

그래서 소스코드를 댓글로 공유할때는 보통 앞쪽 공백을 다른 문자로 바꿔서 공유하는데요

자주 쓰는것중 하나가 바로 언더바( _ ) 로 치환하는겁니다.

스페이스 2번(기본 들여쓰기) = 언더바 2번( __ ) 으로 바꾸는거죠.

그럼 이걸 내 HA에 적용하려면, 이 많은 언더바를 전부 스페이스로 바꿔줘야겠죠?

이럴때 쓸 수 있는게 바로 Find / Replace 기능 입니다.

컨트롤+F 를 누르면, 에디터 하단에 이런 창이 뜨는데요

단순히 문자열을 검색하고 싶다면, find 부분에 검색할 문자를 입력하면 됩니다.

그러면 해당 부분이 에디터에 하이라이트 됩니다.

그 상태로 다음/이전 검색결과로 이동하고 싶다면, NEXT / PREVIOUS 버튼을 누르시면 되죠.

Replace 부분은 검색된 부분을 -> 입력한것으로 대체하는 역할 입니다.

가령 위 예제처람 들여쓰기(스페이스 2번) -> 다른 문자로 대체(언더바 2번) 한 자료를 복사해서

다시 스페이스 2번으로 돌리고 싶다면, Find 부분에 언더바 2번(찾아야할 항목) 입력하고

Replace 부분에 스페이스 2번(변경해야할 항목) 을 입력한 다음

REPLACE ALL 을 눌러주면, 검색한 모든 언더바 2번을 -> 스페이스 2번으로 바꿔줍니다.

entity_id 등이 바뀌어서(장치가 바뀐다던가) 해당 장치를 다른걸로 대체할때도 편하게 쓸 수 있겠죠?

세로 선택 / 다중 선택

자 마지막은 세로로 선택하는 방법과 나눠서 선택하는 방법 입니다.

먼저 세로 선택을 하는 방법은 알트키를 누른 상태로, 마우스 드래그 입니다.

그러면 이런식으로 세로로 블럭 형태의 선택이 가능합니다.

선택 후 글자를 입력하거나, 스페이스로 들여쓰기를 한다던가 공백을 지우는 등 여러가지를 할 수 있죠.

컨트롤키를 눌러주면, 여러 줄을 선택할 수 있습니다.

기본적으로 문자열의 선택은 선택의 시작 - 끝 까지 단일 영역인데

한 영역을 선택 후 + 컨트롤 키 누른 상태로 다른 영역을 선택하면, 중복으로 선택이 가능합니다.

이 두가지를 합하면, 이런식으로 세로 선택을 하면서 + 여러 줄을 선택할수도 있죠.

가령 어딘가 복사해둔 entity_id 를 여러개 붙여넣어야 한다면, 이런식으로 편하게 작업이 가능합니다.

메모장 등에 복사해둔 entity_id들을 복사해서 - 붙여넣기

적당히 선택해서 tab 키로 들여쓰기

세로 선택을 해서 앞쪽에 대시( - ) 추가하기

이것들은 HA의 YAML 에디터 형태로 되어있는곳이라면 어디든지 쓸 수 있습니다.

대시보드 편집의 YAML모드, 자동화 편집할때의 YAML모드, 스크립트의 YAML모드 등등..

그리고 약간 인터페이스가 다르긴 하지만, File Editor 를 쓸때도 거의 동일하게 쓸 수 있습니다.

다만, 파일에디터 사용시 탭으로 들여쓰기/내어쓰기를 할때 보면 스페이스 2칸이 아니라 4칸으로 움직이는데요

이건 파일에디터 설정에서 변경을 해주시면 됩니다.

파일에디터 우측 상단의 톱니바퀴 -> Editor Settings 들어가셔서

스크롤을 내리면, Tab Size 항목이 보입니다. 기본값이 4인데, 이걸 2로 바꿔주시고

하단의 SAVE SETTINGS LOCALLY 를 눌러주세요.

요렇게 설정하시면, 파일에디터 에서도 탭 / 쉬프트 탭 할때 들여쓰기/내어쓰기로 스페이스 2칸분량이 들어갑니다.

자 오늘은 YAML 에디트시 사용할만한 간단한 팁을 정리해 보았습니다.

다음에도 재미난거 들고 올께요~ 오늘은 이만!

728x90
반응형