vim으로 코드를 복사할 때 생기는 계단 현상 없애기

putty와 같은 SSH Client를 통해서 서버에 접속해서 작업을 한다. 이러저러한 이유로 인해서 editplus와 같은 윈도우 어플리케이션에서 작업하던 코드를 vim으로 붙여 넣기를 해야 할 때가 있다.

image
▲ Windows 어플리케이션에서 작업하던 원문 코드

 

이 내용을 vim에서 i를 눌러 편집 모드로 전환을 한 후, 마우스 오른쪽 클릭으로 붙여 넣기를 하면 예상과는 달리 계단현상이 발생하는 경우가 있다. 이 것이 프로그래밍 코드일 경우 그 정도가 심각하다.

image 
▲ 계단 현상 발생

 

이러한 계단현상의 원인은 .vimrc 에서 들여쓰기에 관련된  autoindent, smartindent 설정이 동작했기 때문이다. 그러므로 윈도우에서 vim으로 코드와 같은 내용을 복사 해 올 땐

:set paste

를 입력을 해 들여쓰기 기능을 끈 후, 붙여넣기를 해야한다. 이 명령을 수행하면 아래와 같은 효과가 있다.

입력 모드와 명령행 모드에서 Mapping 비활성
Abbreviation(약어) 명령 비활성
'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'  is nothing to input

비활성화 되지는 속성값은 유지되는 항목
cindent
indentexpr
lisp

:set paste를 입력하여 자동 들여쓰기 기능을 끈다. 그리고 i 를 눌러서 입력 모드로 전환을 한 후, 마우스 오른쪽 버튼을 눌러서 붙여넣기를 한다. 정상적으로 붙여넣기가 된 것을 확인할 수 있을 것이다. 그런후 다시 자동 들여쓰기 기능을 켠다.

:set nopaste ( 기능 요소에 no를 붙이면 요소를 끄는 명령이 된다 )

또는

:set paste!  ( !는 토글 기호. 켜고 끌수 있다. )

현재 설정된 vim 환경값은 아래와 같은 명령으로 확인할 수 있다.

:set all

image