시각적 선택을 키보드로 복사 한 후 원래 위치로 돌아갑니다.


18

갑자기 해당 단락을 복사해야 할 때 커서가 단락 중간에 있습니다.

스타트

그래서 나는 vip단락을 시각적으로 선택하기 위해 입력 합니다.

선택된

이제 cmd+C클립 보드에 복사하려고했는데 (시스템에 따라 다를 수 있지만 게시물의 중심 질문과 관련이 없어야합니다) 단락의 시작 부분에 커서가 남습니다.

결정적인

원하는 위치가 아니라 시작했을 때였습니다.

를 사용하여 선택을 시각적으로 표시하지 않을 때 동일한 문제가 발생합니다 yip.

이와 같은 선택 / 복사 작업을 수행 한 후 기본 동작이 "원래 커서 위치로 되돌리기"를 원합니다. 이를 가능하게하는 구성이 있습니까?


11
그래, 나도 짜증나 난 그냥 그 목적을 위해 사용 표시하는 경향이 : mm "+yap `m(주하는 "+y시스템 클립 보드에 양키스)
fruglemonkey

3
커서를 양손 영역의 시작 또는 끝에 배치하는 것이 유용하다는 것을 알았습니다. 결국, 텍스트가 구부러지고 그 안에 커서가 있으면 어떻게해야합니까? 지금은 붙여 넣기 / 붙여 넣기를 수행하는 것이 의미가 없습니다. 그러나 나중에 그렇게하고 싶다면 나중에 나중에 yan 수도 있습니다 ... 지금 필요한 것은 마크 일뿐입니다.
VanLaser

답변:


14

가능한 해결책은 점프를 사용하는 것입니다.

잡아 당기거나 시각적으로 선택하기 전에 커서가 이동 한 후 액세스 할 수있는 새로운 점프를 설정할 수 있습니다. 그렇게하려면을 사용하십시오 m`.

그런 다음 yanking을 사용하여 커서가 이동 한 후 ctrlo점프 목록으로 되돌아갑니다. 또한 당신이 가능한 점프 목록을 볼 수 :jumps와 함께이 목록을 탐색 ctrlo하고ctrli

워크 플로를 요약하면 다음과 같습니다.

  • m`
  • yip
  • ctrlo

를 사용 m` 하면 마크가 설정되므로 ``대신에 마크로 이동할 수 있습니다 ctrlo.

당신은 읽을 수 :h mark-motions:h :jumps더 많은 정보를 얻을 수 있습니다.


나는 이것을 좋아한다. 점프 할 때 작은 따옴표가 일반적으로 백틱처럼 행동하게하는 방법이 있습니까? 작은 따옴표는 입력하기가 쉬우 며 일반적으로 올바른 열 위치뿐만 아니라 올바른 열 위치로 이동하려고합니다.
Jonah

1
@Jonah, 나는으로 매핑 <leader>'되어있어 `꽤 잘 작동합니다. (저는 <space>리더로 사용합니다 .)
Numeri는 Monica Reinstate Monica

@Jonah : Numeri가 말했듯이 매핑은 좋은 해결책이 될 수 있습니다. 그렇지 않으면 백틱을 제거하려면을 살펴보십시오 :h 'langmap'. 나는 그것이 이상적인 해결책이라고 말하지는 않지만 아마도 당신에게 흥미로울 수 있습니다.
statox

@Johah, 나는 실제로 작은 따옴표와 틱을 사용하여 교환 noremap ' ` noremap ` '... 이것은 내 vimrc에 있으며 훌륭하게 작동합니다
Niko Bellic

10

다음과 같이 커서를 이동하지 않아도됩니다.

:'{,'}y

참조 :help range, :help mark-motions:help :y.


1
알아두면 좋지만 실제로하는 일입니까? 두 개의 괄호를 사용하여 8 개의 키 입력을 입력하면 마크 솔루션보다 어렵습니다.
Jonah

그것이 내가 당신의 입장에 있다면 내가 할 것 입니다. 그러나 나는 당신이 묘사 한 행동에 문제가 없으므로 실제로 그렇게하지 않습니다.
romainl

2
@Jonah 여전히 매핑을 만들 수있는 옵션이 있습니다. 같은 뭔가 :nmap <key> :'{,'}y<CR>작업을해야한다.
statox

10

커서가 단락 중간에 있습니다

방금 편집 한 경우 가장 간단한 해결책은 g ;커서를 마지막 편집 위치에 놓을 입력 하는 것입니다.

단락을 편집하지 않은 경우 실제로 편집하지 않고 편집 "이벤트"를 트리거하기 위해 동일한 문자 (예 : on h, type rh)로 간단한 바꾸기 작업을 수행 할 수 있습니다 .


2
+1 : 항상을 사용 '.했지만 g;및로 마지막 변경 사항을 탐색하는 것이 매우 유용 할 수 있습니다 g,.
mMontu

2
g;올바른 열 위치로 이동 하는 버전이 있습니까?
요나

@Jonah 기본 동작입니다. 당신을 위해 작동하지 않습니까? 항상 올바른 열과 줄 위치로 이동합니다.
Al.G.

4

VIM-easyclip 플러그인은 이에 대한 설정이 있습니다 :

g:EasyClipPreserveCursorPositionAfterYank-기본 0 (즉, 비활성화) Vim의 기본 동작은 다른 동작과 일치하는 커서를 기울어 진 텍스트의 시작 부분에 배치하는 것입니다. 그러나 ks 크를 수행 할 때 커서 위치를 변경하지 않으려면이 옵션을 활성화하십시오.

이 작은 기능만을 위해 전체 플러그인을 설치하는 것이 약간이므로 주석에 따라 마크를 사용하는 것이 좋습니다.


0

Al.G.의 답변을 확장하여 편집하지 않고도 필요한 위치로 이동할 수 있습니다. 해결책은 gi입니다. 우리는 이전에 마지막 인서트 모드와 동일한 위치에 도달 할 것입니다.

  • 당신은 단락의 중간에 있습니다.
  • 삽입 모드로 전환하십시오.
  • 일반 모드로 전환하십시오.
  • 를 누릅니다 vip.
  • 를 누릅니다 gi.
  • 일반 모드로 전환하십시오. ( gi삽입 모드로 남겨 둘 것입니다)

강조 표시된 텍스트의 시작 또는 끝으로 이동하려는 경우

 :help v_o 

강조 표시된 텍스트를 잡아 당기면 일반 모드로 돌아가고 원래 커서 위치를 유지하거나 유지하지 못할 수 있습니다.

  1. 더 높은 커서 위치에서 더 낮은 커서 위치로 강조 표시를 시작하면 (낮은 행 열 수에서 높은 행 열 수로) y
  2. 하이라이트가 더 낮은 커서 위치에서 높은 커서 위치로 시작되면 커서는 현재 위치로 유지됩니다.

yanking 후 원래 위치로 돌아 가기 :
gv 이전 하이라이트를 가져옵니다.

이제 키
o또는 로 키를 사용하여 시각 모드에서 원래 위치와 현재 위치 사이를 전환 할 수 있습니다 O.

상태 줄의 줄과 열 번호는 정확한 커서 위치를 아는 데 도움이됩니다.
선적 서류 비치:

:help visual-change

vip단락 중간에서 커서가 시작될 때는 작동하지 않습니다 .
Antony

오, 나는 그것을 알아 차리지 못했습니다. 지금은 답변을 삭제하는 대신 편집 할 것입니다.
vusan

@Antony 이제 그것은 또한 vip내 편집 을 확인 하기 위해 작동합니다 .
vusan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.