ide/vim

vi/vim

C/H 2017. 3. 9. 08:30

동사(verb)


y

Copy : 복사 'yy'(statement) is 'y_'

d

Cut : 복사한 후 삭제

p

Paste : 붙여넣기

m

vi 에는 26"마크"와 26 "레지스터"가 있다. (영단어 26)
보통 ‘a’를 첫 번째 마크, ‘z’를 다음 마크, ‘b’는 다른 마크로, ‘e’를 또 다른 마크로 사용한다
  • ma : a 마킹
  • 'a : a로 이동
  • `a : a로 이동, backquoet

y`a

현재 커서에서 `a까지 Copy

d`a

현재 커서에서 `a까지 Cut

{ }

{ : 현재커서가 위치한 단락 처음으로 이동
} : 현재커서가 위치한 단락 마지막으로 이동

y?bar

현재 줄에서 “bar” 문자열을 포함하는 가장 가까운(이전) 줄까지 복사.

d/foo

현재 줄에서 “foo” 문자열을 포함하는 다음 줄까지 잘라낸다.

목적어(objects)

"(이중 따옴표)를 접두사로 하는(prefixing) "목적어"26개의 "이름(named)"를 사용할 수 있다.

"add

a에 현재 줄을 Cut.

"by/foo

현재커서에서 "foo"가 포함된 다음 줄까지 ‘b’에 Copy

"ap

a 내용을 Paste

"bP

b 내용을 현재줄 앞에 붙여넣기

3J

다음 3줄을 합침.

d5}

현재 줄에서 아래로 5번째 단락 끝까지 삭제

기능 샘플

":" 명령 집합은 vi의 이전 버전인 ed(line editor)와 나중에 나온 ex(extended line editor) 유틸리티에서 상속되었다.

:% s/foo/bar/g

전역 대체(substitution)
문서 전체에서 foo를 bar로 대체

:127,215 s/foo/bar

127과 215 사이의 줄에서 처음 만나는 "foo”를 “bar로 대치한다.

:.,$j

. 현재줄
$ 마지막줄
현재 줄부터 마지막 줄까지 모두 한 줄로 합친다. :%:1,$와 같다.

:... g

패턴에 매칭되는 모든 줄에 후속 명령을 “전역적으로(globally)” 적용.

:... v

패턴에 일치하지 않는 모든 줄에 적용한다. conVerse(반대)

:.,+21g/foo/d

현재 줄부터 다음 21줄에 걸쳐 “foo”를 포함하는 모든 줄을 지운다.

:.,$v/bar/d

현재 줄부터 파일의 끝까지 “bar”를 포함하지 않는 모든 줄을 지운다.

:g/re/p

:g/re/p(grep) 정규식(regular expression) "전역(globally)에 (re)를 포함된 줄을 인쇄(print)한다.

:p

인쇄

:.,+25p

한 번에 한 페이지 전체 인쇄.

:% g/foo/m$

“foo”(를 포함하는) 줄은 파일의 끝으로 옮겨질 것이다.

:'a,'bg/foo/j

‘a’와 ‘b’ 마크 사이의 줄에서 foo 문자열을 포함하는 모든 줄을 합친다.

:r foo

현재 줄에 “foo”라는 파일의 내용을 삽입.

:r!

명령의 결과를 읽는다.
vi 세션을 일시적으로 정지하고, 명령을 수행하고, 임시 파일에 출력을 리다이렉트하고, vi 세션을 다시 실행하여 임시 파일에서 내용을 읽어온다.

1G

G는 goto 명령어로 1번째 줄로 간다.
G 는 마지막줄로 간다.

:so

:source 약어

@

등록된 @의 내용을 실행한다.
  1. 0i:r 현재 줄을 유효한 :r 명령으로 만든다.
  2. cdd “c” 레지스터에 그 줄을 잘라내고
  3. @c 명령을 실행한다.


반응형

'ide > vim' 카테고리의 다른 글

vim book  (0) 2017.04.14
Vim unable to open swap file Error  (0) 2017.03.22
github.com/crooloose/.vimrc  (0) 2017.02.27
neovim  (0) 2017.02.13
neovim :help  (0) 2017.02.09