vim

BERT·2023년 3월 22일
0

Linux

목록 보기
14/24

vi(visual editor)

1976년 BSD의 Bill Joy 개발

설치

Debian계열

sudo apt -y install vim

시작

파일명 열면서 시작

vim <파일명>

파일명 "-"일 경우 -stdin을 의미

find . -name "*.txt" | vim -

modes

a, i, o:
normal modeinsert modecommand-line modevisual mode

cursor

\larr\darr\uarr\rarr
HJKL

앞에 숫자 붙이면 해당 숫자만큼 칸 수 이동
^ 행 맨 앞으로 이동
$ 행 맨 끝으로 이동(caret이라 읽음)

scroll

CTRL+BCTRL+UCTRL+FCTRL+D
위로 한 화면 스크롤위로 반 화면 스크롤아래로 한 화면 스크롤아래로 반 화면 스크롤

goto N line

N+g+gN+G:N
N행으로 이동(default 1행)N행으로 이동(default 마지막행)N행으로 이동

CTRL+G : 현재 문서 위치 정보


buffer : delete, cut

xd+dDJ
커서에 위치한 문자 삭제현재 행 삭제현재 위치에서 현재 행 끝까지 삭제아래 행을 현재 형 끝에 붙여넣기

3+d+d : 행 3줄 삭제

buffer : paste

p : 현재행에 붙여넣기
5+p : 5번 반복 붙여넣기

buffer : copy

y : 현재 행을 레지스터에 복사(yank)

buffer : undo / redo

uCTRL+R
undoredo

. 이전 명령어 반복

cmd : range

명령어설명
:20d20번 반복 행 삭제
:10,25d10~25행 삭제
:10,$d10~마지막 행 삭제
:%y문서전체 복사
:.,+20y현재 행~아래로 20행 복사
:-10,+5d현재 행 위로 10행 아래로 5행 삭제
:40pu40번 행에 내용 붙여넣기

. 현재 행
$ 마지막 행
% 전체 행

visual mode

마우스 드레그 기능 대신함

vVCTRL+vg+vo
현재 커서 위치에서 블록 지정행 단위로 블록 지정열 단위로 블록 지정이전 영역 불러오기블록 끝에서 끝으로

Practice

CTRL+V 열 단위 블록 지정

I 0000

ESC


vi, vim, vimx

vi

vi 호환의 vim
compact vim 혹은 tiny tim이라고 부름

vim

일반적인 vim
enhanced vim이라고 부름

vimx

가장 많은 기능을 가진 vim
vim+clipboard, X window clipboard 기능 포함

기능RedHatDebian
vivim-minimalvim-tiny
vimvim-enhancedvim-nox
vimxvim-X11vim-gnome

Debian 계열
sudo apt-get install gnome

X window 환경에서 vim과 클립보드 공유

clipboard 기능 포함 여부 확인
clipboard, xterm_clipboard 기능 빠진 채 빌드됨


help

:help cindent

녹색 부분으로 커서 이동 후 CTRL+] : 해당 내용으로 이동
CTRL+T : 이전으로 복귀

CTRL+W+W : 화면 2개 생성 후 이동

vim error

  1. 다른 터미널에서 작업 중인 경우 (STILL RUNNING)
  2. 편집 중 세션이 죽은 경우

O 읽기 전용 또는 Q 중지

R 복구 후 D swap 파일 삭제


format

centerrightleft
가운데정렬오른쪽정렬왼쪽정렬

CTRL+V 아래로 스크롤
:center

find

한 행만 적용
f c 문자 c를 전방 검색
F c 문자 c를 후방 검색
; 다음 검색
, 뒤로 검색

전체 적용
/string string을 전방 검색
?string string을 후방 검색
n 다음 검색
N 뒤로 검색
* 현재 커서 위치 단어 전방 탐색
# 현재 커서 위치 단어 후방 탐색
% 검색 단어에 괄호가 있는 경우 짝을 찾아줌

:set hls 하이라이트 활성화
:set nohl 하이라이트 비활성화

\c 대소문자 상관없는 옵션
/\cinter 대소문자 상관없이 inter 검색

