source

VIM Ctrl-V가 윈도우즈 붙여넣기와 충돌함

lovecheck 2023. 4. 17. 21:58
반응형

VIM Ctrl-V가 윈도우즈 붙여넣기와 충돌함

Windows에서 VIM을 사용하고 있습니다.문제는 비주얼 모드로 사용하고 싶다는 것입니다.그러나 이 키는 Windows 페이스트와 충돌합니다.이 키를 붙여넣기 대신 VIM 비주얼 모드로 리셋하려면 어떻게 해야 합니까?이 설정은 _vimrc Configuration파일로 하는 것이 좋습니다.

VIM 매뉴얼에서 다음 내용을 참조해 주십시오.

는 붙여넣기에 사용되므로 블록별 비주얼 선택을 시작할 수 없습니다.대신 사용하셔도 됩니다.삽입 모드 및 명령줄 모드에서 를 사용하여 의 오래된 의미를 얻을 수도 있습니다.단, 제어 흐름에 사용되는 단말기에는 사용할 수 없습니다.

_vimrc 파일을 확인하여 mswin.vim의 소스가 있는지 확인합니다.이 스크립트는 ^v를 붙여넣기에 매핑합니다._vimrc 파일에서 이 행을 삭제하거나 mswin.vim에서 직접 매핑명령어를 디세블로 할 수 있습니다.

자세한 내용은 vim에서 :help 동작을 수행합니다.

Unix에서와 같이 동작하는 비주얼 모드(및 다른 것)는 JOP와 Windows 프로그래머의 제안을 필요로 합니다.

Windows 의 GVim 에서는, 편집 메뉴로 이동해, 기동 설정을 클릭해, Windows 고유의 가비지를 코멘트 아웃 합니다(vimrc 코멘트 문자(큰따옴표) 사용).mswin.vim 파일은 - voverride가 지정되는 파일입니다.beat mswin 옵션을 사용하면 화살표 키가 예상대로 동작을 적용하지 않습니다(마우스 선택 동작도 변경됩니다).

"source $VIMRUNTIME/mswin.vim
"behave mswin

수 것 이기 때문에): ,, 랙, 랙, 랙, 랙, 랙, 랙, 랙, 랙, 랙, 랙, 랙, 고, 고, 고, it, it, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i그래서 터미널에서 보는 것처럼 보입니다(그리고, 밝은 배경은 종이에서는 훌륭하지만, 백라이트 화면에서는 형편없기 때문입니다). colorscheme koehler

_vimrc의 이 행이 문제가 되는 경우:

behave mswin

그 행을 삭제합니다.

여기 이 문제에 대한 현대적인 해결책이 있습니다.GUI 버전이 아닌 Vim/Neovim 터미널 버전에 적용됩니다.Microsoft의 새로운 Windows Terminal을 사용하는 경우(강력히 권장) 키 바인딩을 다시 정의할 수 있습니다.설정 파일의 다음 섹션은 처음에는 주석 아웃되지 않습니다.제가 보여드린 것처럼 댓글을 달아주시면Ctrl+V우리 모두가 알고 사랑하는 Vim의 직사각형 비주얼 셀렉트 키가 됩니다.

// Copy and paste are bound to Ctrl+Shift+C and Ctrl+Shift+V in your defaults.json.
// These two lines additionally bind them to Ctrl+C and Ctrl+V.
// To learn more about selection, visit https://aka.ms/terminal-selection
//{
//    "command": {
//        "action": "copy",
//        "singleLine": false
//    },
//    "keys": "ctrl+c"
//},
//{
//    "command": "paste",
//    "keys": "ctrl+v"
//}

자, 여기 이상한 부분이 있습니다.나는 이것이 그들의 행동을 바꿀 것이라고 예상했었다.Ctrl+V터미널의 Vim 밖에서 확인했습니다.붙여넣기는 하지만 Ctrl+Shift+V 붙여넣기와는 다릅니다.그러나 Vim 내부에서는 모든 것이 양호합니다.Ctrl+V직사각형 선택용"*P,Ctrl+Shift+V, 또는Right Mouse Button클립보드에서 붙여넣을 수 있습니다.

모든 곳에서 같은 키 입력을 선호하기 때문에 mswin.vim을 덮어쓰려면 .vimrc에서 이것을 사용합니다.

if has('win32')
  " Avoid mswin.vim making Ctrl-v act as paste
  noremap <C-V> <C-V>
endif

당신이 그것에 대해 할 수 있는 일이 많은지 잘 모르겠어요.대신 사용하셔도 됩니다.

Windows 터미널(PowerShell)의 경우 셸 탭 바로 옆에 있는 드롭다운 화살표를 클릭하고 설정을 선택합니다.에서"actions"의 단면settings.json다음 행을 코멘트하여 다음과 같이 표시할 수 있습니다.

// { "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" },

그리고.

// { "command": "paste", "keys": "ctrl+v" },

이건 말도 안 돼Ctrl+V그리고.Ctrl+C[붙여넣기 및 복사]에서 선택합니다.단, 이 때문에defaults.json아직 사용할 수 있습니다.Shift+Ctrl+C그리고.Shift+Ctrl+V복사하여 붙여넣기 할 수 있습니다.

필러 댓글 좀 봐주세요.애초에 그의 해결책을 보지 못했어요.

jop의 조언(기본 _vimrc 파일에서 mswin.vim을 찾는다)과 Windows 프로그래머의 조언(behave mswin' 행을 삭제한다)의 조합은 저에게 매력적으로 작용했습니다.

(제 평판은 너무 낮아서 투표나 합산할 수 없습니다.누군가 이걸 치워주세요.그렇지 않으면 평판이 높아지면 다시 돌아오겠습니다.)

Windows 상의 VM의 경우CTRL+V붙여넣기는 다음과 같습니다.

심플하게...는 즉시 작동하며 오리지널과 유사합니다.CTRL+V시각적 선택
^ 출처:스테베슬리바가 언급한 코멘트.

Windows 고유의 매핑에 전체적으로 문제가 있는 경우는,

let g:skip_loading_mswin = 1

(mswin.vim) 로드를 완전히 비활성화합니다.

Windows 터미널에서는CTRL+V숏컷은 기본적으로 붙여넣기 명령에 할당되어 있습니다.터미널에서 Vim을 사용하는 경우 터미널의 설정 / 작업 메뉴에서 붙여넣기 바인딩을 변경할 수 있습니다(또는 WSL/PowerShell/명령 프롬트 사용 등).Terminal에서 기동하지 않고 직접 기동합니다).

언급URL : https://stackoverflow.com/questions/426896/vim-ctrl-v-conflict-with-windows-paste

반응형