- Microsoft Edit는 단순한 편집 요구를 위한 에디터로, classic MS-DOS Editor에 경의를 표하면서 VS Code와 유사한 현대적 인터페이스와 입력 제어를 제공함
- 목표는 터미널에 익숙하지 않은 사용자도 쉽게 사용할 수 있는 접근성 높은 편집기를 제공하는 것임
- Windows는 WinGet, macOS는 Homebrew, Linux는 배포판 바이너리가 없거나 직접 빌드하려는 경우 설치 스크립트로 설치할 수 있음
- Rust로 빌드하며, nightly Rust 설정은 바이너리 크기를 크게 줄이고 성능을 약간 개선하는 방식으로 권장됨
- 패키지 관리자는 실행 파일 이름 충돌 가능성 때문에
edit대신msedit이름을 권장받으며, 검색/바꾸기 기능에는 ICU 라이브러리 설정이 영향을 줌
Microsoft Edit의 목적과 성격
- Edit는 “simple editor for simple needs”를 목표로 하는 단순한 편집기임
- classic MS-DOS Editor에 경의를 표하면서도, 현대적 인터페이스와 VS Code와 유사한 입력 제어를 제공함
- 터미널에 익숙하지 않은 사용자도 쉽게 사용할 수 있는 접근 가능한 에디터를 지향함
설치 방법
- 바이너리는 Releases page에서 다운로드할 수 있음
-
Windows
- 최신 버전은 WinGet으로 설치 가능함
winget install Microsoft.Edit -
Linux
- 배포판이 바이너리를 제공하지 않거나 직접 빌드하려면 설치 스크립트를 사용할 수 있음
- 필요 조건은 Rust, C 컴파일러, ICU, curl 또는 wget, tar임
- 기본 설치는
msedit를~/.local/bin에 설치함
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/microsoft/edit/… | sh- 추가 플래그로
--dev는 main 브랜치에서 직접 빌드하고,--system은/usr/local/bin에 설치함
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/microsoft/edit/… | sh -s -- --dev --system -
macOS
- 최신 버전은 Homebrew로 설치 가능함
brew install msedit
빌드 방식
- 빌드에는 Rust 설치와 저장소 클론이 필요함
- nightly Rust를 사용하는 경우 다음 명령으로 release 빌드함
cargo build --release --config .cargo/release.toml - stable Rust를 사용하는 경우
RUSTC_BOOTSTRAP=1환경 변수를 설정하고 nightly 빌드 지침을 따르는 방식이 권장됨- 이 방식은 바이너리 크기를 크게 줄이고 성능을 약간 개선함
- 별도 설정 없이 stable Rust로 빌드하려면 다음 명령을 사용함
cargo build --release
빌드 구성 옵션
- 빌드 시 환경 변수로 구성을 조정할 수 있음
EDIT_CFG_ICU*는 ICU 라이브러리 이름 설정과 관련되며, Linux 패키지 관리자는 이 옵션 검토가 권장됨EDIT_CFG_LANGUAGES는 빌드에 포함할 언어 목록을 쉼표로 지정함- 사용 가능한 언어는 i18n/edit.toml에 있음
패키지 관리자를 위한 주의사항
- 표준 실행 파일 이름은
edit이고 대체 이름은msedit임 - 기존 명령과
edit이름이 충돌할 수 있어, 패키지와 실행 파일 이름은msedit를 권장함 ms-edit같은 이름은 피해야 함- 가능하다면
edit별칭을 할당하는 방식이 권장됨
ICU 관련 설정
- 이 프로젝트는 검색과 바꾸기 기능을 위해 ICU 라이브러리에 선택적으로 의존함
- 기본적으로 플랫폼별 ICU 라이브러리 이름을 찾음
- Windows:
icuuc.dll,icuin.dll - macOS:
libicucore.dylib - Linux 및 기타:
libicuuc.so,libicui18n.so
- Windows:
- 설치 환경의 SONAME이 다르면 빌드 시 환경 변수를 설정해야 함
EDIT_CFG_ICUUC_SONAME: 예libicuuc.so.76EDIT_CFG_ICUI18N_SONAME: 예libicui18n.so.76
- ICU 심볼은 기본적으로
_접두사와 버전 접미사 없이u_errorName같은 형태로 export된다고 가정함 - 다른 심볼 형태를 쓰는 환경에서는 추가 환경 변수를 사용할 수 있음
EDIT_CFG_ICU_CPP_EXPORTS=true:_u_errorName같은 C++ 심볼을 찾으며, macOS에서는 기본 활성화됨EDIT_CFG_ICU_RENAMING_VERSION=76:u_errorName_76같은 심볼을 찾음
EDIT_CFG_ICU_RENAMING_AUTO_DETECT=true를 설정하면 실행 파일이 런타임에 renaming version 값을 감지하려고 시도함- 이 방식은 ICU가 공식 지원하지 않으므로 의존하지 않는 것이 권장됨
- UNIX에서는 macOS를 제외하고 다른 옵션이 없을 때 기본 활성화됨
- 빌드 설정 테스트는
cargo test에--ignored플래그를 붙여 실행함cargo test -- --ignored