삽입 모드로 붙여 넣기


385

Vim에서 삽입 모드로 붙여 넣을 수 있습니까?

답변:


465

인서트 모드에서 CTRL-R {register}

예 :

  • CTRL-R * 클립 보드의 내용에 삽입합니다
  • CTRL-R " (이름이없는 레지스터)는 마지막 삭제 또는 yank를 삽입합니다.

vim의 help type에서 이것을 찾으려면 :h i_ctrl-r


13
그렇습니다. 최근에 CTRL-R에 대해서만 배웠으며 매우 유용합니다.
Dan

16
CTRL-R *GVIM 또는 x와 상호 작용하도록 컴파일 된 버전에서만 작동합니다. 을 입력 vim --version하고 찾으십시오 +xterm_clipboard. 그것을 가지고 있지 않다면 다른 버전의 vim이 필요합니다. ( vim.wikia.com/wiki/Accessing_the_system_clipboard )
Conrad.Dean

10
실제로는 필요 +clipboard하지만 +xterm_clipboard어쨌든 필요합니다. 일부 OS xterm_clipboard에서는 적용되지 않습니다.
Andrew Marshall

1
흠, C-r +를 사용하여 Windows의 시스템 클립 보드에서 붙여 넣기 (GVim 휴대용 사용)? * 등록에 대해 들어 본 적이 없습니다.
kitsu.eb

6
@ kitsu.eb X 시스템에서 *레지스터는 마우스 가운데 클릭으로 +붙여 넣을 수 있지만 기존의 복사 / 붙여 넣기입니다. 표준
.freedesktop.org

235

Vim이 붙여 넣은 텍스트에서 서식을 엉망으로 만들지 않으려면 다음을 사용하는 것이 좋습니다 :set paste. 이렇게하면 Vim이 코드를 다시 탭하지 못하게됩니다. 붙여 넣기를 마치면 :set nopaste정상적인 동작으로 돌아갑니다.

set pastetoggle=<F2>.vimrc 와 같은 것을 추가하여 단일 키로 모드를 전환 할 수도 있습니다 . 자동 들여 쓰기 토글에 대한 자세한 내용은 여기를 참조하십시오 .


47
:set nopaste모드를 붙여 사용할 수 없게됩니다
제임스 스나이더

24
@JamesSnyder 더 좋은 방법은 :set paste!아마도 붙여 넣기가 명령 기록에서 매우 가깝게 설정되어 있으므로 간단히 ':'을 누른 다음 화살표를 위로 올리고 '!'를 추가하면됩니다.
Rafael Barbosa

6
그냥 궁금해- :set paste! 고마워 에 대한 더 나은 또는 다른 점 :)
Michael Durrant

33
!명령 끝 vim에서는 명령을 켜고 끕니다. 이런 식으로 입력하지 않아도 :set nopaste히스토리를 위로 스크롤하고 동일한 명령 ( :set paste!)을 다시 실행할 수 있습니다.
에이 바

3
@blockloop 붙여 넣기하는 동안 활성화하고 바로 비활성화해야합니다.
NieDzejkob

125

직접하지 않습니다. 당신이 할 수있는 일은 단일 일반 모드 작업을 위해 삽입 모드를 신속하게 종료 Ctrl-O한 다음 거기에서 붙여 넣기를하면 삽입 모드로 돌아갑니다.

키 콤보 : Ctrl-O p

편집 : 흥미로운. 다른 사람들이 열거 한 방법이있는 것 같습니다.


2
ctrl-r "가 작동하지 않습니다 (터미널에서 OS x, vi). ctrl-o p did
Bob

4
가장 빠르고 쉽게 기억할 수있는 방법입니다.
pinpox

무엇에 대해 esc + p?
sitilge

2
보다 빠르고 esc + p + i확실히 입력하기가 훨씬 쉽습니다.CTRL-R + "
lucidbrot

실제로 이것은 때때로와 다르게 동작 CTRL-R "합니다. 예를 들어, vimrc 설정이이를 변경할 수 있지만 새 줄에 무언가를 붙여 넣으면 CTRL-O p들여 쓰기가 사라집니다.
noname

