vi 편집기에서 붙여 넣기 내용을 복사하는 방법


165

vi 편집기 문서에 내용을 붙여 넣을 때 Ctrl+ V를 사용하려고 했지만 Ctrl+ V는 붙여 넣기로 해석되지 않습니다.


16
참고로 Vi를 사용하는 주된 이유는 Vim이 설치되어 있지 않기 때문입니다. Vim을 설치했다면, 대신 사용하는 것이 좋습니다. Vi는 모든 Unix 설치에 이미 존재한다는 것 외에는 실제로 Vi의 이점이 없습니다. 내 의견으로는 Vim을 배우는 가장 좋은 방법은 터미널 에뮬레이터를 열고 (Vim이 아닌) 입력 vimtutor하는 것입니다. 약 45 분 안에 사용할 수있는 곳으로 빠르게 이동할 수 있습니다.
벤 Mordecai

1
+1 @BenMordecai-편리한 서브 쉘 기능을 포함하여 vi (오래된 것부터)에 대해 잘 알고 있었지만 새로 고침해야했습니다. 약간의 과외. 바람처럼 그것을 통해 갔다. 감사.
Cbhihe

답변:


192

먼저 편집 모드에 있는지 확인하십시오 (을 누르십시오 i). 그런 다음 과 같은 터미널 에뮬레이터에 있다면 Ctrl+ Shift+로 붙여 넣을 수 있습니다 (또는 오른쪽 클릭 메뉴에서 "붙여 넣기"를 선택하십시오).Vgnome-terminal

:set paste붙여 넣기 전에 vim 을 입력 하여 자동 들여 쓰기 등을 비활성화 할 수도 있습니다 . 그런 다음 :set nopaste내용을 붙여 넣은 후.

자세한 내용은 stackoverflow.com 에서이 질문 을 확인 하십시오.

vim클립 보드 내용을 붙여 넣는 대신 선을 복사 / 붙여 넣기하려면 yank 명령 을 확인하십시오 . 여기 도움이 될만한 치트 시트 가 있습니다.


1
마우스 커서가 켜져 있으면 Ctrl + Shift + V를 사용하여 붙여 넣을 수 없습니다.
Alvin Wong

14
참고로, I대소 문자를 구분합니다. 소문자 i는 삽입 모드로 들어가는 일반적인 방법입니다. 대문자 I는 커서를 줄의 시작 부분으로 가져온 다음 삽입 모드로 들어갑니다.
벤 Mordecai

64

Vi (및 Vim)는 Gedit와 같은 일반 텍스트 편집기와 매우 다르게 작동합니다. 또한 꽤 가파른 학습 곡선이 있습니다. 몇 가지 기본 명령을 배우려면 이 대화식 자습서로 시작 하십시오 .

그러나 질문에 대답합니다. 시스템 클립 보드의 내용은 플러스 레지스터를 통해 액세스 할 수 있습니다. 따라서 시스템 클립 보드에서 무언가를 붙여 넣으려면 일반 모드에서 다음을 누릅니다 "+p(동시가 아니라 차례로).


3
이것은 내가 지금까지 몰랐던 것입니다. 또한, 또 다른 멋진 vim 튜토리얼을 연결하기 위해 +1.
Attila O.

19
편집자 학습 곡선에 대해서는 "일부 편집자에 대한 고전 학습 곡선"( blog.thilelli.net/public/store/attached/curves.jpg)이 있습니다.
hlovdal

그놈 터미널에서 복사 및 붙여 넣기 바로 가기는 각각 Ctrl-Shift-C 및 Ctrl-Shift-V입니다.
Flimm 2013

1
<kbd> "</ kbd>, <kbd> + </ kbd> 및 <kbd> p </ kbd>, <kbd>"</ kbd> 및 <kbd> p < / kbd> 아무 일도 일어나지 않았습니다. 내가 뭘 잘못 했니? 난 사용 vi하지 않습니다vim
user907860

1
정답입니다. 예를 들어. Ctrl-Shift-v는 가장 간단한 내용으로 만 작동합니다 (터미널에 있으면 줄 바꿈 및 들여 쓰기가 실제로 잘못 될 수 있으며 사용을 잊어 버렸습니다 set :paste).
rsenna

