CLion - 줄 구분자(Line separator) 설정하기

반응형

     

    CLion은 편집기 상에서 새로운 파일을 생성하거나 편집기에 열려 있는 파일을 업데이트 저장할 때, 저장되는 파일의 저장 형식을 지정할 수 있습니다.

    정확하게는 Line separator라고 불리는 줄 구분자의 형식을 정해 줄 수 있습니다.

     

    줄 구분자(Line separator)란?

    텍스트 파일의 경우, 각 줄이 끝났음을(즉, 줄이 바뀌는 것을) 표시하기 위해 각 줄의 마지막에 줄 구분자(Line separator)라고 불리는 특수문자가 추가로 저장됩니다. 이러한 줄 구분자는 공통으로 약속된 형식을 사용하게끔 되어 있어, 해당 텍스트 파일을 사용하는 시스템(장치)의 종류나 특성에 무관하게 동일하게 해석되어 사용될 수 있습니다. 

    다만, 우리가 주로 사용하는 양대 운영체제 별로 서로 다르게 사용하고 있어 이에 대한 고려가 필요합니다.

    • 윈도우즈의 경우, "\r\n"이 사용됩니다. 즉, 윈도우즈 상에서 생성/저장되는 텍스트 파일 내 각 줄의 끝 부분에는 두 바이트 길이의 "\r\n" 문자가 추가로 저장됩니다.
    • 유닉스 계열의 운영체제의 경우, "\n"이 사용됩니다. 즉, 리눅스나 macOS 상에서 생성/저장되는 텍스트 파일 내 각 줄의 끝 부분에는 한 바이트 길이의 "\n" 문자가 추가로 저장됩니다.

    무엇이 문제인가?

    사용자가 항상 윈도우즈만 사용하거나 유닉스 계열의 운영체제만 사용할 경우에는 문제될 것이 없습니다.

    하지만, 윈도우즈에서 생성/저장된 파일을 유닉스 계열의 운영체제에서 사용하거나, 그 반대의 경우에는 서로 다른 줄 구분자로 인해 사소한 (?) 문제가 발생할 수 있습니다. 

     

    예를 들어, 리눅스에서 사용되는 쉘 스크립트를 윈도우즈에서 생성하거나 업데이트 저장하게 되면, 줄 구분자가 기존 "\n"에서 "\r\n"으로 변경되게 되며, 이를 리눅스에서 실행하고자 할 경우, 리눅스는 해당 줄 구분자를 해석할 수 없기 때문에 쉘 스크립트를 실행할 수 없습니다.

     

    또 다른 예로, 코딩 시 코드 파일을 윈도우즈나 유닉스 계열의 운영체제에서 교차 편집하게 되면 줄 구분자가 계속 변경되게 됩니다. IDE는 보통 두 버전의 줄 구분자를 모두 지원하므로 IDE 내에서 해당 파일을 열거나 편집하는 데에는 문제가 없지만, 문제는 git입니다. 파일의 변경 내역에 줄 구분자의 변경도 포함되어 버리므로, 실제 코드 수정 부분 외에도 줄 구분자의 변경 내용이 git 변경사항에 저장됩니다. 심지어, 파일의 본문 내용 자체는 변한 것이 하나도 없는데도 단순히 운영체제를 달리해서 저장했다는 이유로 git 변경사항으로 기록되게 됩니다. git의 사용 목적을 고려해 볼 때, 줄 구분자의 변경 내역은 추적할 필요가 없는 경우가 대부분일 것입니다.

     

     

     

    CLion에서 줄 구분자 설정하기

    위와 같이 줄 구분자가 운영체제에 따라 다르게 저장되는 현상을 CLion에서 방지할 수 있습니다. 

    원리는 다음과 같습니다.

    • 윈도우즈 상에 설치된 CLion이지만, CLion에서 생성/저장되는 파일에 유닉스 계열의 줄 구분자를 사용하도록 설정한다.
    • 또는 반대로, 유닉스 계열의 운영체제 상에 설치된 CLion이지만, CLion에서 생성/저장되는 파일에 윈도우즈 계열의 줄 구분자를 사용하도록 설정한다.

    저는 보통 리눅스 프로그램을 개발하고 있고, CLion을 macOS와 윈도우즈 모두에서 사용하고 있기 때문에, 두 곳의 CLion 모두 유닉스 계열의 줄 구분자를 사용하도록 설정하여 사용하고 있습니다.

     

    본 예제에서 사용된 CLion은 Mac OS 용 2020.3 버전입니다.

     

    CLion의 "CLion" → "Preferences" 메뉴를 선택하여 창을 띄운 후, "Editor" → "Code Style" 메뉴로 이동하면 줄 구분자를 설정할 수 있습니다.

    "General" 탭의 "Line separator" 항목에서 다음 중 하나를 선택할 수 있습니다.

    • System-Dependent : CLion이 설치된 시스템의 운영체제에 맞게 사용
    • Unix and macOS (\n) : 유닉스 계열 운영체제의 줄 구분자를 사용
    • Windows (\r\n) : 윈도우즈의 줄 구분자를 사용
    • Classic macOS (\r) : 과거(?) macOS의 줄 구분자를 사용

     

    위 항목 중 사용자의 선호나 상황에 따라 원하는 항목으로 설정하여 사용할 수 있습니다.

     

    댓글

    Designed by JB FACTORY