Vim editor

정소원·2023년 4월 25일
0

Linux

목록 보기
2/5

vi

vi (visual editor)

  • UNIX / Linux 에서 가장 많이 사용하는 텍스트 편집기
  • 1976년 BDS의 Bill Joy가 개발
  • line editor → vi → vim 순으로 계승

vim

vi improved

  • vi에 추가적인 확장 기능 부여
  • 웬만한 UNIX 계열에 모두 탑재되어 있다고 해도 과언이 아님
  • 리눅스에서 vi 대신 vim이 사용되어짐
  • root 유저가 사용하는 vim은 최소화된 vim 에디터로서 제한된 기능만 탑재
  • vim 추가 설치 필요

platform

vim은 다양한 플랫폼을 지원함

  • Linux, UNIX, Mac OSX, Windows
  • vim 설치 링크 : vim.org

install

  • RH계열 : RHEL, CentOS, Fedora
    • yum -y install vim-enhanced
  • Debian계열 : Debian, Ubuntu, Mint…
    • $ sudo apt -y install vim
    • 의존성에 의해서 실패하는 경우에는 의존성을 해결해야 한다.

start

vim [filename] - 특정 파일명을 열면서 시작

[filename] = “-” = -stdin-를 의미함

find . -name “*.txt” | vim -

Modes

일반보드: normal mode

입력모드: insert mode

명령행모드 : command-line mode

비주얼 모드: visual mode

모드 전환

Untitled

Normal mode

  • 단축키를 쓰는 모드
  • 모든 것이 단축키로 작동함

why?

  • gui 환경에서 메뉴바와 같은 기능을 구현할 수 없음
  • cui 환경에서 이를 단축키로 구현함
  • crtl+A,B,C … 방식은 조합 가능 수 줄어들고 복잡함
  • 이를 노멀 모드에서 ctrl을 생략하고 단축키 구현

key

단축어기능
aappend현재 커서에서 한 칸 뒤로 이동한 후, 입력 모드로 전환
Aappend현재 행의 끝으로 이동한 후, 입력 모드로 전환
iinsert현재 커서 위치에서 입력 모드로 전환
Iinsert현재 행의 맨 앞으로 이동 후, 입력 모드로 전환
oopen line현재 행 아래에 새로운 행을 하나 만든 후, 입력 모드로 전환
Oopen line현재 행 위에 새로운 행을 하나 만든 후, 입력 모드로 전환

exit

저장을 하지 않고 나가기 시도할 경우 error 발생함

  • force
    • !
    • 에러 무시하고 나가기 할 경우 ! 추가
단축어기능
:wwrite파일 저장
:qquitevim 종료

cursor

좌, 하, 상, 우 커서 이동 (in nomer mode)

