행복아울렛

[vim] vim으로 붙여넣기 했을 때 계단현상 없애기! 본문

vim

[vim] vim으로 붙여넣기 했을 때 계단현상 없애기!

붕탱구 2007. 5. 22. 23:02

vim [set paste]

vim 에다가 소스 코드를 붙여넣기를 할 때면 생기는 계단 현상같은 것이 있습니다. 예를 들면 아래와 같은 식이죠.  그냥 붙여넣기를 했을 뿐인데, 이거 왜이러지? 하면서 한줄씩 한줄씩 새로 들여쓰기를 조정합니다. 살짝 짜증이 밀려옵니다. 이번엔 200줄짜리 함수입니다. 아 놔 이거 환장하겠네. 소스가 2~30000라인이라면.. 여간 죽을 맛입니다. 에이~ 이거 드러워서 안 써! vim 좋다드니만 이거 메모장보다 못하잖아!

이 계단 현상의 원인은 바로 아래의 리스트가 원인입니다. vim 에서 아래의 옵션들이 셋팅이 되어서 프로그래밍을 편하게 해주는데 이 옵션들이 붙여넣기 할 때 활성화가 되어서 생기는 현상입니다.

이 계단현상은 저처럼 터미널 프로그램을 이용해서 서버에 접속해서 vim을 사용하는 경우에만 발생합니다.  윈도우용 vim이나 X윈도우 상에서의 vim같은 GUI용 vim에서는 클립보드에 있는 것을 붙여넣기 하는 것과 입력모드에서 키보드로 입력하는 것을 확인할 방법이 있기 때문에 발생하지 않습니다.

이를 해결하기 위해서는 아주 간단합니다. 바로 set paste라고 ex mode에서 쳐주는 것이죠.
set paste라고 치게 되면 vim 에서는 아래와 같은 액션이 취해집니다.

  • 입력 모드와 명령행모드에서의 mapping 비활성
  • abbr 명령 비활성
  • 'textwidth' is set to 0
  • 'wrapmargin' is set to 0
  • 'autoindent' is reset
  • 'smartindent' is reset
  • 'softtabstop' is set to 0
  • 'revins' is reset
  • 'ruler' is reset
  • 'showmatch' is reset
  • 'formatoptions' 에 아무것도 입력안하기

다음의 속성은 값은 유지되지만, 비활성됩니다.

  • 'lisp'
  • 'indentexpr'
  • 'cindent'
계단현상
vim
set paste 입력 시

명령입력시
붙여넣기 시

set paste 후에 paste하기!

다시 입력 모드로 코딩 추가 및 삭제 시에는 자동으로 indent될 수 있도록 set paste!로 입력 하시면 다시 되돌아 갑니다. paste뒤에 방망이 마크'!'를 유의해서 보십시요. 이 방망이 마크('!')는 Toggle의 의미입니다. 예를 들어 라인번호를 출력해주는 옵션인 number가 있는데, 이를 활성 비활성 하기 위해서는 set number!라고 치시면 됩니다. 그럼 라인번호가 붙었다가 안붙었다가 막 이래됩니다~~

그럼 paste옵션으로 짬뽕없는 vim생활하시길 바랍니다!

참고 :help paste
Comments