두 개의 파일로 작업하고 있는데 한 파일에서 몇 줄을 복사하여 다른 파일에 붙여 넣어야합니다. 동일한 파일에서 복사 (yy) 및 붙여 넣기 (p) 방법을 알고 있습니다. 그러나 다른 파일에서는 작동하지 않습니다. 이것은 어떻게 이루어 집니까?
또한 잘라 붙여 넣기 방법이 있습니까? 인터넷 검색을 시도했지만 대부분의 리소스는 복사 붙여 넣기에 대해서만 이야기합니다.
두 개의 파일로 작업하고 있는데 한 파일에서 몇 줄을 복사하여 다른 파일에 붙여 넣어야합니다. 동일한 파일에서 복사 (yy) 및 붙여 넣기 (p) 방법을 알고 있습니다. 그러나 다른 파일에서는 작동하지 않습니다. 이것은 어떻게 이루어 집니까?
또한 잘라 붙여 넣기 방법이 있습니까? 인터넷 검색을 시도했지만 대부분의 리소스는 복사 붙여 넣기에 대해서만 이야기합니다.
답변:
텍스트를 자르거나 구르는 방법을 이미 알고 있으므로 다른 파일에 다시 붙여 넣을 때 몇 가지 아이디어가 있습니다.
:e /path/to/other/file
) 내에서 두 번째 파일을 열고 붙여 넣습니다.사용하여 그들 사이에 분할 창을 탐색 함께 두 파일을 열고 Ctrl+ w, Up/ Down중 하나에 의해를 :
vi -o /path/to/file1 /path/to/file2
Ctrl
+ w
, s
.
:sp myfile
가로로 나누고 지정된 파일을 여는 명령 을 보았지만 창을 세로로 나누려면 어떻게해야합니까?
Windows에서 Vim을 사용하는 경우 다음을 사용하여 클립 보드 (MS 복사 / 붙여 넣기)에 액세스 할 수 있습니다.
"*dd -줄을 자르십시오
"*yy -한 줄 복사 (또는 3 줄을 복사하려면 3yy)
"*p -커서 다음 줄에 줄 붙여 넣기
"*P -커서 앞에 줄에 줄 붙여 넣기
별도의 Vim 창 사이 또는 Vim과 PC 응용 프로그램 ( 메모장 , Microsoft Word 등) 사이에 붙여 넣을 수 있습니다 .
+
크로스 플랫폼 시스템 클립 보드 레지스터 (Windows 및 Linux) vs.로 사용하십시오 (Windows에서와 동일하게 작동 함 ). *
+
*
d
같은 dd
잘라내 기를 사용하십시오 .
다른 파일에 여러 줄을 쓰려면 다음을 사용할 수 있습니다.
:<n>,<m> w filename
위치 <n>
및 <m>
범위는 행 범위를 지정하는 숫자 (또는 기호)입니다.
데스크탑 클립 보드를 사용하려면 +g
명령을 살펴보십시오 .
ma
이동, 마지막 줄로 이동 mb
. 그런 다음 '
위 명령을 사용할 때 마크 문자 앞에 a 를 추가하십시오 .:'a,'b w filename
다른 파일을 열고을 입력 할 수 있습니다 :r file_to_be_copied_from
. 또는 버퍼링 할 수 있습니다. 또는 첫 번째 파일로 이동하여 복사하려는 줄로 "qY
이동하여을 입력 한 다음 붙여 넣으려는 파일로 이동하여을 입력하십시오 "qP
.
"
buffer_name, 버퍼에 복사합니다. Y
k하고 P
넣습니다. 희망이 도움이됩니다!
이를 수행하는 한 가지 방법이 있습니다.
두 파일을 모두 볼 수 있습니다. 예를 들어 Ctrl+로 화면을 분할하십시오 w s.
절단에 관해서는, d절단 된 재료를 절단 및 완충 버퍼에 놓는다. dd줄을 "잘라낼 것"입니다.
이것들은 모두 좋은 제안이지만 다른 파일에서 텍스트의 위치를 알고 있다면 sed를 쉽게 사용하십시오. :r! sed -n '1,10 p' < input_file.txt
커서의 현재 위치에서 이미 열려있는 파일에 10 줄이 삽입됩니다.
:r ! head -n2 file.py
2017-05 업데이트 :
vimrc 파일에 다음 줄을 추가하면
클립 보드 설정 = 이름 없음
Vim이 시스템 클립 보드를 사용하고 있습니다.
방금 다른 Vim 인스턴스 창 사이에서 내용을 복사하는 방식에서 yank 방식이 작동하지 않는다는 것을 알았습니다. (적어도 Vim 지식을 기반으로 작동하지 않습니다. 다른 방법으로 작동하는지 알 수 없습니다).
yank 방식은 내 테스트에 따라 동일한 창에서 여러 파일을 여는 방식에서만 작동합니다.
그렇게하려면 Ctrl+ x, Ctrl+ c(Windows에서) 와 같은 OS cut-copy-past 방식을 사용하는 것이 좋습니다 .
이 리맵은 저에게 매력처럼 작동합니다.
vmap <C-c> "*y " Yank current selection into system clipboard
nmap <C-c> "*Y " Yank current line into system clipboard (if nothing is selected)
nmap <C-v> "*p " Paste from system clipboard
따라서 시각 모드에있을 때 원하는 줄을 선택하고 Ctrl+ c를 누른 다음 Ctrl+ v를 눌러 수신기 파일에 텍스트를 삽입합니다. "* y도 사용할 수 있지만 가끔 기억하기 어렵다고 생각합니다.
Vim에서 클립 보드로 텍스트를 복사 할 때도 유용합니다.
동일한 Vim 인스턴스에서 열린 두 버퍼 (== 파일)간에 텍스트를 복사해도 문제가 없습니다.
y( 버퍼 모드를 이전에 가시 모드로 표시 한 것으로 가정)를 사용하여 하나의 버퍼에 간단히 적신 다음을 사용하여 다른 버퍼에 붙여 넣습니다 p. Vim의 동일한 인스턴스에있는 한 다른 탭에서도 작동합니다.
동일한 Vim 인스턴스에서 두 파일을 여는 방법은 시스템에 따라 다릅니다.
vim file1 file2
--remote-silent
모든 파일이 동일한 인스턴스에서 열리도록 옵션을 지정하십시오.첫 번째 빔 인스턴스에 사용하여 시스템 클립 보드에 텍스트를 꺼낼 : 당신은 빔의 두 가지 경우에 두 개의 파일을 열 경우, 당신은 시스템 클립 보드 가야 "+y
, 다시 (전에 비주얼 모드에 빠지게 할 영역을 표시 ) 그런 다음 두 번째 Vim으로 이동하여 클립 보드를 붙여 넣습니다 "+p
.
추신:
아래 옵션은 대부분의 시간과 나중에 붙여 넣기에도 사용됩니다.
"xnyy
x - buffer name
n - number of line to Yank - optional
줄 바꿈 된 행은 버퍼에 저장됩니다 'x'
. 편집의 어느 곳에서나 사용할 수 있습니다.
다른 파일에 줄을 붙여 넣으려면
:e filename&location
예 : 현재 편집에 아래 명령을 입력하십시오
:e /u/test/Test2.sh
and paste using "xP
P - before cursor
p - after cursor
완전한 작업
파일 열기 1 :
vi Test1.sh
a10yy
-Yanked 10 lines
-현재 편집에서 두 번째 파일을 엽니 다
*:e /u/test/Test2.sh*
붙여 넣을 줄로 커서를 이동하십시오.
*"ap*
-버퍼의 라인 '*a*'
은 현재 커서 위치 후에 복사됩니다
파일의 일부를 복사하여 다른 파일의 중간에 해당 내용을 붙여 넣으려면이 방법을 사용할 수 있습니다.
:linenumber,linenumber write newfile
예:
:2,34 write temp1
또는
:'mark, 'mark write newfile
예:
:'a,'b write temp1
이제 행이 다른 파일로 복사됩니다. 복사 후 해당 줄을 삭제하려면 할 수 있습니다
:linenumber1,linenumber2 d
또는
:'mark1,'mark2 d
이제 다른 파일로 이동하십시오. 그런 다음 붙여 넣을 줄에 커서를 놓습니다.
유형
:r!cat temp1
이제 임시 파일의 내용을 여기에 붙여 넣습니다. 내용을 붙여 넣은 후 명령 줄 자체에서 임시 파일을 삭제할 수 있습니다.
:!rm temp1
여러 번 복사하여 붙여 넣으려는 경우 도움이됩니다.