johngrib / johngrib.github.io

my wiki
MIT License
76 stars 42 forks source link

65/48F94E-D4A9-47E0-8B24-3EEBE188F96E #216

Closed utterances-bot closed 1 year ago

utterances-bot commented 1 year ago

읽고 있는 책의 진행도를 Vim에서 자동으로 계산하자 - 기계인간 John Grib

awk 만세

https://johngrib.github.io/wiki/vim-update-book-progress/

shouts77 commented 1 year ago

안녕하세요. 이 글을 보고 체크박스 기능과 책읽기 진행도 업데이트 기능을 구현해 보고 싶어졌습니다. ^^

먼저 체크박스 토글 기능은 애초부터 사용해 보고 싶었었는데 윈도우 파워쉘에서는 Ctrl + Space로 체크박스가 생성되지 않아 잠시 미뤄뒀었는데, 이번에 아래와 같이 별도 단축키를 지정하니 정상적으로 작동했습니다.

nmap <LocalLeader>v <Plug>VimwikiToggleListItem

그런데, 책읽기 진행도 업데이트와 관련해서 아래와 같이 진행했는데 book.md 파일 저장 시 동작을 하지 않았습니다.

  1. set-vimwiki.vim 파일이 있는 곳에 bookProgressUpdate.sh 파일 저장 (이하 코드는 위 문서의 코드와 동일합니다.)

    #!/usr/bin/env bash
    
    awk '/^#+ +[0-9]+% [0-9]+ \// { \
          point = int(100 * $3 / $5); \
          sub(/^(#+ +)[0-9]+/, $1 " " point); \
      }1' $1 > $1.replaced
    cat $1.replaced > $1
    \rm $1.replaced

    2) set-vimwiki.vim 파일에 아래 코드 추가

    
    let g:vim_wiki_set_path = expand('<sfile>:p:h')

" book progress update function function! UpdateBookProgress() let l:cmd = g:vim_wiki_set_path . "/bookProgressUpdate.sh " . expand('%:p') call system(l:cmd) edit endfunction

augroup todoauto autocmd BufWritePost *wiki/book.md call UpdateBookProgress() augroup END

3) book.md 파일에 아래 와 같이 입력 후 저장

0 % 33 / 100


위 프로세스로 진행했는데 저장 후에도 0이라는 숫자가 변하지 않았습니다.

혹시 경로를 잘못 지정했나 싶어서 book.md 버퍼를 저장하고 command 상태에서 아래와 같이 입력해 봤는데

:echo vim_wiki_set_path . "/bookProgressUpdate.sh " . expand('%:p')

이런 결과를 출력했습니다. (경로에 이상은 없는 것 같습니다.)

/home/tlo/dev_envs/config/bookProgressUpdate.sh /home/tlo/git/shouts77.github.io/_wiki/book.md


(bookProgressUpdate.sh 파일은 set-vimwiki.vim 파일과 같은 경로에 있습니다.)

제가 sh 파일 내용까지는 아직 다 이해하지 못해서 그런 것일 수도 있는데, 
혹시 어떤 점이 문제일 수 있는지 의견을 주시면 참고해서 추가로 더 확인해보겠습니다.
감사합니다.
johngrib commented 1 year ago

@shouts77 book.md 파일의 내용이 정규식과 매치되지 않기 때문입니다. md 파일의 내용을 ## 0% 33 / 100 이렇게 해 보세요. (md 파일에서 %앞에 있는 스페이스를 제거하시거나, sh 파일에서 /^#+ +[0-9]+% [0-9]+ \///^#+ +[0-9]+ *% [0-9]+ \// 로 고치면 될 거에요.)

shouts77 commented 1 year ago

아.. 되네요. 정규식도 틈틈이 공부해야겠네요. 감사합니다!