개행시에\begin{hoge}를 인식하여\end{hoge}를 보완한다
이 기사의 목표
vim을 사용하여 Latex 코드를 작성하는 사람에게 약간의 편리한 설정을 공유합니다.
\begin{hoge} 의 문장으로 개행을 했을 때에\end{hoge} 를 보완하도록(듯이) vimrc 에 설정을 추기합니다.
환경·전제 사항
내 VIM은 버전 8.2.200입니다. 플러그인은 사용하지 않습니다.
최신 버전에서만 사용할 수 있는 기능 등 특별한 것은 포함되어 있지 않다고 생각합니다.
다만 "\begin{hoge}\begin{fuga}"와 한 줄에 복수회 "\begin{}"를 등장시키는 분에게는,
의도대로 동작하지 않을 가능성이 높습니다.
VIM 버전이 7이면 의도대로 움직이지 않았습니다.
버전 7과 8에서는 count(...) 함수의 사용법이 다르다.
다음을 이용할 때는 버전을 8 이상으로 해 주세요. (2021/04/13 추가)
실천
vimrc에 다음 내용을 추가합니다.
function! s:AutoEndComp()
let l:line_char=getline('.')
if count(l:line_char,"\\begin{")
let l:len=stridx(l:line_char,"}")-(stridx(l:line_char,"\\begin{")+7)
let l:obj_name=strpart(l:line_char,stridx(l:line_char,"\\begin{")+7,l:len)
let l:command="\<CR>\\end{"..l:obj_name.."}\<Esc>O "
call feedkeys(l:command,'n')
else
call feedkeys("\<CR>",'n')
endif
endfunction
inoremap <CR> <C-\><C-O>:call <SID>AutoEndComp()<CR>
해설
줄 바꿈은 AutoEndComp () 함수를 호출합니다. 이 함수의 대략적인 알고리즘은 다음과 같습니다.
먼저 getline () 함수를 사용하여 커서가있는 행을 추출하고 문자열 변수 line_char에 저장합니다. 변수 앞에있는 "l :"은 로컬 변수임을 명시하는 접두사입니다. 이 접두사는 이 페이지
접두사를 함수 내에서 생략하면 "l :"이됩니다.
라고 해설되어 있는 대로, 생략할 수도 있습니다.
그런 다음 count () 함수는 문자열 변수 line_char에 문자열 "\begin {"이 포함되어 있는지 확인합니다.
하나도 포함되어 있지 않은 경우는 else절이 실행되어 통상의 개행이 됩니다.
하나라도 포함되어 있는 경우는 else 전의 부분이 실행되어 이하의 처리가 됩니다.
눈치채는 점, 미비 등이 있으면, 꼭 지적해 주세요.
(5 월 9 일 추가) 문자열을 결합하는 방법에 대해
수정 전 : let str = char1.char2와 같이 마침표를 사용합니다.
수정 후 : let str = char1..char2와 같이 두 마침표를 사용합니다.
문자열의 결합은 여기 페이지 에서 설명한 바와 같이,
마침표 두 가지 사용이 권장되었습니다.
실천에 제시된 소스 코드의 해당 부분도 다시 작성했습니다.
@htsign 같이 지적해 주셨습니다. 다시 한번 감사드립니다.
Reference
이 문제에 관하여(개행시에\begin{hoge}를 인식하여\end{hoge}를 보완한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazumiy/items/e0bd4c70abb2a9d14080텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)