아마 대부분 이 글을 보는 분들은 하나의 terminal에서 vi (vim) 작업을 하고 있고 다른 terminal을 켜서 vi 로 새로운 파일을 만들고 거기에 복사하는 방법을 찾고 계실 것입니다. 편의상 vim 을 vi 이라고 하겠습니다.
저의 결론부터 말씀드리자면 마우스를 이용한 copy & paste 이외에는 방법이 없습니다.. (아직까지는!!!믿으세요 괜히 더 고생하지마시고요...)
맨 밑에서 그 이유를 말씀드리겠는데요. 지금은 이유야 어찌됐든 그 대안이 필요합니다.
그래서 그 대안이 뭐냐? sp 입니다.
<요약> 현재 vi 에서 :sp ./filename ->현재 폴더에서 filename을 분할 창에서 연다 ->ctrl +ww 눌러 본래 창으로 커서를 옮긴다. ->커서를 복사할 내용 첫 머리에 놓는다. 그리고 명령모드에서 다음을 입력한다. :ma ->이제 복사할내용의 끝머리에 커서를 놓는다. :"+y'a -> 마크한 라인부터 마지막 라인까지 + 레지스터에 복사한다.(표시한 곳부터) :ctrl+ww -> 분할 창 화면 중 다른 화면으로 커서가 넘어간다. :p -> 붙여넣기가 되죠! :wq! -> 저장 후 강제 종료 다른 터미널에서 $vi ./filename 하면 확인할 수 있습니다. |
<설명>
편의상 작업중인 파일을 src(일부 복사 예정), 앞으로 붙여넣을 위치에 있는 파일을 dest라 합시다.
src 파일을 vi로 열고 우선 명령모드로 가셔서 다음을 입력합니다.(esc 누르면 명령모드, i 누르면 입력모드)
: sp dest
또는
: sp /home/user/somwhere/dest
그러면 화면이 분할되며 그곳에서 dest라는 파일이 열립니다. (참고로 이미 있는 파일도 열 수 있습니다.)
다른 창으로 커서를 옮기려면 ctrl+ww 를 누르면 됩니다.
이제 복사할 차례입니다.
src로 와서 복사할 내용의 첫 머리에 커서를 놓고 명령모드로 갑니다. 그리고 다음을 입력합니다.
(마우스 말고 키보드로 커서를 놓으십쇼.)
ma
그러면 현재 커서 위치에서 mark 를 줍니다. (표시해놓는거죠)
다음 복사할 내용의 끝에 커서를 놓고 명령모드로 가서 다음을 입력합니다.
"+y'a
쌍따옴표더하기y엔터키옆따옴표a
그러면 + register 에 마크되어있는 지점부터 현재까지 모두 복사가됩니다.
ctrl+ww 로 dest로 넘어와서 (커서가 넘어오는 것을 확인하세요.)
명령모드에서
p
를 누르면
복사가 끝납니다.
그나마 가장 편한 방법입니다!
<도대체 왜 불가능한가?>
그 이유는 다음의 구조를 보시죠.
우선 ubuntu 를 쓰고 있다는 가정하에 두개의 터미널에서 우리는 vi 작업을 하고 있다고 합시다.
중앙 terminal은 이런저런 명령어를 수행해본 터미널입니다. 무시해주세요.
그 구조는 다음과 같겠네요.
그리고 우리는 그 터미널을 가상의 terminal1, terminal2라고 합시다.
대략적으로 vi 와 terminal 그리고 Xwindow는 아래와 같은 구조를 이루겠죠?
[tree1]
Xwindow (그냥 GUI 에 대한 적당한 명칭을 몰라서 이렇게 쓰겠습니다.)
├ XXX -terminal1 - vi 1
└ XXX -terminal2 - vi 2
정말로 이렇게 되어있는지 확인해 봅시다.
오호 vim 확인했습니다. 부모프로세스를 확인해보죠.
아니 그런데 terminal1 과 terminal2 는 bash의 자식 프로세스네요. 그런데 다른 pid를 갖고 있습니다.!!!!
그러나 bash 각각의 부모프로세스는 2702로 같네요?
그게 뭘까요?
gnome-terminal 이네요
[tree1]을 정리하면 다음과 같겠네요.
gnome-terminal
├ bash1 - vim1
└ bash2 - vim2
이걸 왜 설명했냐하면 복사를 하기위해선 자료를 공유해야합니다. 하다못해 buffer 같은 것들을요.
부모 프로세스와 자식프로세스는 자원을 공유할 수 있다고 알려져 있습니다. 2018.10.
fork 이용하여 공유 한다고는 합니다.
부모와 손자프로세스는 자원 공유를 위해선 뭔가 필요할 거고. 그 기능을 넣지 않는 이상, 당장은 공유될 수는 없어 보입니다.
(향후에 vi 소스를 수정하면 copy &paste가 가능할 것도 같네요. 소스를 받아야겠어요.)
이상입니다.
'정리 > IT공부' 카테고리의 다른 글
우분투 리눅스 패키지를 공식적으로 소개하는 페이지 (0) | 2015.10.05 |
---|---|
코딩 규칙에 대한 글을 읽고 찾은 몇가지 사이트다 (0) | 2015.10.05 |
linux eclipse 같은 어플 버전별로 프로젝트에서 관리 (0) | 2015.09.29 |
ubuntu vi 전체 유저 설정 방법 (0) | 2015.09.19 |
빠르게! 노트북 스마트폰과 연결시 USB 연결 끊김 현상 해결하기 (0) | 2015.09.17 |