Vim 복사 붙 여 넣 기 비밀 탐지

전송: http://www.worldhello.net/2010/12/08/2190.html
Vim 은 가장 좋 은 텍스트 편집기 중 하나 로 서 vim 을 사용 하여 문 서 를 작성 하고 코드 를 쓰 는 것 은 정말 즐 거 운 일이 다.vim 의 새로운 기능 을 배 울 때마다 업무 효율 을 크게 향상 시킨다.어떤 사람 이 vim 를 몇 십 년 동안 사 용 했 지만 아직 vim 의 기능 을 완전히 파악 하지 못 한 것 은 vim 의 강 함 을 설명 한다.이렇게 하 는 것 이 어찌 좋 은 일이 아니 겠 는가,공부 만 하면 향상 되 는 것 이다.최근 에는 Vim 을 이용 해 블 로 그 를 썼 는데,Vim 에 Python 코드 를 붙 인 후 들 여 쓰기 가 엉망 이 된 것 을 발견 했다.다음 과 같은 것 을 자세히 연 구 했 는데 원래 자동 으로 들 어가 기 때문에 다음 과 같은 설정 을 했다.
:set noai nosi
자동 들 여 쓰기 와 스마트 들 여 쓰 기 를 취소 하면 붙 여 넣 기 가 틀 리 지 않 습 니 다.그러나 어떤 vim 에 서 는 안 되 고 조판 이 어 지 럽 습 니 다.나중에 더 좋 은 설정 을 발 견 했 습 니 다.
:set paste
paste 모드 에 들 어간 후 삽입 모드 에서 내용 을 붙 일 수 있 으 며 변형 되 지 않 습 니 다.이것 은 정말 쓸모 가 없어 서 자기도 모 르 게 도움 을 보 았 는데,그것 이 이렇게 많은 일 을 한 것 을 발견 하 였 다.
  • textwidth 를 0
  • 으로 설정
  • wrapmargin 을 0
  • 으로 설정 합 니 다.
  • set noai
  • set nosi
  • soft tabstop 설정 0
  • revins 초기 화
  • 눈금 자 초기 화
  • showmatch 초기 화
  • formatpoptions 빈 값 사용
  • 다음 옵션 값 은 변 하지 않 지만 사용 하지 않 습 니 다:
  • lisp
  • indentexpr
  • cindent

  • 어쩐지 전에 noai 와 nosi 만 설정 하면 안 되 더 라 니,이렇게 많은 요소 와 관련 이 있 었 구나!그래도 귀 찮 습 니 다.붙 일 때마다 set paste 를 먼저 붙 인 다음 에 set nopaste 를 붙 입 니 다.더 편 한 거 없 나 요?너 는 아마 생각 했 을 것 이다.키보드 로 비 추 는 거 야,맞 아.우 리 는 이렇게 설정 할 수 있다.:
    :map <F10> :set paste<CR>
    :map <F11> :set nopaste<CR>
    이렇게 붙 여 넣 기 전에 F10 키 를 누 르 면 paste 모드 를 시작 하고 붙 여 넣 은 후 F11 을 누 르 면 paste 모드 를 취소 하면 됩 니 다.사실 paste 는 paste 스위치 를 전환 하 는 옵션 이 있 습 니 다.이것 이 바로 pastetoggle 입 니 다.이 를 통 해 단축 키 를 연결 하여 paste 모드 를 활성화/취소 할 수 있 습 니 다.예 를 들 어:
    :set pastetoggle=<F11>
    이렇게 하면 단축 키 의 점용 을 줄 이 고 사용 하기에 더욱 편리 하 다.그런데 이게 제일 편 한 건 가요?Vimer 들 의 효율 에 대한 추 구 는 끝 이 없다.더 좋 은 방법 이 있 습 니까?생각 했 겠 지만,vim 레지스터.네,vim 레지스터 를 사용 하 십시오."+p 붙 여 넣 으 면 됩 니 다.자동 들 여 쓰기,붙 여 넣 기 모드,직접 원문 전달 여 부 를 고려 할 필요 가 없습니다!:
    "+p
    vim 레지스터 를 말 하려 면 vim 파일 간 의 복사 붙 여 넣 기 부터 말 해 야 한다.Vim 에서 현재 줄 을 복사 하려 면 일반 모드 에서 yy 를 누 르 면 됩 니 다.붙 일 곳 에서 p 를 누 르 십시오.이것 은 vim 이 복사 내용 을 자신의 레지스터 에 저장 한 이유 이다.다른 곳 에서 yy 를 실행 하면 새로운 내용 은 원본 레지스터 의 내용 을 덮어 씁 니 다.원본 레지스터 의 내용 을 저장 하고 새로운 내용 을 추가 하려 면?이 때 는 yy 앞 에 라벨 을 추가 해 야 합 니 다.탭 은 작은 따옴표 로 시작 하여 탭 이름 을 따 릅 니 다.숫자 0-9 일 수도 있 고 26 글자 일 수도 있 습 니 다.그 다음 에 복사 작업 을 하면 복사 내용 을 이 탭 레지스터 에 저장 합 니 다.다음 명령 을 통 해 모든 레지스터 내용 을 표시 합 니 다:
    :reg
    그 중에서 두 개의 특수 한 레지스터 를 주의 하 십시오."*와"+.이 두 레지스터 는 시스템 과 연결 되 어 있 으 며 전자 관련 시스템 은 버퍼 를 선택 하고 후자 관련 시스템 은 클립보드 를 선택한다.그것들 을 통 해 다른 프로그램 과 데이터 교환 을 할 수 있다.
    비고:
    레지스터 목록 에'*또는'+레지스터 가 없 으 면 vim 의 그래 픽 인터페이스 가 설치 되 어 있 지 않 기 때 문 일 수 있 습 니 다.데 비 안/우 분투 에 서 는 vim-gnome 설치 로 해결 할 수 있 습 니 다.
    $ sudo apt-get install vim-gnome

    버퍼 와 시스템 클립보드 의 차이 점 을 선택 하 십시오.계속 연구 합 시다.
    버퍼 와 클립보드 를 선택 하 는 것 은 Windows 와 다 릅 니 다.Linux 시스템 에는 두 개의 클립보드 가 존재 합 니 다.하 나 는 버퍼(X11 selection buffer)라 고 하고 다른 하 나 는 클립보드(clipboard)입 니 다.버퍼 를 선택 하 는 것 은 실시 간 입 니 다.마우스 나 키 보드 를 사용 하여 내용 을 선택 할 때 내용 은 버퍼 를 선택 하 는 데 이미 존재 합 니 다.이것 은 버퍼 를 선택 하 는 유래 일 수도 있 습 니 다.다음 명령 을 사용 하여 버퍼 를 선택 한 내용 을 봅 니 다:
    $ xclip -out
    xclip 명령 이 없 으 면 데 비 안/우 분투 에서 다음 명령 을 통 해 설치 할 수 있 습 니 다.
    $ sudo apt-get install xclip
    마우스 가운데 단 추 를 누 르 거나 Shift+Insert 를 입력 하여 버퍼 를 선택 한 내용 을 붙 일 수 있 습 니 다.그러나 일부 GUI 프로그램,예 를 들 어 gedit 는 마우스 가운데 단 추 를 눌 러 서 만 버퍼 를 선택 할 수 있 습 니 다.Shift+Insert 를 사용 하면 클립보드 의 내용 을 호출 합 니 다.클립보드 가 윈도 의 클립보드 와 유사 합 니 다.텍스트 내용 을 선택 한 후 Ctrl+c 를 실행 하거나 메뉴 에서'복사'를 선택 하면 클립보드 에 내용 이 저 장 됩 니 다.다음 명령 으로 클립보드 내용 보기:
    $ xclip -out -sel clipboard
    클립보드 의 내용 은 Ctrl+v 입 니 다.그러나 어떤 경우,예 를 들 어 gnome-terminal 은 Ctrl+c,Ctrl+v 를 직접 사용 할 수 없습니다.이 때 는 Shift+Ctrl+c,Shift+Ctrl+v 로 대체 해 야 합 니 다.
    원본 형식 을 붙 여 넣 었 습 니 다.버퍼 와 클립보드 선택 을 알 게 되 었 습 니 다.다음은 형식 붙 여 넣 기 를 유지 하 는 완벽 한 해결 방안 입 니 다.
  • 방안 1:
  • 텍스트 내용 선택
  • vim 일반 모드 에서'*p'를 누 르 면 버퍼 에 있 는 내용 을 붙 여 넣 습 니 다
  • 방안 2:
  • 파일 내용 복사
  • vim 일반 모드 에서'+p'를 누 르 면 클립보드 내용 을 붙 여 넣 습 니 다
  • 이때 복사 할 내용 도 vim 편집기 의 내용 이 라면 어떻게 복사 하 는 것 이 더 편리 할 까?
    vim 의 복사 vim 에는 시각 모드(Visual Mode)가 있 습 니 다.이 모드 에서 영역 을 선택 할 수 있 습 니 다.일반 모드 에서 v 를 입력 하여 시각 모드 에 들 어 갈 수도 있 고 개성 화 된 점 을 입력 할 수도 있 습 니 다.V 를 입력 하여 시각 모드 에 들 어가 거나 Ctrl+v 를 입력 하여 시각 모드 에 들 어 갈 수도 있 습 니 다.이 때 커서 를 이동 하면 내용 을 선택 할 수 있 습 니 다.선택 한 내용 이 선택 한 버퍼 에 실시 간 으로 저장 되 었 음 을 주의 하 십시오.물론"+y"를 입력 하여 이 내용 도 클립보드 에 저장 하거나"ay 는 태그 가 a 인 레지스터 에 내용 을 저장 할 수 있 습 니 다.그러나 앞의 두 개의 내용 만 다른 프로그램 에서 사용 할 수 있 고 a 레지스터 의 내용 은 이 vim 편집기 에서 만 사용 할 수 있다 는 것 을 알 아야 한다.마우스 로 복사 할 수도 있다.우선 마우스 모드 를 켜 야 합 니 다.:
    :set mouse=a
    이렇게 하면 일반 모드 에서 마우스 선택 영역 을 선택 버퍼 로 복사 할 수 있 습 니 다.그러나 이 경우 클립보드 로 복사 할 수 없다.클립보드 에 마 우 스 를 사용 하여 내용 을 복사 하려 면 다음 과 같은 설정 을 해 야 합 니 다.
    :set mouse=v
    이 경우 위 와 같이 마우스 선택 영역 을 선택 버퍼 로 직접 복사 할 수 있 는 것 외 에 오른쪽 메뉴 에서'복사'를 선택 하여 클립보드 에 저장 할 수 있다.하지만 새로운 문제 가 또 나 왔 다.줄 번 호 를 표시 하면 줄 번 호 를 함께 선택 합 니 다.잘 되 겠 다.줄 번호 가 필요 하지 않 으 면 복사 하기 전에 set nonu 를 실행 하여 줄 번호 표 시 를 취소 하 는 것 이 좋 겠 다 고 생각 할 것 이다.사실 그 럴 필요 가 없습니다.줄 번 호 를 복사 할 필요 가 없다 면 시각 모드 에서 키보드 로 선택 하면 되 지 않 겠 습 니까?그리고 위의 토론 에서 우 리 는 버퍼 를 선택 하 는 것 이 클립보드 를 사용 하 는 것 보다 훨씬 편리 하고 많은 절 차 를 절약 할 수 있 습 니 다.그래서 결국 우 리 는 vim 파일 간 에 붙 여 넣 기 를 복사 하 는 완벽 한 방안 을 얻 었 고 파일 전송 의 중간 에 버퍼 를 선택 하 는 것 을 사용 했다.
    vim 파일 간 복사 붙 여 넣 기 완벽 한 방안
  • ~/.vimrc 에 다음 줄 을 추가 합 니 다:
    set mouse=v
  • 버퍼 를 선택 할 때 내용 을 복사 합 니 다.
  • 줄 번호 가 있 을 때 마 우 스 를 사용 하여 내용 영역 을 선택한다.
  • 줄 번 호 를 사용 하지 말고'*yny 복사 n 줄 또는 시각 모드 에서 선택 하 십시오.

  • 버퍼 의 내용 을 선택 하여 vim 파일 에 붙 여 넣 습 니 다.일반 모드 에서"*p"를 누 르 십시오.

  • 추가:vim 에서 기본적으로 선택 버퍼 레지스터 를 사용 합 니 다."*:
    set clipboard = unnamed
    는 Y,p 와 시스템 을 통 해 버퍼 를 선택 하여 데이터 교환 을 할 수 있다.

    좋은 웹페이지 즐겨찾기