텍스트 변경 사항을 저장하면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
  • )
  • - )으로 예상대로 서라운드를 마칠 수 있습니다.
  • 나는vim repeat의 출처를 아직 읽지 못했기 때문에 왜 이런 상황이 발생했는지 확실하지 않다.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-surroundtpope/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-nestednested에 적용되지 않지만 텍스트를 삽입할 때 커서가 갑자기 왼쪽으로 이동합니다.TextChangedI 그래, 일리가 있어. 낡은 자동 명령이 파괴됐어.

    토론 #12

    을 추가하면 복구할 수 있어.나는 이것이 중복이라고 생각하지 않는다.짐 바그.

    좋은 웹페이지 즐겨찾기