본문 바로가기
IT/LINUX

리눅스 vi(vim) 복사 붙여넣기 주석 자동으로 생기는 현상과 계단 현상

by SidePower 2021. 3. 15.

 

vi 편집기에서 가끔 많은 양을 다른 프로그램 source를

복사 붙여넣기 할때가 있습니다.

 

복사한 source 그대로 붙여넣기가 되지 않고 

모든 라인에 주석 ( // ) 이 생기기도 하고

또 모든 라인 앞에 탭 문자 들어가서 글자가 뒤로 계속 밀리면서

완전 엉망이 되는 현상이 있어 곤란했던 기억이 나네요. ^^;;

 

 

간단하게 정리해 봤습니다.

 

샘플 Source 원본

#include <stdio.h>

int main()
{
    int a = 1;

    printf("a = [%d]\n",a);

    //조건
    if(a==0 || a==1)
    {
        printf("a [%d]\n",a);
    }
    
    if(a==0)
    {
        printf("a [%d]\n",a);
    }

    return 0;
}

 

이상 현상 ①

auto indent . 계단 현상

 

#include <stdio.h>

int main()
{
    int a = 1;

        printf("a = [%d]\n",a);

            //조건
                if(a==0 || a==1)
                    {
                        printf("a [%d]\n",a);
                            }
    
                                if(a==0)
                                    {
                                         printf("a [%d]\n",a);
                                             }

                                                 return 0;
                                                      }

 

이상 현상 

주석 // 밑으로 자동으로 생성되는 현상

 

#include <stdio.h>

int main()
{
    int a = 1;

    printf("a = [%d]\n",a);

    //조건
    //if(a==0 || a==1)
    //{
    //    printf("a [%d]\n",a);
    //}
    //
    //if(a==0)
    //{
    //    printf("a [%d]\n",a);
    //}
    //
    //return 0;
//}

 

이상 현상 ③ 

auto indent와 주석 // 자동 생성 동시 발생

 

#include <stdio.h>

int main()
{
    int a = 1;

    printf("a = [%d]\n",a);

    //조건
    //    ff(a==0 || a==1)
    //       {
    //           printf("a [%d]\n",a);
    //               } 
    //
    //                    ff(a==0)
    //                          {
    //                               printf("a [%d]\n",a);
    //                                    }
    //
    //                                          return 0;
    //                                          } 

 

 해결 방법 

vi(vim)을 paste mode 를 지정하면 됩니다.

간단하죠. ^^

 

vi 파일명 명령어로 vi editer를 실행합니다.

Esc + :  명령어로 Command Mode로 전환합니다.

set paste  명령어를 paste mode로 설정하세요.

그리고 다시 source를 복사 붙여넣기 하시면 원본 그대로 붙여넣기가 됩니다.


:set paste


#include <stdio.h>

int main()
{
    int a = 1;

    printf("a = [%d]\n",a);

    //조건
    if(a==0 || a==1)
    {
        printf("a [%d]\n",a);
    }
    
    if(a==0)
    {
        printf("a [%d]\n",a);
    }

    return 0;
}

 

감사합니다.

반응형

댓글