readline - 세트 마커를 재설정하기 위해 잡아당기기

readline - 세트 마커를 재설정하기 위해 잡아당기기

이 바인딩을 구현하고 싶습니다.

"\C-xk": kill-region

# turn previous word into HTML/XML
# opening and closing tag pair
"\C-xh": "\e \eb\C-xk<\C-y>\e </\C-y>\C-x\C-x"

</하지만 태그 사이가 아닌 두 번째로 텍스트를 가져온 위치로 돌아갑니다 <tag>|</|tag>.

다양한 텍스트를 사용하여 명령줄에서 두 기능을 모두 시도했는데 set-mark값이 재설정되는 것 같습니다 yank.

이것은 버그입니까, 아니면 의도된 것입니까? 이제 \C-b\C-b시퀀스의 끝에 추가하기만 하면 됩니다.

답변1

이는 버그가 아니라 명시적으로 프로그래밍된 동작입니다.

당신이 보면Kill.c -> rl_yank():512

/* Yank back the last killed text.  This ignores arguments. */
int
rl_yank (count, ignore)
     int count, ignore;
{
  if (rl_kill_ring == 0)
    {
      _rl_abort_internal ();
      return 1;
    }

  _rl_set_mark_at_pos (rl_point);
  rl_insert_text (rl_kill_ring[rl_kill_index]);
  return 0;
}

명시적으로 재설정되는 것을 볼 수 있습니다.표시지금까지보다, Kill Ring의 텍스트를 삽입합니다.

다른 yank* 방법에도 동일하게 적용됩니다.

이것은 잘 문서화되어 있지 않지만 잠재적으로 알 수 없는 길이의 텍스트를 삽입한 후 원래 지점으로 돌아갈 수 있도록 하기 위한 것이라고 가정합니다.

관련 정보