"di{"와 같은 체인 명령에서는 { 및 } 매핑이 작동하지 않습니다.

"di{"와 같은 체인 명령에서는 { 및 } 매핑이 작동하지 않습니다.

다음을 매핑하고 모든 vim 모드를 포괄하기 위해 매핑 중 하나 또는 둘 다를 활성화해 보았습니다.

map! ĸ {
map ĸ {

di{매핑은 삽입 모드와 일반 모드에서 예상대로 작동하지만 중괄호 쌍 내의 모든 내용을 삭제하는 등의 명령을 실행하려고 하면 {}아무 일도 일어나지 않습니다. 재귀 매핑은 {다른 명령에 대해 작동하고 ino {이를 사용하면 실패하므로 활성화되어 있어야 합니다...

link 명령에서 왜 작동하지 않는지 이해할 수 없습니다.

답변1

문제는 이것이 i{완전한 연산자 보류 명령(또는 텍스트 개체)이고 매핑이 실제로 기존 명령이나 매핑의 후속 부분에 적용되지 않는다는 것입니다. 운영자 정지와 시각적 모드 i{(및 그 친구 ) 를 모두 지원하려면 a{이를 명시적으로 수행하기 위한 추가 매핑 세트가 필요합니다.

omap iĸ i{
omap aĸ a{
xmap iĸ i{
xmap aĸ a{

하지만 이 키 매핑을 수행하는 더 좋은 방법은 다음을 사용하는 것입니다.'langmap'일반 모드에서 키를 다시 매핑할 수 있는 기능입니다. 특정 사용 사례의 경우 'langremap'.

set langmap=ĸ{
set langremap

이는 일반 모드, 시각적 모드, 운영자 일시 중지 모드 및 기호와 관련된 매핑을 처리합니다 {.

삽입 모드나 명령줄 모드는 처리하지 않습니다. 이를 위해 :map!(보통 잘 작동하는) a를 계속 사용하거나'keymap'삽입 모드에 대한 옵션은 동일 'langmap'하지만 'keymap'훨씬 더 복잡합니다(고유한 구문을 사용하여 별도의 매핑 파일을 생성하는 작업이 포함되며 매핑이 활성화되는 위치를 정확히 제어하는 ​​몇 가지 추가 옵션이 있습니다).

관련 정보