단축어설명
[#]h좌로 #칸 이동
[#]j아래로 #칸 이동
[#]k위로 #칸 이동
[#]l우로 #칸 이동
^행의 맨 앞으로 이동
$행의 맨 끝으로 이동

Page

page up/down도 없다고 생각하자

마우스가 없다고 생각하자

단축어설명
ctrl + bbackward위로 한 화면 스크롤
ctrl + fforward아래로 한 화면 스크롤
ctrl + uupward위로 1/2 화면 스크롤
ctrl + ddownward아래로 1/2 화면 스크롤

goto

goto # line

  • 특정 라인으로 이동할 때 scroll을 사용하는 것은 비효율
  • line number를 직접 입력하자
단축어설명
[#]gggoto#행으로 이동합니다. (default # = 1)
[#]Ggoto#행으로 이동합니다. (default # = end line)
:##행으로 이동합니다.

info

단축어

:file → 현재 문서 위치 정보를 하단 상태 바에 표시합니다

Buffer

delete, cut

삭제(잘라내기)

  • vi에서의 삭제 = 임시 버퍼에 잘라내기
단축어설명
xX커서에 위치한 문자 삭제
dd
:d
delete현재 행을 삭제
Ddelete현재 컬럼 위치에서 현재 행의 끝부분까지 삭제
Jjump아래 행을 현재 행의 끝에 붙임

paste

붙여넣기

단축어설명
p
:pu
paste현재 행에 붙여 넣습니다. (put)
개행 문자가 포함된 경우에는 현재 행의 아래에 붙여 넣습니다.
Ppaste현재 행의 위쪽에 뭍입니다.

5p → 5번 붙여넣어짐

copy

단축어설명
yy
:y
Y
copy현재 행을 레지스터에 복사 (yank) 합니다.

undo / redo

단축어설명
uundo바로 이전에 행한 명령 한개를 취소합니다. (undo)
CTRL-Rredo바로 이전에 취소했던 명령을 다시 실행합니다. (redo)
. (dot)이전 명령어 반복

range

: 기호 앞에 쓰임

기호설명
.현재 행
$마지막 행
+#현재 위치에서 #만큼 아래 행을 의미
-#현재 위치에서 #만큼 위 행을 의미
%문서(파일) 전체를 의미

예시

명령어설명
:20d20행 삭제
:10, 20d10~20행 삭제
:10,$d10~마지막 행까지 삭제
:%y문서 전체 복사 (% = 1, $)
:.,+20y현재 행부터 아래로 스무행을 복사
:-10,+5d현재 행부터 위로 10행, 아래로 5행, 총 16행을 삭제
:40pu40번 행에 레지스터의 내용을 붙여넣습니다.

Visual mode

마우스의 드래그 작업을 대신하는 모드

기호설명
vvisual mode(default), 현재 커서 위치에서 블록 지정
Vvisual line mode, 현재 커서가 위치한 행에서 행 단위로 블록을 지정
CTRL-Vvisual block mode, 열 단위로 블록을 지정 (CTRL-V가 예약되어 사용할 수 없는 경우 CTRL-Q로 대신할 수 있다.)

tip - ':' 를 사용하면 normal mode처럼 쓸 수 있음 (e.g. :’<,’>d → 선택한 내용이 삭제 됨)

colum editing

Iinsert특정 열에 문자열을 삽입 하는 경우
Aappend특정 열에 문자열을 추가 하는 경우
cchange특정 열에 문자열을 교체 하는 경우
~switch case
ESC*2escape명령어 적용후 모드 바꾸기
기호설명
ovisual mode에서 커서의 위치 스위칭
gvprevious highlighted text 영역 불러오기

Binary (commend)

  • vi
    • vi 호환의 vim임
    • vi는 옛날에 사라짐
    • compact vim 혹은 tiny vim이라고 부른다.
  • vim
    • 일반적인 vim을 의미한다.
    • vi에 추가적인 기능과 플러그인 사용이 가능하다.
    • enhanced vim이라고도 부른다. 프로그래밍에도 많이 사용된다.
    • :
    • :
  • vimx
    • 가장 많은 기능을 가진 vim이다.
    • vim + clipboard, X window clipboard

Package

기능명령어RedHat 계열Debian 계열
일반 vivivim-minimalvim-tiny
enhanced vimvimvin-enhancedvim-nox
vim with Xvimx, gvimvim-Xllvim-gnome
vim-athena

install

  • RedHat 계열
    • 설치: yum -y install vim-Xll
  • Debian 계열
    • 설치: sudo apt -y install vim-gnome → sudo apt install vim-gtk3
    • 제거: sudo apt -y —auto-remove remove vim-gnome

GNOME vs Athena

gnome: 21세기 디자인

athena: 20세기 디자인

Clipboard 설정

vim —version | grep clipboard

Select an editor

  1. sudo select-editor
  2. /usr/bin/vim.basic 선택
profile
성장지향형 자율주행 소프트웨어 개발자입니다. K-Digital-Training: 자율주행 데브코스 Planning & Control 1기로 활동하고 있습니다. 본 블로그를 통해 배움기록을 실천하고 있습니다. #자율주행 #기계공학

0개의 댓글