visual - 텍스트를 vim에 붙여 넣을 때 자동 들여 쓰기 사용 안함




vim unset auto indent (13)

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

:r !pbpaste

https://code.i-harness.com

저는 Vim을 배우려고 노력하고 있습니다.

클립 보드에서 문서에 코드를 붙여 넣으면 각 줄 시작시에 여분의 공백이 생깁니다.

line
  line
    line

자동 들여 쓰기를 해제 할 수는 있지만 다른 설정이 충돌하거나 무언가 (내 .vimrc에서 꽤 분명해 보이지만 제거 할 때 중요하지 않은 것 같아서) 때문에 작동하지 않습니다.

코드를 붙여 넣을 때 자동 들여 쓰기를 끄지 만 코드를 작성할 때 vim 자동 들여 쓰기를 유지하려면 어떻게합니까? .vimrc 파일은 다음과 같습니다.

set expandtab  
set tabstop=2  
set shiftwidth=2  
set autoindent  
set smartindent  
set bg=dark  
set nowrap  

vim에서 : ]p

밖에서 : "*]p 또는 "+]p


나는 set clipboard=unnamed 를 내 .vimrc에 set clipboard=unnamed 라고 set clipboard=unnamed . 그러면 기본 붙여 넣기 버퍼가 X의 클립 보드에 매핑됩니다.

따라서 터미널에 약간의 텍스트를 표시하면 p 를 눌러 vim에 붙여 넣을 수 있습니다. 마찬가지로 vim에서 물건을 뽑을 수 있습니다 (예 : YY 로 버퍼에 현재 줄을 뺀다).

던노. 나는 그것이 매우 편리하다는 것을 안다.


나는 보통 다음을 사용한다 :r! cat :r! cat 을 누른 다음 내용을 붙여 넣거나 ( shift + insert ) CTRL+D ( shift + insert ) .

사용 및 사용 중지, 직접 사용 필요 없음


로컬에서 작업하는 경우 키 시퀀스를 사용하여 시스템 클립 보드에서 붙여 넣을 수 있습니다.

"+p

이것은 적절한 vim 명령이므로 삽입 모드를 입력하거나 자동 들여 쓰기를 처음부터 꺼려 할 필요가 없습니다.

물론 원격으로 작업하는 경우 (예 : SSH를 통해 콘솔에서 작업하는 경우) 작동하지 않으므로 :set noai , 모드 삽입, 콘솔에 붙여 넣기, 삽입 모드에서 나가기 :set ai 다른 곳에서 설명한대로 경로 :set ai .


붙여 넣기 중에 원하지 않는 결과가 발생하지 않도록하려면 다음과 같이 옵션을 설정해야합니다.

set paste

.vimrc에있는 유용한 명령은 set pastetoggle=<F10> 또는 다른 버튼으로 설정되어 붙여 넣기와 붙여 넣기 사이를 쉽게 전환 할 수 있습니다.


슬프게도 vim 플러그인이 iTerm2 3.0.15 (이전 버전에서 파손되었는지는 알 수 없지만)와 함께 작동하지 않는다고 언급했으나 대신이 해킹을 발견했습니다.

붙여 넣기를하고 iTerm2 vim 키를 사용하려면 command-p를 매핑하십시오. 분명히 iTerm2에서만 작동합니다.

어떻게 작동하는지. 나는 "jk"를 사용하여 이스케이프 모드로 들어가므로 다음과 같이해야한다.

: inoremap jk

.vimrc에.

그런 다음 P를 호출하여 붙여 넣기 모드를 시작합니다. "+ p를 눌러 클립 보드에서 붙여 넣은 다음 P를 눌러 붙여 넣기 모드를 비활성화하십시오 .hth.


이 기사를 읽으십시오 : 코드 붙여 넣기를 위해 자동 들여 쓰기 토글

어떤 사람들은 vimrc 다음과 같은 대안으로 상태 표시 줄에 보이는 시각적 피드백을 좋아합니다.

nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode

이것을 ~/.vimrc 추가하면 붙여 넣기 전후에 F2 키 를 누르면됩니다 :

set pastetoggle=<F2>

터미널 내부에서 작업 할 때 vim-bracketed-paste vim 플러그인은 vim-bracketed-paste 전후에 키 입력을하지 않고도 붙여 넣기를 자동으로 처리합니다.

그것은 libvte를 사용하는 iTerm2, gnome-terminal 및 다른 터미널과 같은 "최신"x-term 호환 터미널에 의해 보내진 이스케이프 시퀀스 인 브라켓 붙여 넣기 모드 를 탐지하여 작동합니다. 추가 보너스로 tmux 세션에서도 작동합니다. Linux 서버에 연결하고 tmux를 사용하는 Mac에서 iTerm2를 사용하여 성공적으로 사용하고 있습니다.


