Git, CocoaPods, Xcode, Shell

[iOS - swift] 3. custom shortcut (커스텀 단축키) 만드는 방법 - shell script 입력, 정렬, 출력 (import문 알파벳 순으로 정렬 단축키)

jake-kim 2023. 3. 30. 01:01

1. custom shortcut (커스텀 단축키) 만드는 방법 - 기본 개념 (plistbuddy, defaults, NSUserKeyEquivalents)

2. custom shortcut (커스텀 단축키) 만드는 방법 - Xcode의 import 부분을 정렬하는 단축키 만들기 개념 (Services)

3. custom shortcut (커스텀 단축키) 만드는 방법 - shell script 입력, 정렬, 출력 (import 정렬 단축키 만들기)< 

단축키 입력 시 import문이 정렬

프로젝트 준비

  • 2번글까지 알아본 개념
    • Xcode > Services 항목에 키보드 맵핑까지 완료했고, .sh파일에서 테스트 용으로 echo test만 입력되어, 단축키 입력 시 test만 뜨는 상황

  • 초기세팅인 github에서 clone 후 root로 이동
.
├── install.sh
├── my custom shortcut.workflow
│   └── Contents
│       ├── Info.plist
│       └── document.wflow
└── myCustomShortcut.sh
  • 목표: myCustomShorcut.sh를 변경하여 Xcode에서 읽어온 문자열들을 저장한 후, 정렬하고나서 다시 출력하는것

myCustomShortcut.sh 수정) shell script 입력, 정렬, 출력

  • 많은 입력이 들어올때 한줄씩 eof (end of file)까지 입력하는 명령어
#!/bin/sh

# eof 까지 파일 입력
while read line || [[ -n "$line" ]]; do
    arr+=("$line")
done < /dev/stdin
  • 정렬
# 정렬
arr_length=${#arr[@]}
for (( i=0; i<${arr_length}-1; i++ ))
do
    for (( j=$i+1; j<${arr_length}; j++ ))
    do
        if [[ "${arr[$i]}" > "${arr[$j]}" ]]; then
            temp=${arr[$i]}
            arr[$i]=${arr[$j]}
            arr[$j]=$temp
        fi
    done
done
  • 출력
# 출력
for item in "${arr[@]}"
do
    echo "$item"
done

(shell script 완성)

import문 알파벳 순으로 정렬 단축키 사용해보기

  • ./install.sh 실행
% ./install.sh
copying Service into ~/Library/Services/ ...
copying myCustomShortcut.sh into ~/Library/Services/ ...
add custom shortcut for XCode ...
restart xcode
  • Xcode 오픈
  • 지정한 단축키 (ctrl + shift + cmd + 1) 입력하면 정렬 완료

단축키 입력 시 import문이 정렬

  • 단축키 쉽게 변경 방법
    • 시스템 환경설정의 키보드 -> 키보드 단축키 -> 서비스 탭 -> 오른쪽 목록 텍스트 하위에서 키보드 단축키 등록

응용) impot 길이 순서 정렬하기

* 전체 코드

- (알파벳 순으로 정렬): https://github.com/JK0369/xcode_custom_shortcut

- (길이 순으로 정렬): https://github.com/JK0369/sort_by_length_shortcut_xcode

 

* 참고

https://github.com/kudinovdenis/Xcode-headers-sorting

https://apple.stackexchange.com/questions/115675/set-services-keyboard-shortcut-via-script-osx

https://gist.github.com/trusktr/1e5e516df4e8032cbc3d