현재 줄에 대한 텍스트 개체가 있습니까?


답변:


13

조잡한 "줄"텍스트 개체는 다음과 같습니다.

xnoremap il g_o0
onoremap il :normal vil<CR>
xnoremap al $o0
onoremap al :normal val<CR>

그리고 조잡한 "버퍼"텍스트 객체 :

xnoremap i% GoggV
onoremap i% :normal vi%<CR>

---편집하다---

:에 "연산자는"그 자체로 아무것도하지 않는 명령이다 d, y

해당 키를 누르면 "오퍼레이터 보류 모드"로 전환됩니다. Vim은 "오퍼레이터 보류 모션"을 사용하여 원하는 조작을 지시합니다.

:omap또는 :onoremap사용자 지정 연산자 보류 동작을 사용 하거나 정의 할 수 있습니다 . 여기에 사용 된 기술은 다음에서 영감을 얻었습니다 :help omap-info.

  1. 원하는 영역을 포함하는 비주얼 모드 매핑을 정의합니다.
  2. 운영자-지정 맵핑에서 해당 맵핑을 사용합니다.

참고 내가 사용하는 것이 :onoremap있기 때문에 il, al그리고 i%이미 존재하지 않는다. 기존 모션 또는 텍스트 객체를 재정의하는 경우 (예 ip: 재귀 매핑)를 사용해야합니다 :omap.

:help :map-operator 약간 더 진보 된 방법을 설명합니다.

참조 :help v_o에 대한 o시각적 모드입니다.


멋있는. 몇 가지를 설명해 주시겠습니까? oonoremap에서 (오퍼레이터 보류 모드) 란 무엇입니까 ? o비주얼 모드에서 무엇을 합니까? 선택의 반대편으로 넘어 가기 때문에 "다른 쪽"이라고 생각합니다. 어떻게 찾을 :h수 있습니까? :h x_o또는로 찾을 수 없습니다 :h o.
lindhe

설명이 추가되었습니다.
romainl

1

0 대신 ^를 사용하는 추가 솔루션을 제안합니다 (따라서 줄은 첫 번째 문자의 시작 부분에서 시작합니다.

xnoremap il g_o^
onoremap il :normal vil<CR>
xnoremap al $o^
onoremap al :normal val<CR>

이 방법으로 "줄 바꾸기"를하면 들여 쓰기 수준이 적용됩니다.


vim master kana의이 기능을 제공하는 플러그인도 있습니다 : github.com/kana/vim-textobj-line/blob/master/doc/…
Blasco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.