다음은 붙여 넣기 이벤트를 다시 매핑하여 붙여 넣기 모드를 자동으로 켜고 끄는 방법을 알아 낸 사람이 올린 게시물 입니다. MacOSX의 tmux / iTerm에서 저에게 적합합니다.


:pastetoggle :paste:nopaste 가 잘 작동해야합니다 (구현 된 경우 - 항상 토론과 같이 볼 수있는 것은 아닙니다). "+p 또는 "*p 직접 접근 방식을 사용하여 붙여 넣기를하고 "+r 또는 "*r :

Vim은 10 가지 유형의 레지스터 ( :help registers )에 quotestar 있으며 quoteplus 는 섹션의 quotestarquoteplus 관심이 있습니다.

  1. 선택 및 드롭 레지스터 "* , "+ 및 "~

이러한 레지스터를 사용하여 GUI에 대해 선택한 텍스트를 저장하고 검색합니다. quotestarquoteplus 참조하십시오. 클립 보드를 사용할 수 없거나 작동하지 않는 경우 이름이없는 레지스터가 대신 사용됩니다. Unix 시스템의 경우 클립 보드는 + xterm_clipboard 기능이있는 경우에만 사용할 수 있습니다. {Vi에 없음}

X11 시스템의 경우 "*와"+는 구별됩니다.

:help x11-selection*+ 의 차이점을 명확히합니다.

                                                  quoteplus quote+

PRIMARY (Vim의 Visual 모드에서와 같이 현재 시각적 선택을 나타낼 것으로 예상 됨), SECONDARY (잘못 정의 됨) 및 CLIPBOARD (잘라 내기, 복사 및 붙여 넣기 작업에 사용될 것으로 예상되는)의 세 가지 문서가 있습니다. ).

이 세 가지 중 Vim은 "* 레지스터를 읽고 쓰는 경우 PRIMARY를 사용합니다 (따라서 X11 선택이 가능할 때 Vim은"자동 선택 "의 '클립 보드'에 대한 기본값을 설정합니다). 그리고 + 레지스터를 읽고 쓸 때 CLIPBOARD를 사용합니다. Vim은 SECONDARY 선택에 접근하지 않습니다.

예 : (기본 옵션 값으로 가정)

  • Vim에서 Visual 모드로 URL을 선택하십시오. 브라우저로 이동하여 URL 텍스트 필드에서 마우스 가운데 버튼을 클릭하십시오. 선택한 텍스트가 삽입됩니다 (잘하면!). 참고 : Firefox에서는 about : config에서 middlemouse.contentLoadURL 환경 설정을 true로 설정할 수 있습니다. 그러면 창의 대부분의 위치에서 가운데 ​​마우스 버튼을 누르면 선택된 URL이 사용됩니다.

  • 마우스로 드래그하여 브라우저에서 일부 텍스트를 선택하십시오. Vim으로 가서 가운데 ​​마우스 버튼을 누르십시오 : 선택한 텍스트가 삽입됩니다.

  • Vim에서 텍스트를 선택하고 "+ y"를 눌러 브라우저로 가서 마우스로 드래그하여 텍스트 필드의 텍스트를 선택한 다음 마우스 오른쪽 버튼을 사용하여 팝업 메뉴에서 "붙여 넣기"를 선택하십시오. Vim의 텍스트 "+ 레지스터의 텍스트는 비주얼 선택을 할 때 사용할 수 있으므로"* 레지스터에서 다른 텍스트를 사용할 수 있습니다. 그러면 선택한 텍스트를 덮어 쓸 수 있습니다.

업데이트 : 더 나은 답변 : https://.com/a/38258720/62202

코드를 붙여 넣을 때 자동 들여 쓰기를 끄려면 특별한 "붙여 넣기"모드가 있습니다.

유형

:set paste

그런 다음 코드를 붙여 넣습니다. 도구 설명의 텍스트에 이제 -- INSERT (paste) -- 됩니다.

코드를 붙여 넣은 후 붙여 넣기 모드를 해제하여 입력 할 때 자동 들여 쓰기가 올바르게 작동하도록합니다.

:set nopaste

그러나, 나는 항상 그 성가신 것으로 나타났습니다. 그래서 텍스트를 편집하는 동안 붙여 넣기 모드와 붙여 넣기 모드 사이를 전환 할 수 있도록 <F3> 매핑 합니다! 나는 이것을 .vimrc 추가한다.

set pastetoggle=<F3>




auto-indent