Vim을 배우려고 노력하고 있습니다.
클립 보드에서 문서에 코드를 붙여 넣을 때, 새로운 줄이 시작될 때마다 공백이 생깁니다.
line
line
line
자동 들여 쓰기를 끌 수는 있지만 다른 설정과 충돌하거나 무언가가 있기 때문에 작동하지 않을 수 있음을 알고 있습니다 (.vimrc에서는 꽤 분명해 보이지만 제거 할 때는 중요하지 않습니다).
코드를 붙여 넣을 때 자동 들여 쓰기를 끄려면 코드를 작성할 때 vim 자동 들여 쓰기가 어떻게됩니까? 내 .vimrc
파일 은 다음과 같습니다 .
set expandtab
set tabstop=2
set shiftwidth=2
set autoindent
set smartindent
set bg=dark
set nowrap
답변
업데이트 : 여기에 더 나은 답변 : https://stackoverflow.com/a/38258720/62202
코드를 붙여 넣을 때 자동 들여 쓰기를 끄려면 특별한 “붙여 넣기”모드가 있습니다.
유형
:set paste
그런 다음 코드를 붙여 넣습니다. 툴팁의 텍스트에 이제가 표시 -- INSERT (paste) --
됩니다.
코드를 붙여 넣은 후에는 붙여 넣기 모드를 끄면 입력시 자동 들여 쓰기가 다시 올바르게 작동합니다.
:set nopaste
그러나 나는 항상 성가신 것을 발견했습니다. 텍스트를 편집하는 동안<F3>
붙여 넣기 모드와 붙여 넣기 모드 사이를 전환 할 수 있도록 매핑하는 이유입니다 ! 나는 이것을 추가.vimrc
set pastetoggle=<F3>
답변
붙여 넣을 때 원하지 않는 효과를 피하려면 다음과 같은 옵션을 설정해야합니다.
set paste
.vimrc에 유용한 명령 set pastetoggle=<F10>
은 붙여 넣기와 붙여 넣기 사이를 쉽게 전환 할 수있는 다른 버튼이나 다른 버튼입니다.
답변
나는 보통 사용 :r! cat
후 붙여 넣기 ( shift + insert )
컨텐츠를하고 CTRL+D
.
직접 사용을 활성화 및 비활성화 할 필요가 없습니다.
답변
로컬로 작업하는 경우 시스템 클립 보드에서 키 순서로 붙여 넣을 수 있습니다.
"+p
이 명령은 적절한 vim 명령이므로 먼저 삽입 모드를 시작하거나 자동 들여 쓰기를 끄는 것에 대해 걱정할 필요가 없습니다.
물론 원격으로 작업하는 경우 (예 : SSH를 통한 콘솔) 작동하지 않으며 :set noai
, 삽입 모드 로 이동하여 콘솔에 붙여 넣고 삽입 모드를 떠나고 :set ai
다른 곳에서 설명한대로 라우팅해야합니다.
답변
붙여 넣기 모드를 paste/nopaste/pastetoggle
완벽하게 설정하는 동안 붙여 넣기 전에 붙여 넣기 모드를 수동으로 활성화하고 붙여 넣기 후 붙여 넣기 모드를 비활성화해야합니다. 내가 게으른 사람 인 아래는 내가 지금까지 찾은 최고의 솔루션이며 붙여 넣을 때 붙여 넣기 모드를 자동으로 전환합니다.
붙여 넣을 때 터미널의 브래킷 붙여 넣기 모드를 사용하여 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
이제 붙여 넣기 모드를 명시 적으로 켜거나 끄지 않고 붙여 넣을 수 있습니다. 자동으로 처리됩니다.
출처 : 코더 월
참고 : 이 솔루션은 WSL (Linux 용 Windows 10 하위 시스템)에서 작동하지 않습니다. 누구든지 WSL 솔루션을 가지고 있다면이 답변을 업데이트하거나 의견에 추가하십시오.
Tmux tmux를 사용하는 경우 선언을 이중 이스케이프해야합니다. 이 코드는 Coderwall 에도 있습니다.