30

삽입 모드 Ctrl-R {register}에서 레지스터를 사용할 수있는을 사용할 수 있습니다.

  • + 클립 보드를 위해
  • * X 클립 보드 (X에서 마지막으로 선택한 텍스트)의 경우
  • " 이름이없는 레지스터 (Vim에서 마지막 삭제 또는 yank)의 경우
  • 또는 다른 여러 사람 (참조 :h registers).

Ctrl-R {register} 입력 한 것처럼 텍스트를 삽입합니다.

Ctrl-R Ctrl-O {register} 원래 들여 쓰기로 텍스트를 삽입합니다.

Ctrl-R Ctrl-P {register} 텍스트를 삽입하고 자동 들여 쓰기합니다.

Ctrl-O삽입 모드로 돌아 가기 전에 일반 모드 명령을 실행하는 데 사용할 수 있으므로
Ctrl-O "+p예를 들어 사용할 수도 있습니다.

자세한 내용은 다음 설명서를 참조하십시오. :h i_ctrl-r


4
이 답변은 가장 포괄적 인 것 같습니다. 매우 명확하고 제 의견으로는 가장 도움이됩니다. OP의 질문에 대답하고 일부는 간결하게 대답합니다.
Devvyn

26

이것을 사용하여 다음을 사용하여 클립 보드에서 붙여 넣을 수 있습니다 Ctrlv.

set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>

그리고 이것은 다음을 사용하여 시각적 선택을 클립 보드로 가져옵니다 Ctrlc.

vnoremap <C-c> "+y

일반 모드에서 클래식 vim yanking / pasting ( y/ p)에 대해 기본적으로 클립 보드를 사용하려면 다음을 수행하는 구성 옵션이 있습니다.

set clipboard=unnamedplus

이 설정을 사용하면 예를 들어 일반 모드에서 먼저 yank 한 다음 Ctrlv삽입 모드 로 붙여 넣을 수 있습니다. 또한 다른 vim 인스턴스와 다른 응용 프로그램에서 텍스트를 붙여 넣을 수 있습니다.

다른 옵션은 다음과 같습니다.

set clipboard=unnamed

그런 다음 X 환경에서 마우스를 끌어서 무언가를 선택하고 나중에 vim에 붙여 넣을 수 있습니다. 그러나 (어떤 이유로 든) yVim에서 무언가 ( ) 를 잡아 당기지 못하고 shiftinsert나중에 다른 곳 에서 볼 수는 없습니다 . 아마도 상당히 제한적입니다.

이에 대한 Vim 문서 : http://vim.wikia.com/wiki/Accessing_the_system_clipboard

사용자 정의 레지스터에서 붙여 넣으려면 다른 답변을 따를 수 있습니다 :). 이 답변은 주로 Vim을 시스템 클립 보드에 통합하는 것에 관한 것입니다.


참고 것을 set clipboard=unnamedplusset clipboard=unnamed사업에, 당신이 사용 gvim을 또는 vimx (필요 vim-X11) : 사람들은 컴파일된다 +xterm_clipboard. 당신은 선택적으로이 점을 넣을 수 있습니다 .bashrc별명 vim을 가진 vimx:

if [ -e /usr/bin/vimx ]; then
    alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi

vim이 +xterm_clipboard제공 한 정보에서 vim의 유무를 확인할 수 있습니다 vim --version.


7
이것이 바로 내가 찾던 것입니다. 또한 여기에서 유일한 합리적인 답변입니다. 이것은 일이 예상되는 방식입니다. 누구나 기본 행동 :set paste과 비잔틴 <leader><leader> * y이 원격으로 바람직한 이유를 알고 있습니까? 너무 헌신적으로 들리지는 않지만, 이것이 Vim 철학이 무엇을 반영하는지, 또는 그것이 단지 역사적인 불행인지 궁금합니다.
Aeschylus

