2015년 11월: splitjoin.vim

  • 준건님이 splitjoin.vim [1] [2] 을 알려주셔서 사용해봤다.
    • 사용 예
      • e.g. ruby 에서 { ~ } 블락을 do ~ end 블락으로 변경할 때.
      • e.g. html 에서 많은 속성을 가진 태그를 들여쓰기 할 때.
    • 처음 이 플러그인을 써보고 “우왕!!!” 했지만
      • 시간이 지나고 당장 급하면 이 플러그인이 있다는 사실은 망각하고 macro 를 쓰게 된다.

2015년 12월: neovim

  • neovim 은 설정파일을 XDG directory specification [3] 를 따르도록 변경되었다. [4]
    • 즉, ~/.nvimrc 대신 ~/.config/nvim/init.vim 을 사용.
    • XDG directory specification 라는 것도 찾아보니.
      • application 의 user 별 설정파일을 홈의 닷파일로 저장하면서 홈 디렉터리가 지저분해져서
      • 디렉터리 구조의 표준 사양을 만든 것.

2016년 1월: gv.vim, fixeol, jsonencode

  • 준건님이 만든 zoom 함수 [5] 를 모방해서 많이 쓰고 있다.
  • gv.vim [6] 을 설치함. (fugitive 기반 git browser)
    • 기존에 gitv [7] 를 사용하고 있었는데,
    • gv.vim 이 훨씬 가볍고 단순해서 나한테 맞게 수정하기 좋다.
    • 그래서 gitv 는 지워버리고 gv.vim 만 쓰는 중.
  • eol 문제가 vim 의 옵션으로 추가되었다! (fixeol)
    • 문제:
      • IntelliJ IDEA 는 default 로 EOL 을 붙이지 않고
      • vim 은 default 로 EOL 을 붙임.
      • 그래서 intellij 로 작성한 파일을 vim 에서 write 할 때 마다 변경사항이 발생함.
    • 옛날 해결책:
      • 현재 파일이 eol 이면 set eol, 현재 파일이 noeol 이면 set noeol 로 저장하도록 꼼수 스크립트를 만들어 쓰고 있었음.
    • 새로운 해결책:
      • vim v7.4.785 에서 fixeol 옵션이 추가 되었고 [8]
      • default 가 on 이기 때문에 set nofixeol 옵션을 넣으면 eol 을 vim 이 강제로 고치지 않음.
  • vim script 의 builtin function 으로 jsonencode()jsondecode() 가 추가됨. [9]
    • 사람들은 todo.txt [10] 와 channel.txt [11] 를 보고 비동기 작업 실행의 기반이라고 추측함. [12]
    • 이것은 Neovim 의 좋은 feature 를 모방하는 것으로 보인다.
    • 사실 이렇게 vim 을 따라하는 app 들의 좋은 기능을 모방하는 것이 vim 의 성공이유라는 bram 의 인터뷰도 있었다. [13]

2016년 2월: vim-easy-align, vim8

  • 오랫동안 tabular [14] 를 써왔고, 여기에 익숙해져 있어서 변경할 생각을 못했는데.
    • 이번에 마음먹고 준건님의 vim-easy-align [15] 을 사용하도록 변경했다.
    • tabular 에 비해 장점은.
      • 옵션이 많고. (아직 다 모르겠지만)
      • align 할때 ignore 할 수 있는 옵션이 정말 좋다!!
  • pom.xml 파일을 더 예쁘게 보여준다길래 vim-maven-syntax 를 설치했다. [16]
  • 비동기적으로 job 을 실행시킬 수 있는 기능이 vim 공식 feature 로 들어감. [17]
    • neovim 과의 관계 때문에 reddit 의 스레드는 폭발함. [18]
      • 내 생각엔 이제 Neovim 은 망할 것 같다.

아무튼 이제 아래와 같은 코드가 가능해졌다.

function! Handler(ch, msg) echom a:msg endfunction
let job = job_start('ls -alh ~/', { 'callback': 'Handler' })
  • python 을 위한 braceless.vim [19] 을 설치함.
    • python 같은 brace 가 없는 indent 기반 언어를 위한 플러그인.
    • custom text object, fold, indent guide 를 제공한다.
    • 처음에는 설치할만큼 매력적이지 않다고 생각했다.
    • 하지만 설치하고 써보니 생각보다 편한듯.
    • 특히 custom text object 는 많이 쓸 것 같은데, 왠지 모르게 첫번째 로딩이 느려진다.