
나는 각 주제에 대한 섹션이 있는 일기장으로 라텍스를 사용하고 있습니다. 텍스트의 각 요소(섹션, 하위 섹션, 하위 섹션 등)에 생성 및 수정 날짜를 수동으로 추가합니다. 자동으로 만드는 방법이 있나요?
Lua나 Python을 배우고 코드화하고 싶지만(저는 최신 C++를 사용합니다) 어떤 도구를 사용할 수 있는지, 어떻게 빠르게 만드는지 잘 모르겠습니다.
내 계획은 이전 텍스트 요소 선언부터 시작하여 다음 요소 선언까지 보이도록 만드는 것입니다. 실행 취소 트리를 살펴볼 수 있습니다. 변경사항이 있는지 확인하세요. 있는 경우 현재 섹션 선언 후 날짜를 변경하십시오. 이 날짜를 숨기고 다시 표시하는 것도 좋을 것입니다.
답변1
가능하지만 Vim의 스크립팅 언어에 대한 지식이 필요합니다. 해당 섹션을 "탈출"하지 않고 현재 섹션 내에서 날짜 위치를 찾은 다음 해당 줄을 변경할 수 있는 Vim 함수를 작성해야 합니다. 함수가 작성되면 이를 autocmd에 연결해야 합니다.
예를 들어, 함수가 호출되면 다음과 TexAutoDate()
같이 끝나는 파일을 작성할 때마다 자동으로 호출할 수 있습니다 .tex
.
:autocmd BufWritePre *.tex :call TexAutoDate()
불행하게도 함수의 실제 본문은 상당히 복잡하므로 파일 레이아웃에 대해 자세히 알지 못하면 많은 도움을 드릴 수 없습니다. 비슷한 목적으로 작성한 함수가 있지만 그 자체를 섹션으로 제한하지는 않습니다. 다음 함수는 쓰기 시 Vim 도움말 파일의 "마지막 변경:" 줄을 자동으로 업데이트합니다:
function HelpModifiedUpdate()
if &filetype != "help"
return
endif
let today=strftime('%Y %b %d')
" Save current cursor position:
let lnum = line('.')
let col = col('.')
if search('Last change: ', 'w')
let line1 = getline('.')
if line1 =~ today
" Restore cursor position:
call cursor(lnum, col)
return
endif
let line2 = substitute(
\line1,
\'Last change: .*',
\'Last change: ' . today,
\''
\)
call setline('.', line2)
endif
" Restore cursor position:
call cursor(lnum, col)
endfunction
보다:
:help :autocmd
:help :function
:help eval.txt
마지막은 광범위하므로 전체 파일을 읽을 필요는 없지만 Vim 스크립트를 아직 모르는 경우 필요한 내용이 많이 포함되어 있습니다.
답변2
아마도 가장 쉬운 방법은 스니펫 플러그인을 설치하는 것입니다. 나는 선호한다얼티스닙스훨씬 더 강력하기 때문입니다.저격하다또한 매우 인기가 있습니다.
tex.snippets
Ultisnips를 사용하면 내 파일 에 이와 같은 조각을 정의할 수 있습니다 .
snippet sec "section" b
\section{`!v strftime("%Y-%m-%d")`: ${1:section label}}
$0
endsnippet
이제 sec
줄 시작 부분에 입력하고 <tab>
키를 누르면 스니펫이 확장되어 현재 날짜가 삽입됩니다(strftime기능) 섹션 라벨을 입력하라는 메시지가 표시됩니다.