29
  1. 같은 파일 내에서 붙여 넣기 내용을 복사 하려면 yank및을 사용하십시오 paste.

  2. 터미널 전체에 붙여 넣기 내용을 복사 하려면 첫 번째 파일을 열고 원하는 텍스트를 가져간 다음 vim (예 :) 내에서 두 번째 파일을 열고을 :tabnew /path/to/second/file눌러 p붙여 넣습니다.

  3. 붙여 넣기 내용 을 vim에서 외부 프로그램으로 복사하려면 시스템 클립 보드에 액세스해야합니다. 우분투를 사용한다고 가정합니다. vim의 GUI 버전은 항상 클립 보드를 지원하지만 터미널에서 Vim을 사용하려면 X11 클립 보드 지원을 확인해야합니다.

    콘솔에서 다음을 입력하십시오.

    $ vim --version | grep xterm
    

    -xterm_clipboard 를 찾으면 두 가지 옵션이 있습니다.

    1) xterm_clipboard 플래그를 켜고 vim을 컴파일하십시오.

    2) vim을 제거하고 대신 gvim (vim-gtk 또는 vim-gnome)을 설치하십시오. 이전과 같은 방법으로 터미널에서 vim을 호출하여 GUI가 아닌 vim을 고수 할 수 있습니다. 이번에는 + xterm_clipborad 를 확인해야합니다 .

    이제 vim 편집기 내부의 + 레지스터에서 일부 텍스트를 잡아 당기면 (예 : "+ yy) 시스템 클립 보드에 복사되어 Ctrl+ 를 사용하여 gedit 편집기와 같은 외부 프로그램에서 검색 할 수 있습니다 V.

  4. 외부 프로그램에서 vim으로 붙여 넣기 내용을 복사하려면 먼저 Ctrl+ 를 통해 텍스트를 시스템 클립 보드에 복사 C한 다음 vim 편집기 삽입 모드 에서 마우스 가운데 버튼 (일반적으로 휠)을 클릭하거나 Ctrl+ Shift+ V를 눌러 붙여 넣으십시오.

    vim과 관련된 4 가지 기본 복사 및 붙여 넣기 조건입니다. 이게 도움이 되길 바란다.


요점은 무엇입니까 : tabnew / path / to / second / file? : vi / path / to / second / file로 두 번째 파일을 열고 붙여 넣기 (p / P)하여 첫 번째 파일에서 정확히 똑딱 거리거나 복사 / 잘라내기를 수행 할 수 있습니다. 적어도 내 경우에는 ... 아니면 + xterm_clipboard vim 기능이 활성화되어 있습니까? 아니면 그보다 더 새로운 것이 있습니까?
Cbhihe

1
우분투 vim-gtk에서 xterm_clipboard지원하고 Fedora에서 지원 xvim합니다.
icc97 2016 년

18

터미널에 텍스트를 붙여 넣으려면 항상 Shift+를 사용 Insert하고 모든 터미널 프로그램에서 작동합니다.

(또한 Insert보조 키를 누르지 않고는 누를 수없는 랩톱을 얻지 못하는 이유도 있습니다 )


2
Vi/ Vim! = 터미널;)
0xC0000022L

1
알았어,하지만 여전히 작동 :)
Magnus Jonsson

이 +1 .. 당신은 무엇을 말 수행하는 데 사용합니까 Ctrl+A, Ctrl+C도?
Arup Rakshit

DE 내부에서 터미널을 사용하는 경우 일반적으로 마우스로 텍스트를 선택하고 Ctrl + Shift + C로 복사하면됩니다.
Magnus Jonsson

Shift + 삽입은 gvim에서도 작동합니다. (나는 그것이 차이가 나는 경우 우분투 13.10을 실행하고 있습니다.)
eksortso

10

마우스 가운데 버튼을 사용하여 다른 곳에 강조 표시 한 텍스트를 삽입하십시오.

시스템 클립 보드에 액세스 할 수없는 경우 (예 : 원격 SSH 세션)에 유용합니다.

Vim의 편집 / 삽입 모드에 있어야합니다.


6

vi에 들어가면을 눌러 i삽입 모드로 들어가 터미널을 마우스 오른쪽 버튼으로 클릭하고 붙여 넣기를 클릭하십시오.


나는 소문자라고 생각했다 i. 대문자 I는 무엇을합니까?
Flimm

@Flimm은 Ben Mordecai가 다른 답변에 대해 이미 설명했습니다.
sierrasdetandil

답변을 소문자로 편집했습니다 i. 대문자 I는 삽입 모드로 들어가기 전에 커서를 줄의 시작 부분으로 이동합니다 (여기서는 필요하지 않음).
Flimm

5

자세한 설명은 사용 VI에서 / 텍스트 붙여 넣기 라인을 복사 yank하고put

( vi 의 명령 모드 에서 다음을 사용하십시오 )

복사 (YANK)

