이 바인딩을 구현하고 싶습니다.
"\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* 방법에도 동일하게 적용됩니다.
이것은 잘 문서화되어 있지 않지만 잠재적으로 알 수 없는 길이의 텍스트를 삽입한 후 원래 지점으로 돌아갈 수 있도록 하기 위한 것이라고 가정합니다.