Medium - 8 Vim Tricks That Will Take You From Beginner to Expert

원문 - Tyler Lum

Trend 파악을 Medium 기고문 요약 포스팅 - 초보자를 벗어나 전문가가 되게 해줄 8가지 Vim 기법

Introduction

Vim은 단순한 편집기 입니다. 그러나 vim을 능숙하게 다루는 사람을 본적이 있다면 얼마나 강력하고 효율적이고 빠른지 아실겁니다. vim을 잘 다루기만 한다면 텍스트를 편집할 때 가장 깔끔하게 작업을 수행할 수 있는 도구가 될 것입니다. 한번 vim의 언어에 익숙해지면 여러분의 컴퓨터와 더욱 빠른 속도로 커뮤니케이션 하실 수 있을겁니다.

Prerequisites

이 기사에서는 저는 여러분이 최소한 기본적인 vim 명령어는 알고 있다고 기대합니다. 이동이나 삽입, 검색 같은 것은 이미 알고 있다고 하는 것이죠. 아직 이런 것들을 모른다면 터미널을 켜서 다음의 명령어를 실행하세요.

sudo apt-get install vim

그리고 나서 다음을 실행해서 튜토리얼을 살펴보세요

vimtutor

1.Macros

여러분이 텍스트 수정작업을 반복적으로 하는 것은 유쾌한 일이 아닐겁니다. 게다가 그런 작업을 수십 번이나 한다면 더욱 심각하겠죠. 매크로는 녹화버튼을 누르고 난 뒤 변경 사항을 수행하고 스탑버튼을 누르면 끝이 납니다. 그리고 나서 버튼을 눌러서 녹화된 행동을 수행할 수 있죠.

  • ‘q’버튼을 눌러서 레코드를 시작하세요, 그런다음엔 어떤 키를 눌러도 기록이 될 겁니다. 이 예제에서는 a를 누르게 될겁니다 그래서 커맨드는 ‘qa’가 되겠죠.
  • 여러분의 명령을 입력하세요
  • ‘q’를 눌러서 레코딩을 끝내세요
  • 만약 녹화된 행동을 수행하고 싶다면 ‘@a’를 누르세요

2.Relative Line Number

암산을 좋아하는 사람은 없을 겁니다. 암산에 자신이 있으셔도 언제나 23=23이 141-119=23보다는 빨리 계산 될 겁니다. 상대 라인 넘버는 텍스트 파일의 절대적인 라인 넘버를 보여주는 것 뿐만 아니라 라인 커서를 기준으로 상대적인 라인 넘버를 보여줍니다. 이것을 활용하면 라인을 쉽게 삭제하거나 원하는 라인으로 쉽게 이동할 수 있습니다. .vimrc에 다음과 같은 코드를 추가해서 사용할 수 있습니다.

set relativenumber

예를 들어 여러분은 다음 25라인을 다음과 같은 vim 명령어로 수행할 수 있습니다.

25dd

3.Registers

레지스터는 복사할 텍스트를 저장하는데 사용됩니다. 여러분의 컴퓨터는 여러개의 레지스터를 갖고 있죠. 기본적으로 vim은 시스템이 복사된 텍스트를 저장하는 레지스터와는 다른 레지스터를 사용합니다. 다음의 명령어를 .vimrc에 추가하세요

set clipboard=unnamed
set clipboard=unnamedplus

이렇게 추가를 하면 vim에서 복사된 텍스트가 컨트롤+v로 붙여넣기가 되고 컨트롤+c로 복사된 텍스트가 vim에서 ‘p’를 눌러서 붙여넣기 될 수 있습니다.

만약 여러분이 레지스터를 덮어쓰지 않고 텍스트를 지우고 싶다면 다음과 같은 명령어를 수행하시면 됩니다.

"_dd

4.Remapping Escape

esc키는 home row에서 꽤나 멀리 떨어져 있습니다. 얼마나 자주 눌리는지를 고려하면 exit 커맨드로는 적합하지 않죠. .vimrc:에 다음과 같은 명령어를 추가해서 수정할 수 있습니다

