yi는 하스켈로 쓰여진 텍스트 편집기다.
vim과 emacs의 단축키를 기본적으로 지원한다.
설정 파일은 하스켈 코드로 작성하며, 기능 확장 역시 하스켈로 자유롭게 할 수 있다.
홈페이지: https://yi-editor.github.io/
1. 설치
하스켈을 한다면 stack이 깔려있을 것이다. 터미널에 다음과 같이 친다.
> stack install yi
2. 실행
콘솔에 다음과 같이 입력한다.
> yi fileName --as=vim
이맥스 사용자는 다음과 같이 입력한다.
> yi fileName --as=emacs
3. 설정
사용자 설정 파일은 ~/.config/yi/yi.hs 이다. 없으면 만들자.
빔 사용자는 매번 --as=vim을 입력하기 귀찮을 것이다. 다음과 같이 코드를 짠다.
-- ~/.config/yi/yi.hs 파일에 다음과 같이 작성한다.
import Yi
main = yi $ defaultVimConfig
이렇게 치고 저장한 뒤에 yi를 실행하면 recompiling 메시지가 뜰 것이다.
yi는 설정 파일을 정적으로 로딩하기 때문에 변경할 때마다 재컴파일이 필요하다.
4. 내부 구조
yi는 크게 네 파트로 구성된다. Action, Keymap, UI, Glue code.
Action = 편집기 상에서 행해지는 모든 액션들이다. 파일입출력, 커서이동 등.
BufferM, EditorM, YiM 이렇게 세 개의 모나드로 구성된다.
Keymap = 실제 키보드 입력과 액션을 바인딩해주는 것이다.
키맵 모듈을 갈아끼우면 손쉽게 니가 전에 쓰던 설정을 쓸 수 있다.
vim과 emacs용 단축키 설정도 이 키맵을 변경하는 식으로 동작한다.
UI = TUI든 GUI든 실제 상태 변경을 반영한 화면 렌더링, 입출력 스트림 처리 등.
Glue code = 키맵과 UI를 이어주는 기능.
각각의 파트는 독립적이므로, 어느 하나만 갈아 끼우더라도 잘 작동한다.
따라서 유연한 확장성과 개인화가 가능하다.
이맥스에 비하면 근데 아직 많이 부족한듯 - return 0;