Vim에서 선택한 텍스트의 cgn
gn
c
를 변경합니다.모두가 알고 있는 것은 이
cgn
를 약간 중복하는 기술이다.다음 매핑은 예입니다.
nnoremap <Space>d *N"_cgn
📝 레지스터_
를 더럽히지 않기 위해 버리기시각 모드에서 선택한 텍스트
cgn
를 더욱 통용적으로 사용할 수 있다.xnoremap <expr> <Space>d "\<ESC>/\<C-r>=<SID>search()\<CR>\<CR>N\"_cgn"
function! s:search() abort
" 選択範囲のテキストを正確に取るのが面倒で元の内容を一時退避してyしている
let tmp = @"
normal! gv""y
let [text, @"] = [escape(@", '\/'), tmp]
return '\V' .. substitute(text, "\n", '\\n', 'g')
endfunction
주문처럼 보이지만 검색 대상자cgn
는 같다.선택한 텍스트를 바꾸기 위해 도피
\V
(very nomagic).줄 바꾸기를 포함해도 즐겁다.
그나저나 vim-operator-replace로 대체
c
할 수도 있다.nnoremap <Plug>(builtin-/) /
nnoremap <Plug>(builtin-N) N
onoremap <Plug>(builtin-gn) gn
xmap <expr> <Space>r "\<ESC><Plug>(builtin-/)\<C-r>=<SID>search()\<CR>\<CR><Plug>(builtin-N)<Plug>(operator-replace)<Plug>(builtin-gn)"
상당히 지루하게 썼다.<Plug>
를 사용하기 때문에 xnoremap
가 아니라 xmap
가 필요합니다./
,N
,gn
에 맵이 존재하면 이 맵은 호출되기 때문에 원시적인 맵을 만들어서 피한다.(사용
<Plug>
회피는 예의에 어긋날 수 있음)회피할 필요가 없다면
"\<ESC>/\<C-r>=<SID>search()\<CR>\<CR>N<Plug>(operator-replace)gn"
.:s
아직 쓸 정도는 아니고 보고 싶은 텍스트를 바꾸고 싶을 때 사고를 멈출 수 있어 편리하다.
Reference
이 문제에 관하여(Vim에서 선택한 텍스트의 cgn), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/notomo/articles/vim-visual-mode-cgn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)