텍스트 변경 사항을 저장하면vim 중복을 중단합니다
5252 단어 vim-repeat
묘사
최소vimrc에서 이 동작을 표시합니다.set nocompatible
call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-repeat'
Plug 'tpope/vim-surround'
call plug#end()
augroup save
au!
au TextChanged ?* silent! wa
augroup END
다음 예는 다음과 같습니다.ysiw)
을 실행하고 단어를 괄호로 묶는다..
을 기준으로 ysiw
)
으로 예상대로 서라운드를 마칠 수 있습니다.TextChanged
의 도움말은 b:changedtick
이 변경되었을 때 촉발된 것이기 때문에 초기 명령이 반쯤 실행되었을 때 파일을 저장한 것으로 추정됩니다. 이것은vim에 등록된 파일의 일부분만 어떤 방식으로 중복될 뿐입니다.토론 #1
오늘 나는vim repeat가 왜 나에게 작용하지 않는지 이해하기로 결정했다.네, 기본적으로 이것 때문이에요.내 autocmd는 이와 유사합니다(Vim hack 자동 저장):
augroup autoSave
autocmd!
autocmd TextChanged,InsertLeave,FocusLost * silent! wall
augroup END
이 동시에 매크로를 녹음하는 것은vim를 둘러싸고 중복하는 방식으로 상기 TextChange
기교를 하는 사람들에게 적용된다. qq
, 그리고 cs"'
, 그리고 q
, 마지막 Q
(내 맵)으로 매크로를 운행한다.감사합니다.
토론 #2
은 나에게 일깨워 주었다. 나는 보충해야 한다. 이것은tpope/vim-surround
과 tpope/vim-repeat
과 함께 중단될 뿐이다.즉, 텍스트에 변경된 인터럽트를 저장하고vim 서라운드 동작을 반복합니다.흥미로운 것은 vim-sandwich이vim repeat에서 잘 작동하고textchanged에 저장되어 있다는 것이다.정상적으로 작동하는 최소 vimrc:
set nocompatible
call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-repeat'
Plug 'machakann/vim-sandwich'
call plug#end()
" for vim-surround like mappings
runtime macros/sandwich/keymap/surround.vim
augroup vimrc
autocmd!
autocmd TextChanged ?* silent! wa
augroup END
아마도vim surround 문제에서 이 문제를 제기해야 할까요?토론 #셋
I should add that this only breaks with tpope/vim-surround and tpope/vim-repeat together.
# 이것은 완전히 정확하지 않다.@tpope에서 개발한 다른 플러그인도
vim-repeat
이 필요합니다.나는 vim-commentary
을 생각했지만 다른 사람을 생각했을 수도 있다.토론 #4
vim-repeat is also needed for other plugins developed by @tpope. vim-commentary comes to mind, but probably others as well.
@ironhouzi 네, 많은 플러그인이 필요하지만, 모든 플러그인과 중단되지 않습니다.이것이 바로 내가vim repeat에서 문제를 사용하는지, 아니면 다른 플러그인에서 그것을 어떻게 사용하는지 확실하지 않은 이유이다.
토론 #5
은 주석의 주요 버전만 참고할 수 있습니다.vim는 더 이상 중복할 필요가 없습니다.vim, 이것은 약간의 곤혹의 근원일 수 있습니다.테스트를 위해 다른 플러그인을 찾고 있다면 Unpaird에서[e
과 [<Space>
을 시도해 보십시오.윌.토론 #6
주의해야 할 것은 vim-auto-save 플러그인은vim repeat와 함께 사용할 수 있다는 것이다.따라서
TextChanged
이벤트를 사용하여 자동 저장을 시작하기만 하면 (나처럼),vim 자동 저장 플러그인을 사용하는 것을 권장합니다.왠지 모르게 this snippet과vim의 충돌을 피했다.다음은 내가 사용한 설정입니다.
Plug '907th/vim-auto-save'
let g:auto_save = 1
let g:auto_save_silent = 1
let g:auto_save_events = ["InsertLeave", "TextChanged", "FocusLost"]
@tpope의 공헌에 감사 드립니다.토론 #7
@bluz71 위대한 발견!나는 내가 이미 단서를 하나 찾았다고 믿는다.autocmd 내부에서vim-auto-save
또는 nested
을 호출할 때 :w
은 autocmd 호출에서 :e
(reference)을 사용하여 autocmd로 귀속된다.:h autocmd-nested
자세히 보기초기 미니멀 vimrc를 autocmd에 포함하도록 수정하여 초기 문제를 해결했습니다.set nocompatible
call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-repeat'
Plug 'tpope/vim-surround'
call plug#end()
augroup save
au!
au TextChanged ?* nested silent! wa
augroup END
왜 이러는지 아직 잘 모르겠어요...업데이트:vim repeat 의존 토론 #8
이벤트https://github.com/tpope/vim-repeat/blob/8106e142dfdc278ff3eaaadd7b362ad7949d4357/autoload/repeat.vim#L141. 파일이 중첩되지 않은 autocmd 내부에서 저장된 경우 이벤트가 트리거되지 않으며BufWrite*
이 업데이트되지 않습니다.이것은 #63과 유사하게 들리는데 그 중에서 g:repeat_tick
은vim repeat이 기대하지 않는 값이 되었다.b:changedtick
은vim와 토론 #9
과TextChanged
을 함께 중복 작업할 수 있는 방법이 있습니까?TextChangedI
@MahbubAlam231은 제 previous comment을 참고하여 해결 방법을 이해하십시오(토론 #10
을 autocmd에 추가).nested
@swalladge 감사합니다. 효과가 있습니다.저는vim스크립트를 잘 몰라요. 토론 #11
을 읽었는데 무슨 일이 일어났는지 모르겠어요. 이 끼워 넣은 물건이 무엇인지 설명해 주세요. 왜 작동하는지 설명해 주시겠어요?:h autocmd-nested
은 nested
에 적용되지 않지만 텍스트를 삽입할 때 커서가 갑자기 왼쪽으로 이동합니다.TextChangedI
그래, 일리가 있어. 낡은 자동 명령이 파괴됐어. 토론 #12
을 추가하면 복구할 수 있어.나는 이것이 중복이라고 생각하지 않는다.짐 바그.Reference
이 문제에 관하여(텍스트 변경 사항을 저장하면vim 중복을 중단합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/tpope/vim-repeat/issues/59텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)