vi에서 한 줄을 복사하려면 :

  • 명령 모드에서 커서를 복사해야 할 행으로 이동하고 유형 yy또는 유형Y

vi에서 두 줄을 복사하려면 :

  • 명령 모드에서 커서를 복사해야 할 첫 번째 행으로 이동하고 유형 2yy또는 유형2Y

(마찬가지로 여러 줄을 복사 할 수 있음)

현재 위치에서 파일 끝까지 모든 줄을 복사하려면

  • 명령 모드에서 커서를 복사해야 할 첫 번째 행으로 이동 한 후 다음을 입력하십시오. yG

현재 위치에서 현재 단어의 끝까지 모든 텍스트를 복사하려면 :

  • 명령 모드에서 커서를 텍스트를 복사해야하는 위치로 이동 한 후 다음을 입력하십시오. yw

현재 위치에서 줄 끝까지 모든 텍스트를 복사하려면 :

  • 명령 모드에서 커서를 텍스트를 복사해야하는 위치로 이동 한 후 다음을 입력하십시오. y$

붙여 넣기 (PUT)

클립 보드에 텍스트를 붙여 넣으려면 - 커서의 위치 :

  • 명령 모드에서 다음을 입력하십시오. p

커서 위치 전에 클립 보드에 텍스트를 붙여 넣으려면

  • 명령 모드에서 다음을 입력하십시오. P

1

Vim 설치가 클립 보드를 지원하지 않기 때문에 문제가있었습니다 .

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

vim-gnome (클립 보드를 지원하는)을 설치 한 후 다시 확인했습니다.

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

이제 "+ y 및"+ p를 각각 사용하여 복사하고 붙여 넣을 수 있습니다.


이것은 내 문제를 해결했습니다!
astrojuanlu

1

Linux 또는 Mac에서 Vim 8+를 사용하면 OS의 기본 붙여 넣기 ( ctrl+shift+VLinux, cmd+VMac)를 간단히 사용할 수 있습니다 . i삽입 모드를 누르지 마십시오 .

자동 들여 쓰기를 추가하지 않고 공백과 탭을 유지하면서 OS 클립 보드의 내용을 붙여 넣습니다. 그것은 이전에 해당의 :set paste, i, ctrl+shift+V, esc, :set nopaste방법.

더 이상 설치 +clipboard또는 +xterm_clipboardvim 기능이 필요하지 않습니다 . 이 기능을 "브래킷 붙여 넣기"라고합니다. 자세한 내용은 https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763을 참조 하십시오.


그것이 내가 찾고있는 대답입니다. Vim은 gnu / linux 배포판에서 기본값이 아니기 때문에 우분투에서도 설치해야합니다. 또한 Vi의 up down 버튼은 우분투에서 작동하지 않으며 강조 표시되지 않습니다.
itsnotmyrealname

0

루트 인 경우 : Ctrl+ Shift+V

루트아닌 경우 : 중앙을 마우스로 클릭하십시오.


0

Windows에서 Git Bash를 통해 Vim을 사용하면 p삽입 모드를 사용하지 않고 마우스를 사용 하거나 가운데 클릭 할 수 있습니다. PuTTY를 통해 Vim을 사용하면 마우스 오른쪽 버튼을 클릭하면됩니다. 그리고 강조 표시는 복사를 수행합니다.

나는 이것이 우분투의 SE라는 것을 보지 못했기 때문에 이것을 언급했습니다.

다른 유용한 명령들 :

  • yy(행 수)-yank (사본)
  • dd(행 수)-삭제
  • p -현재 줄 아래에 줄 붙여 넣기
  • Shift+ p-현재 줄 위에 줄 붙여 넣기
  • u - 실행 취소
  • r -재실행
  • i -삽입 모드
  • v -시각 모드

Windows Git Bash에서는 작동하지 않았습니다. 민트 또는 윈도우 cmd 중 어떤 콘솔을 사용하고 있습니까?
wisbucky

나는 그것이 민트라고 생각합니다.
타일러 크리스천

0

당신은 사용할 수 있습니다 Ctrl+ Shift+ V터미널 버전 정력에 붙여, 그러나 GUI 버전 정력을 위해 같은 Neovim-Qt시스템 클립 보드에서 붙여 넣기 텍스트로 Ctrl+ Shift+는 V단순히 작동하지 않습니다. 클립 보드 "+또는 "*vim 편집기에서 액세스해야합니다 .

새로운 키 바인딩을 추가 .vimrc하면 단순히 복사 / 붙여 넣기 명령이됩니다 :

" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.