귀하의 답변으로 Gvim에서 Shift + Insert를 사용할 수있었습니다 inoremap <S-Insert> <F12><C-r>+<F12>(F12를 pastetoggle로 사용합니다). 감사.
sromero

20

시스템 클립 보드 ( :set clipboard=unnamed) 를 사용하도록 Vim을 설정하면 Vim에서 복사 한 모든 텍스트를 Shift+를 사용하여 붙여 넣을 수 있습니다 Insert. Shift+ Insert는 단순히 OS 전체의 붙여 넣기 키 조합입니다 ( Ctrl+ Insert는 해당 '복사'입니다).


1
S-Insert에 대해 몰랐습니다 :)
BandGap

이 반대로 작동합니까? 윌 p클립 보드에 텍스트를 붙여?
Zaz

Shift + Insert텍스트를 붙여 넣기 위해 사용하기 전에 삽입 모드에 있어야합니다.
jdhao

18

마우스 가운데 버튼을 사용하여 삽입 모드로 붙여 넣을 수도 있습니다 (Linux 만 해당).


106
당신이 말하는이 마우스는 무엇입니까?
Jim Mitchener

19
당신이 말하는 비 리눅스 OS는 무엇입니까?
Bruno Bronosky 2014

-1 :이 답변은 하드웨어 및 터미널 설정에 따라 크게 달라집니다. 궁극적으로 마우스의 버튼은 사전 설정 문자열을 터미널로 보내고 터미널은 해당 문자열을 구문 분석하여 특정 명령을 실행합니다. 문제는 터미널 설정에 따라 크게 달라질 수 있다는 것입니다. 이 답변을 개선하려면 최소한 터미널 버전, OS 및 사용중인 마우스 버전 및 모델을 알려주십시오.
melvynkim

마우스 가운데 버튼 붙여 넣기는 모든 Linux 응용 프로그램에서 매우 일반적이며 터미널 또는 OS 버전으로 제한되지 않습니다.
lcltj

Arch Linux + urxvt에서는 작동하지 않습니다. 새 줄만 추가합니다.
zygimantus

5

다음을 -- INSERT (past) --통해 모드를 시작할 수 있습니다 .

  • 키보드 콤보 : y p

또는

  • :set paste삽입 모드로 들어가기 ( :set nopaste비활성화)

-- INSERT (past) --모드 에서 한 번만 시스템 붙여 넣기 기능 (예 : CtrlShiftvLinux, CmdvMac OS)을 사용하십시오.

이 전략은 ssh를 통해 vim을 사용할 때 매우 유용합니다.


4

예. Windows Ctrl+ V및 Linux 에서는 두 마우스 버튼을 거의 동시에 누릅니다.

Windows에서는 _vimrc 의이 줄이 아마도 그렇게한다고 생각합니다.

source $VIMRUNTIME/mswin.vim

리눅스에서는 어떻게했는지 기억이 나지 않습니다. 기본 .vimrc 파일에서 일부 행을 삭제 한 것 같습니다.


한 번 이상 공표 할 수 있습니까? 다른 창에서 왔을 때만 붙여 넣기를 원하므로 항상 마우스 위에 있습니다. 훌륭한!
dave

Linux에서는 마우스 가운데 버튼을 눌러 붙여 넣습니다. 두 개의 버튼 마우스가 있고 왼쪽과 오른쪽 버튼을 모두 누르면 "Emulate3Buttons"또는 이와 유사한 방식으로 작동합니다.
Cougar

0

삽입 모드에서 붙여 넣기

이 경우 맞춤지도가 적절 해 보입니다. 다음은 삽입 모드에서 눌린 항목을 붙여 넣는 데 사용하는 것입니다.

inoremap <Leader>p <ESC>pa

Leader여기 내 열쇠는 \; 즉 \p, 삽입 모드에서 타격 을하면 이전에 취소 된 항목 / 라인을 붙여 넣을 수 있습니다.


0

지도를 추가하십시오.

" ~/.vimrc
inoremap <c-p> <c-r>*

vim을 다시 시작하고 Crtl+p삽입 모드에서 누르면 복사 된 텍스트가 붙여 넣어집니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.