vim에 붙여 넣기 속도를 높일 수 있습니까?


12

웹 페이지에서 HTML의 일부를 복사하여 파일로 저장하려고했습니다. 이를 위해 명령 vim 창에 (새) 파일 이름을 지정하여 터미널 창에서 새 세션을 시작하고 i삽입 모드로 이동 한 다음 CtrlShift+를 V누르고 [-- INSERT --]맨 아래에 표시된 동안 기다렸다가 ...

으로는 vim내가 순식간 나타났다 텍스트를 (붙여 넣기 Accessoiries 메뉴 → 응용 프로그램에서 '텍스트 편집기'를 열어 새 이름으로 저장, 폐쇄, 그리고 빔 세션이 사망, 몇 초 후 무응답이었다 1.5 분 후에도 여전히 텍스트의 양은 3200 줄로 186K 였고, 너무 말하지 않았고, 너무 긴 줄도 아니 었습니다.

이러한 종류의 삽입 속도를 높이는 방법 vim이 있습니까? 아니면 끔찍하고 마우스 지향적 인 텍스트 편집기를 사용하는 것보다 왜 느린 지 설명이 있습니까?

( top시스템에 사용 가능한 일부 프로세서가 있지만 파일에 동일한 텍스트를 읽을 때 존재하지 않는 일부 I / O 바운드 문제 일 수 있지만 % CPU 는 5 %를 넘지 않습니다)

버전 정보 :
Ubuntu 12.04
Vim : 7.3, Ubuntu 12.04
bash에서 제공 한 패치 포함 : 4.2.25
gnome-terminal : 3.4.1.1


1
나는 그것이 b / c 느리고 입력을 구문 분석하고 형식을 지정해야한다고 생각합니다.이 옵션은 확실하지 않지만 w / in 기능을 일시적으로 비활성화 vim하고 붙여 넣기를 수행 할 수 있다고 가정합니다 다시 활성화하십시오. 또한 :set paste기능을 사용하여 기능이 향상되는지 확인하십시오. 보기 :help paste는 방법에 대해 설명 vim입력 및 붙여 넣기 / W 구분 B를하지 않습니다.
slm

내가 기대하는 것 vi뿐만 아니라, (l0b0 제안 @ 방법을 저장 한 후)에서 읽을 때 파일을 구문 분석을 시도 할 수 있습니다. 그러나 그것은 빨리 작동합니다.
Anthon

사실, 나는 이미 파싱 된 모든 것을 다시 파싱해야한다는 것을 상상하고 있습니다. 붙여 넣을 때 새로운 캐릭터. 파일을 편집 할 때도 어느 정도 진행되고있는 것 같습니다.
slm

:set paste정말 변화를하지 않는 것 (I 스톱워치, 바로 벽에 시계를 사용하고 있지 않다).
Anthon

좋아, 그냥 생각했다 ...
slm

답변:


14

많은 클립 보드 텍스트를 파일에 빠르게 저장하려면을 실행 cat > file.txt하고 내용을 붙여 넣은 다음 Ctrl- 를 누릅니다 d.

xsel을 설치 한 경우 :r !xselVim에 "기본"(일명 "마우스") 선택 항목 :r !xsel -b을 삽입하거나 "클립 보드"( Ctrl- c) 버퍼 를 삽입 할 수 있습니다. 또한이있는 파일을 직접 선택을 저장할 수 있습니다 xsel >file.txt또는 xsel -b >file.txt. 따라서 별도의 붙여 넣기 + EOF 작업이 필요 없으며 터미널에서 전체 복사 버퍼를 인쇄하지 않아도됩니다.

xsel 외에 xclip이없는 경우 해당 명령은 xclip -out기본 선택 또는 xclip -out -selection clipboard클립 보드 버퍼 용입니다.


1
고마워, 적어도 마우스로 되돌릴 필요없이 작동하고 파일을 vim에 삽입하는 것 (예 : 빈 파일로 시작하지 않을 때)은 충분히 빠릅니다.
Anthon

왜 이것이 ctrl + shift + v에 바인딩 될 수 없는지 이해하지 못합니다.이 모든 것이 전혀 의미가 없습니다.
mchid

2

이것은 버퍼 디스크 비우기 문제입니다. Vim은 작업을 안전하게 유지하려고 시도하며 초당 수천 문자를 입력 할 수 있다고 가정하지 않습니다. :help swap-file버퍼링에 대한 자세한 내용을 읽으십시오 . 문제의 해결책은 다음과 같습니다.

다음과 같이 vim의 스왑 파일을 끄십시오.

vim -n <your file>

또는 페이스트 전에 vim 내에서 :

:set noswapfile

자세한 내용 :help swapfile은 참조하십시오.

또 다른 옵션은 스왑 파일의 디스크와의 동기화를 단순히 끄는 것입니다. :set swapsync=그러나이 옵션을 실행 취소하려면 더 많은 키를 입력해야하는데 게으르다. :)

스왑을 끄는 것은 정상적인 작동에는 안전하지 않습니다! 붙여 넣기 직후에을 사용 :set swapfile하거나 :set swapsync=fsync정상적인 동작으로 되 돌리십시오 (기술적으로는 정상적인 동작이 동기화 되었고 fsync가 아닌 것일 수 있으므로이:set swapsync? 경로로 이동하려면 미리 확인하십시오 ).


1
이것은 나를 위해 속도를 내지 않았다 ...
elig

1

xterm_clipboard기능이 있으면 *+레지스터를 사용할 수 있습니다 . 이 레지스터는 X11 기본 선택 버퍼 및 클립 보드 (각각)와 인터페이스합니다.

따라서 CTRL+ 를 통해 무언가를 복사 한 c경우을 사용하여 vim에 붙여 넣을 수 있습니다 "+p.

복사하지 않고 강조 표시 한 경우을 붙여 넣을 수 있습니다 "*p. 을 수행
하여 *버퍼를 기본 버퍼로 만들 수도 있습니다 :set clipboard=unnamed. 그런 다음 레지스터를 지정하지 않은 yank ( y), paste ( p) 등은 레지스터를 사용합니다 *. Vim 7.3.74도 추가 되었으며 기본적으로 레지스터를 clipboard=unnamedplus사용합니다 +.

예를 들어 yanking하여 기본 선택 및 클립 보드 버퍼에 항목을 복사 할 수도 있습니다 "+yy.

 

언급했듯이 이러한 기능에는 모두 xterm_clipboard기능이 필요합니다 . :versionvim 내부 또는 vim --version셸 에서이 기능이 있는지 확인할 수 있습니다 +xterm_clipboard. 이 표시되어 있으면 -xterm_clipboard가지고 있지 않으며 vim을 다시 컴파일해야합니다.


그 기능이 없습니다. xterm에서 vim이 실행되고 있지 않더라도 재 컴파일 도움이 되겠습니까? (나는 그놈 터미널을 사용하고 있습니다).
Anthon

@Anthon GUI VIM을 사용하고 있다면 레지스터도 활성화되어 있다고 생각합니다. xterm_clipboard터미널에서 vim을 실행하는 경우에만 해당됩니다.
Patrick

이것은 GUI VIM이 아닌 텍스트 전용이지만에서 실행되지는 않습니다 xterm.
Anthon

오, 죄송합니다 예 xterm_clipboard는 xterm뿐만 아니라 모든 터미널 에뮬레이터에도 적용됩니다. 나 자신은 urxvt를 사용합니다.
Patrick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.