cnoremap kj <C-C>
cnoremap jk <C-C>

이 것은 여러분이 ‘jk’ 나 ‘kj’를 입력해서 바로 exit할 수 있습니다.

5.Verb Modifier Object

vim은 ‘‘동사 수정자 대상’의 패턴을 따르는 특별한 문법을 가지고 있습니다. 동사의 예로는

  • ‘d’ delete
  • ‘c’ change 수정자의 예로는
  • ‘t’ till
  • ‘f’ find
  • ‘i’ inside 대상의 예로는
  • ‘w’ word
  • ’(‘ parenthesis
  • ‘t’ tag
  • ’s’ sentence
  • ’”’ quotes 예를들면 ‘diw’는 여러분의 커서가 위치한 단어를 삭제합니다 해당 위치가 단어의 시작점이든 아니든 상관없이요. ‘dt)’는 커서의 위치에서 ‘)’을 만날 때 까지 모든 텍스트를 삭제합니다. ‘cfp’ p를 만날 때 까지 모든 텍스트를 삭제하고 자동적으로 입력 모드로 바뀝니다. ‘.’을 함께 사용하면 이전의 명령어를 반복적으로 사용할 수 있으며 이게 꽤 유용합니다.

    6.White Space Fixing

    개발자를 약올리는 것 중에 하나는 탭 대신에 공백문자가 라인의 끝까지 입력되어 있는 것입니다. 여러분은 다음과 같은 명령어를 .vimrc:에 추가할 수 있습니다.

    set list
    

    이것은 한 줄의 끝마다 ‘$’심볼을 표시하게 되며 탭 대신에 ‘^’심볼이 표시되게 됩니다. 이것은 여러분이 탭과 $ 심볼을 쉽게 식별할 수 있게합니다. .vimrc는 또한 탭과 공백문자에 대해서도 더욱 쉽게 다룰 수 있게하는 것들이 있습니다. 아래의 링크를 확인해보세요. https://vim.fandom.com/wiki/Example_vimrc.

    7.Navigating Faster

    여러분이 처음으로 inv vim에서 배우는 것은 hjkl 키를 이동하는 데 사용하는 것입니다. 그러나 이것은 이동할 때 가장 느린 방법 중 하나입니다. 아래는 이동을 더욱 빨리 할 수 있는 중요한 명령어 들입니다.

  • ‘gg’는 파일의 상위로 가게하며 ‘G’는 아래로 가게 합니다.
  • CTRL+’F’는 앞으로 CTRL+’B’는 뒤로가기 입니다.
  • ‘zz’는 여러분의 커서가 중앙에 위치하도록 페이지를 재조정합니다
  • ’{‘, ‘(‘같은 괄호를 만났을 때 ‘%’를 누르면 해당하는 닫는 괄호로 이동됩니다.
  • 여러분이 원하는 단어를 찾기위해서는 ‘/’를 누르세요

    8.Date

    많은 경우에 여러분은 텍스트파일에 날짜를 추가할 필요가 있습니다. 이것은 느리고 지루한 일이 될 수 있습니다. .vimrc에 다음을 추가하세요

    nmap <F3> i<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc>
    imap <F3> <C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR>
    

    여러분은 F3을 눌러서 날짜와 시간을 추가할 수 있습니다.

    Closing Thoughts

    vim을 배우는 데 가파른 언덕이 있지만 vim은 텍스트 편집 경험을 더욱 즐겁게 할 수 있고 시간을 절약해주는 도구입니다. 텍스트편집 문제로 시간을 낭비하지 마시고 가장 멋진 방법을 찾아서 vim의 우아한 언어로 컴퓨터와 얘기를 나누는 것을 즐기세요

Summary

  • Vim 트릭 정리
  • Vim을 잘 다룰 필요가 있다. 텍스트 편집의 시간을 절약해주고 멋지니까

© 2019. All rights reserved.

Powered by Hydejack v8.1.1