/[a-g]re are bre cre dre ere fre gre 검색

\M magic 해석 금지
/\M[section] [section] 검색

substitute

:[range]s/<찾는 문자열>/<교체할 문자열>/<옵션>

옵션설명
g검색된 문자열 모두 교체
i대소문자 무시
c교체할때마다 확인
e에러 무시

찾을 문자열에 /가 많은 경우
%s/\/home\/linuxer/\/home\/unixer/g
:%s,/home/linuxer,/home/unixer,g

substitute : fileformat : DOS/UNIX

:set ff=dos
:set ff=unix


buffer : 파일 편집을 위한 임시 공간
register : 텍스트 일부를 저장하고 있는 임시 공간

vim에서 다른 파일을 편집하려고 할 때
:e filename filename을 편집모드로 오픈
:e #N N번째 파일을 오픈
CTRL+6 다른 오픈된 파일로 이동

quit

:q 종료
:q! 저장하지 않고 종료
:qa 모든 창 종료
:qa! 모든 창 저장하지 않고 종료

write, update

:w filename 저장(filename 생략 시 현재 파일)
:sav file 현재 파일을 다른 이름으로 저장 후 그 파일로 이동
:wq, :x, Z+Z 저장 종료
:wqa 모든 창 저장 종료

netrw

vim으로 디렉터리 열기(browsing)
:e .

명령어설명
enter파일 열기
i파일 표시 방법 변경
s정렬 방식 변경
o수평 분할 새 창
v수직 분할 새 창
p파일 미리보기 창
t새로운 탭으로 분할
-상위 디렉터리

split window

horizontal

CTRL+W+S
:sp file

vertical

CTRL+W+V
:vs file

vim -O clientlist.txt manpage.txt

창 이동 관련 명령

CTRL+W
CTRL+W+방향키

diff

vim -d file1 file2
do get
dp put

tab page

vim -p file1 file2
gt 다음 탭

buffer

:files vim buffer

기호의미
'%'현재 편집 중인 버퍼
'#'바로 이전 버퍼
'a'활성된 버퍼
'+'변경된 버퍼

filename move

G+F 해당 파일로 이동
CTRL+O, CTRL+6 이전 파일로 돌아가기

CTRL+O+F 분할된 창에 오픈
CTRL+O+G+F 탭에 오픈


fileencodings(fencs)

:set fenc:korea 변경 후

~/.vimrc 설정 후 multi-bytes 기반 인코딩 파일 읽기 가능
set fencs=ucs-bom,utf-8,korea,latin-1
BOM확인 후 UTF-8, korea, ASCII

BOM(Byte Order Mark)
UCS(Universal coded Character Set)의 판별 마크

Linux2Window

  1. :set ff=dos
  2. :set fenc=korea
  3. :wq :sav new_file.txt 추천

Window2Linux

  1. :set ff=unix
  2. :set fenc=utf8
  3. :wq

word forward/backward

w e 단어 경계 이동
% 괄호 짝 이동
( ) 문장 단위 시작 위치, 끝 위치
{ } 문단 단위 시작 위치, 끝 위치
[[ ]] 블록 단위 시작 위치, 끝 위치

abbreviation

~/.vimrc에 해당 내용 추가 시 편리하게 이용가능

ab, ia

ia는 i모드에서만 작동
ca는 c모드에서만 작동
ab <축약어> <변경할 내용>
ia time <C-R>=strftime("%Y.%m.%d-%H:%M:%S")
ca ㅈ w
ca ㅂ q

autocmd

특정 상황에서 자동 실행할 명령
스왑 파일 존재 시 자동으로 O 선택
autocmd SwapExists * let v:swapchoice = 'o'

re-indenting

=
활용
gg+=+G 전체 문서 indent

:set et ts=4 기존 작성된 탭 문자를 공백 4칸으로
:ret 되돌리기

:set noet ts=4
:ret!

insert-completion

CTRL+N 자동 단어 완성 기능

CTRL+X && CTRL+F 자동 파일명 완성 기능

자동 .vimrc 만들어 주는 곳
https://vim-bootstrap.com/

0개의 댓글