편집 : 방금 vim-textobject-latex 플러그인을 발견했습니다 . 여기서 원하는 기능을 추가합니다 (몇 가지 다른 것 외에도). 플러그인의 README에서 :
현재 지원되는 텍스트 객체는 다음과 같습니다.
a i Description
a\\ i\\ Inline math surrounded by ``\\(`` and ``\\)``.
a$ i$ Inline math surrounded by dollar signs.
aq iq Single-quoted text ``\`like this'``.
aQ iQ Double-quoted text ``\``like this''``.
ae ie Environment ``\begin{...}–\end{...}``
caq
원하는대로 사용할 수 있습니다 . 테스트 한 결과 광고 된대로 작동하지만 vim-textobject-user 플러그인 에 따라 다릅니다 . 또한 플러그인이 먼저로드 되는지 확인해야합니다textobject-user
. 그렇지 않으면 작동하지 않습니다.
그러나 플러그인을 엉망으로 만들고 싶지 않다면 원래의 대답은 여전히 유용합니다.
이 두 줄을 추가 하면 원하는 대부분 의 내용을 .vimrc
다룰 수 있습니다.
onoremap aq :<c-u>normal! F`vf'<cr>
onoremap iq :<c-u>normal! T`vt'<cr>
이것은 새로운 텍스트 객체 ( aq
와 iq
)를 만들어 이전 텍스트 로 돌아가서 `
시각적 선택 모드로 들어간 다음 다음까지 선택합니다 '
.
이것은 작동합니다 ciq
, caq
, yiq
,와 diq
. 그러나 yaq
및 daq
십중팔구 / 외부 따옴표를 삭제하지 않습니다, 나는 다른 텍스트 객체를 생성하므로 a"
, (그것을 처리하기 위해 i"
필요하지 않습니다,하지만 난 일관된 일을 계속 추가 :
onoremap a" :<c-u>normal! 2F`v2f'<cr>
onoremap i" :<c-u>normal! 2T`v2t'<cr>
여기서 주요 단점은 이것이 정상적인 ca"
사용 등 을 중단한다는 것 입니다. 로 시작하면 파일 au FileType tex
에만 문제가 .tex
있지만 여전히 성가신 경우가 있습니다. 객체 이름을 ad
/ id
( 'double'quote의 경우 'd') 와 같은 이름으로 지정할 수도 있지만 직관적이지 않은 것으로 보입니다 (정상 작업과의 최소 차이를 목표로하고있었습니다).
이것을 두 개의 텍스트 객체로 감싸는 유일한 방법은 첫 번째 세트 이외의 다른 따옴표를 확인하고 aq
텍스트 객체를 호출하도록 설정하는 함수를 작성하는 것 입니다.
참고 : 다음과 같은 몇 가지 사소한 문제가 있습니다.
- Yanking은 커서를 예기치 않은 위치에 놓을 수 있습니다 (예 : 명령에 표시를 사용하여 추가하면 수정 될 수 있음
ma2F`v2f'<cr>`a
)
- 커서는 따옴표 안에 있어야합니다. 따옴표에 있으면 이상한 일이 발생합니다.
이 모든 것을 마무리 .vimrc
하기 위해이 문제에 개인적으로 추가 할 것 입니다.
augroup filetype_latex
au!
au FileType tex,plaintex onoremap a' :<c-u>normal! muF`vf'<cr>`u
au FileType tex,plaintex onoremap i' :<c-u>normal! muT`vt'<cr>`u
au FileType tex,plaintex onoremap a" :<c-u>normal! mu2F`v2f'<cr>`u
au FileType tex,plaintex onoremap i" :<c-u>normal! mu2T`v2t'<cr>`u
end augroup
보시다시피, 나는 일반적인 ca'
/ ya"
/ etc 기능 을 중단하기로 결정 했기 때문에 LaTeX 내에서 일반적인 기능을 많이 사용하지 않기 때문에 새로운 명령을 배울 필요가 없습니다. 그것은 개인적인 취향 일뿐입니다. 개체 이름을 전환하기 어렵지 않습니다. 또한 파일 형식 감지 및 표시에 추가했습니다.
iq
하지만 예를 들어 작동하지 않는 것 같습니다daq
.