2014-01-26 2 views
0

내 문제는 빈티지 모드가 아닌 비주얼 선택을 사용하고 싶습니다. 여기 내 키 바인딩은 다음과 같습니다숭고한 텍스트 2 - 빈티지 모드없이 비주얼 모드 추가

[ 
    { "keys": ["ctrl+k"], "command": "move", "args": {"by": "lines", "forward": false} } 
    , { "keys": ["ctrl+j"], "command": "move", "args": {"by": "lines", "forward": true} } 
    , {"keys":["ctrl+h"], "command": "move", "args": {"by": "characters", "forward": false}} 
    , {"keys":["ctrl+l"], "command": "move", "args": {"by": "characters", "forward": true}} 
    , {"keys":["ctrl+e"], "command": "move", "args": {"by": "characters", "forward": true}} 
    ,{ "keys": ["ctrl+e"], "command": "move_to", "args": {"to": "eol", "extend": false} } 
    ,{ "keys": ["ctrl+a"], "command": "move_to", "args": {"to": "bol", "extend": false} } 
    , {"keys": ["ctrl+y"], "command": "copy"} 
    , {"keys": ["alt+y"], "command": "paste"} 
    , { "keys": ["ctrl+v"], "command": "enter_visual_mode"} 
] 

당신은 내가 Ctrl 키를 수정 제외 VI-같은 명령을 볼 수 있듯이. 나는 그것을 이렇게 원한다. Ctrl + V를 눌러 시각적 모드로 전환하십시오. 빈티지 모드의 기본 키 바인딩 파일을 보았습니다. 명령이 정의 된 것처럼 정의되었습니다. 분명히 "enter_visual_mode"는 Vintage 모드의 다른 곳에서 정의 된 명령이지만 기본 편집기에이를 포함시키는 방법을 알지 못합니다. 누군가가 이것을 설정하는 것에 대한 지침을 줄 수 있다면 그것은 인정 될 것입니다!

답변

1

원하는 동작을 지원하려면 플러그인을 사용해야합니다. 나는 완벽하게 플러시 된 것을 알지 못하지만, 이것이 다른 키보드 모드 (예 : 시각적)를 정의하는 시작임을 알았습니다. https://github.com/KonTrax/MultiBind을보십시오. 테스트되지 않지만 키 바인딩 파일에 다음을 추가하면 작동합니다.

// Toggle "visual" layout 
{ "keys": ["ctrl+v"], 
    "command": "multibind_toggle", 
    "args" : { "layout": "visual" } 
}, 

// Show current layout in statusbar 
{ "keys": ["ctrl+shift+\\"], 
    "command": "multibind_show", 
    "args" : { } 
}, 

{ "keys": ["ctrl+k"], "command": "move", "args": {"by": "lines", "forward": false, "extend": true}, "context": [{ "key": "multibind.visual" }]}, 
{ "keys": ["ctrl+j"], "command": "move", "args": {"by": "lines", "forward": true, "extend": true}, "context": [{ "key": "multibind.visual" }] }, 
{"keys":["ctrl+h"], "command": "move", "args": {"by": "characters", "forward": false, "extend": true}, "context": [{ "key": "multibind.visual" }]}, 
{"keys":["ctrl+l"], "command": "move", "args": {"by": "characters", "forward": true, "extend": true}, "context": [{ "key": "multibind.visual" }]}, 
{"keys":["ctrl+e"], "command": "move", "args": {"by": "characters", "forward": true, "extend": true}, "context": [{ "key": "multibind.visual" }]}, 
{ "keys": ["ctrl+e"], "command": "move_to", "args": {"to": "eol", "extend": true}, "context": [{ "key": "multibind.visual" }]}, 
{ "keys": ["ctrl+a"], "command": "move_to", "args": {"to": "bol", "extend": true}, "context": [{ "key": "multibind.visual" }] } 

당신은 ctrl+e 두 번 정의, 그래서 당신이 원하는 어떤 행동을 모르겠어요.

+0

감사합니다. multibind.py를 어디에두면 좋을까요? – ChrisU

+0

죄송합니다. 작동하도록했습니다. multibind.py를 사용하여 새 패키지 (패키지 디렉토리의 새 디렉토리)를 만든 다음 키 바인딩을 추가했습니다. { "keys": [ "ctrl + j"], "command": "move", "args" : { "by": "lines", "forward": true, "extend": true}, "context": [{ "key": "multibind.visual"}]} 이것은 완벽하게 작동했습니다.이 방법은 많은 코드 중복을 포함하므로 너무 나쁩니다. – ChrisU

+0

패키지 디렉토리에 GitHub 레포를 복제했을 수 있습니다. 중복 된 코드를 말할 때 당신이 말하는 내용을 잘 모르겠습니다. 어떤 조건에 따라 고유 한 동작을 정의하므로 중복되는 것이 없습니다. – skuroda

관련 문제