08/02
dot_files 연동
- neovim과 관련된 dot_files를 dot_files repository를 이용해서 관리하고 있다.
- tar의 옵션 중 –from-files를 이용한다.
- tar –from-files는 압축할 파일/디렉터리를 커맨드라인으로 넘기는 대신, 해당 목록이 적힌 파일 디스크립터를 전달하는 옵션이다.
- 사용예:
tar -czf a.tgz 1.txt 2.txt==tar -cvf a.tgz --from-files list.txt - where
echo 1.txt > list.txtecho 2.txt >> list.txt
- 사용예:
- 상대경로를 이용하여 파일을 압축하고 다른 디렉터리에서 해당 압축파일을 풀면, 해당 디렉터리를 기준으로 압축이 풀린다.
- 이를 이용하면 압축을 이용한 파일 시스템 복사-붙여넣기를 할 수 있다.
git statusgit log --oneline --name-only혹은find와grep을 이용해 얻은 대상 파일 목록을list.txt에 잠시 저장한다.- 혹은 추가적인 작업이 필요하지 않다면 바로
--from-files -을 통해 stdin을 그대로 사용할 수 도 있다.
- 혹은 추가적인 작업이 필요하지 않다면 바로
- 원하는 형식이 아니거나 수정이 필요하면
list.txt를 vim으로 편집하여 원하는 파일 목록을 얻는다.- 이 방법으로 파일시스템을 복사할 때 주의할 점은 압축 해제가 새로운 디렉터리에서 제대로 실행되도록 상대경로를 사용해야한다는 것이다.
tar -czvf transfer.tgz --from-files list.txtcd $TARGET_PATH && cp $OLDPWD/transfer.tgz . && tar -xzvf transfer.tgz- 원하는 경로로 이동하고, 상대경로를 이용한 압축파일을 가져와서 압축을 푼다.
- tar –from-files는 압축할 파일/디렉터리를 커맨드라인으로 넘기는 대신, 해당 목록이 적힌 파일 디스크립터를 전달하는 옵션이다.
- 아래 예시에서는 절대경로를 그대로 사용하지만, 원하는 경우 환경변수를 이용하면 보다 유연하게 사용 가능하다.
cddot && git pull && bash dot_files/dot_cli/shell/apply_nvimconf.sh로 현재 작업한 neovim 설정 파일의.vim,.lua를 dot_files repository에 적용한다.cddot bash dot_files/dot_cli/shell/apply_nvimconf_from_dot.sh로 dot_files repository에 설정한 neovim 설정 내용을 현재 머신에 적용한다.
dot_files/dot_cli/shell/apply_nvimconf.sh
!#/bin/bash
echo find /home/widehyo/.config/nvim -type f | grep -E ".lua$|.vim$" | cut -c28- | tar -czvf /home/widehyo/gitclone/dot_files/dot_config/nvim/nvimconf.tgz --directory /home/widehyo/.config/nvim/ --files-from -
find /home/widehyo/.config/nvim -type f | grep -E ".lua$|.vim$" | cut -c28- | tar -czvf /home/widehyo/gitclone/dot_files/dot_config/nvim/nvimconf.tgz --directory /home/widehyo/.config/nvim/ --files-from -
echo tar -xzvf /home/widehyo/gitclone/dot_files/dot_config/nvim/nvimconf.tgz --directory /home/widehyo/gitclone/dot_files/dot_config/nvim
tar -xzvf /home/widehyo/gitclone/dot_files/dot_config/nvim/nvimconf.tgz --directory /home/widehyo/gitclone/dot_files/dot_config/nvim
echo rm /home/widehyo/gitclone/dot_files/dot_config/nvim/nvimconf.tgz
rm /home/widehyo/gitclone/dot_files/dot_config/nvim/nvimconf.tgz
dot_files/dot_cli/shell/apply_nvimconf_from_dot.sh
!#/bin/bash
echo find /home/widehyo/gitclone/dot_files/dot_config/nvim -type f | grep -E ".lua$|.vim$" | cut -c50- | tar -czvf /home/widehyo/.config/nvim/nvimconf.tgz --directory /home/widehyo/gitclone/dot_files/dot_config/nvim/ --files-from -
find /home/widehyo/gitclone/dot_files/dot_config/nvim -type f | grep -E ".lua$|.vim$" | cut -c50- | tar -czvf /home/widehyo/.config/nvim/nvimconf.tgz --directory /home/widehyo/gitclone/dot_files/dot_config/nvim/ --files-from -
echo tar -xzvf /home/widehyo/.config/nvim/nvimconf.tgz --directory /home/widehyo/.config/nvim
tar -xzvf /home/widehyo/.config/nvim/nvimconf.tgz --directory /home/widehyo/.config/nvim
echo rm /home/widehyo/.config/nvim/nvimconf.tgz
rm /home/widehyo/.config/nvim/nvimconf.tgz
markdown info_string paste
- 대부분의 노트는 markdown 형식으로 기록한다.
- 모든 내용을 타이핑하기 보다는 터미널의 출력이나 시스템 클립보드에 복사한 markdown에 붙여넣는 경우가 많다.
- 이때, 복사한 내용을 markdown의 info_string (
bash,lua,vim등)으로 감싸진 code block에 붙여넣는 경우가 많다. - 붙여넣을 때 info_string을 입력하면, 해당 info_string을 가진 code block을 만들고 그 안에 붙여넣는 기능을 만들었다.
- 복사할 내용 뿐 아니라 info_string을 사용자 입력으로 받아야 하기 때문에
vim.api.nvim_create_user_command의nargs = "?"를 이용하여 info_string을 입력받는다.
ftplugin/markdown.lua
function paste_code_block(info_string)
vim.fn.setline('.', '```' .. (info_string or ''))
vim.cmd('put')
vim.fn.setline(vim.fn.line('.') + 1, '```')
end
vim.api.nvim_create_user_command(
'PasteCodeBlock',
function(opts)
local info_string = opts.fargs[1]
paste_code_block(info_string)
end,
{
nargs = "?",
desc = "Paste codeblock with infomation string"
}
)
vim.keymap.set('n', '<space>p', ':PasteCodeBlock ')
surround-visual 포팅
- 진행 중