터미널 vim에서 클립 보드 데이터를 붙여 넣으면 종종 코드 들여 쓰기가 엉망이됩니다. :set paste
들여 쓰기를 사용 하면 깨지지 않았습니다. 데이터를 붙여 넣은 후에 :set nopaste
다시 해야 합니까? 그렇지 않으면 어떻게됩니까?
터미널 vim에서 클립 보드 데이터를 붙여 넣으면 종종 코드 들여 쓰기가 엉망이됩니다. :set paste
들여 쓰기를 사용 하면 깨지지 않았습니다. 데이터를 붙여 넣은 후에 :set nopaste
다시 해야 합니까? 그렇지 않으면 어떻게됩니까?
답변:
다른 사람들이 쓴 것처럼 '붙여 넣기'설정을 남기고 싶지 않습니다. 방금 훌륭한 터미널 에뮬레이터와 올바르게 컴파일 및 구성 vim
하면 '붙여 넣기'를 변경할 필요가 없음 을 지적하고 싶었습니다 . xterm 또는 GNOME Terminal과 같은 우수한 터미널 에뮬레이터, X11 기능이 포함 된 vim 및 'mouse'옵션이 'a'로 설정되어 있어야합니다. 그런 다음 vim
마우스로 붙여 넣을 때 "알고" '붙여 넣기'옵션을 효과적으로 설정 및 설정 해제합니다.
vim
X11 기능을 사용하는 한 가지 방법 gvim
은 -v
옵션 으로 실행 하거나 별명을 작성하는 것입니다.
alias vim='gvim -v'
그런 다음 넣어
set mouse=a
~ / .vimrc에.
Copy
일부 텍스트를 선택하지 않으면 회색으로 표시되거나 전혀 표시되지 않습니다. 복사 할 텍스트를 어떻게 선택합니까?
이 게시물은 내가 가장 좋아하는 답변 https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode
기본적으로 삽입 모드에서 시작하고 Ctrl + Shift + V를 사용하거나 마우스로 마우스 오른쪽 버튼으로 붙여 넣기를 사용하면 Vim은 이것이 터미널에서 온 것을 감지하고 자동으로 붙여 넣기 모드를 설정 한 후 한 번 설정을 해제하므로 다시 매핑 된 키를 잃지 않습니다. (원시 데이터를 작성하기 때문에 붙여 넣기 모드에서 작동 할 수 없음), 완료되면 "정상"상태로 돌아갑니다.
단지 vim (.vimrc에 넣으십시오)
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunction
Tmux에서 vim을 사용하는 경우 (여전히 .vimrc로 이동)
function! WrapForTmux(s)
if !exists('$TMUX')
return a:s
endif
let tmux_start = "\<Esc>Ptmux;"
let tmux_end = "\<Esc>\\"
return tmux_start . substitute(a:s, "\<Esc>", "\<Esc>\<Esc>", 'g') . tmux_end
endfunction
let &t_SI .= WrapForTmux("\<Esc>[?2004h")
let &t_EI .= WrapForTmux("\<Esc>[?2004l")
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunction
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
let &t_SI .= "\<Esc>[?xxxxx"
줄 중 하나가 키보드 붙여 넣기 단축키를 감지 한다고 가정 합니까? Mac에서도 작동하며 다른 단축키가 있습니까?