[vim] 텍스트를 vim에 붙여 넣을 때 자동 들여 쓰기 끄기

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 에도 있습니다.


답변

Mac 사용자는 다음을 사용하여 보드에서 직접 읽음으로써 자동 서식을 피할 수 있습니다.

:r !pbpaste


답변

다음은 붙여 넣기 이벤트를 다시 매핑하여 자동으로 붙여 넣기 모드를 켠 다음 다시 끄는 방법을 알아 낸 누군가 의 게시물 입니다. MacOSX의 tmux / iTerm에서 작동합니다.