본문 바로가기
Linux

[Linux] vi 명령어

by JINJINC 2023. 3. 15.
728x90
반응형

< vi 편집기 >

모드형 편집기 => 여러 모드가 있고, 그 모드들 마다 기능이 다른 편집기 화면단위 출력

 

vi 편집기의 모드 


1. 명령 모드 


처음 vi편집기를 실행 했을 때, 만나는 모드,
방향키 및 h,j,k,i키를 이용한 이동과 명령 모드 명령어를 사용가능
명령모드에서 다른 모드로 이동하는 것이 vi모드 이동의 기본
다른 모드 실행 중에 명령모드로 돌아오려면 esc키를 입력 

## 명령 모드의 명령어 

  • r : 현 커서 위치에 있는 한 글자를 입력한 값으로 수정  
    =>  명령모드 상태에서 r 누르고 , 입력가능
  • dd : 행 단위로 삭제, 앞에 숫자를 입력해서 반복할 횟수를 지정할 수 있음 
    => 4dd누른경우 해당 커서부터 4 행이 삭제됨 
  • dw :  단어 단위로 삭제, 현재 커서가 있는 부분부터 연결되어 있는 단어를 삭제
  • x : 현재 커서가 있는 글 한자 삭제 
  • yy : 행 단위로 복사, 버퍼 위에 씌운 후에 적용하는 느낌 
  • yw : 단어 단위로 복사
  • p :  현재 커서가 위치한 곳에서 뒤로 y로 복사한 내용을  붙여넣기 
  • P(대문자) :  현재 커서가 위치한 곳에서 앞으로 y로 복사한 내용을 붙여넣기 
  • u :직전 명령 취소
  • ^(shitf + 6) : 현재 커서가 위치한 가장 앞행으로 이동
  • $(shift + 4) : 현재 커서가 위치한 행에서 가장 뒤로 이동
  • gg : 최상단으로 이동
  • G : 최하단 행으로 이동
  • 숫자 +G : 숫자 해당 행으로 
  • ctrl + b : page up
  • ctrl + d : page down
  • 숫자 + % : 해당 문서의 비율위치로 이동
  • ctrl + a/x : 숫자 올리기 / 내리기 

    #매크로 
  • q + [지정키] ==> recording 메세지가 출력되고 녹화 시작
    모든 작업을 마치고 q 를 누르면 recording종료
  • @ + [지정키] 순차적으로 누르면 매크로가 실행

    #register
  • 별도의 지정키에 내용을 저장하고 해당 내용을 다시 불러와서 작업
  • " 누르고 [지정키] 누른 후에  yy yw로 복사하고 다시 사용시에는
  • " 누르고 [지정키] 누른 후 p 
  • !! 지정키를 대문자로 지정할 시, 여러내용을 한번에  해당 내용을 추가로 덧붙일 수 있음 
반응형

#마크

- 현재 커서가 위치 지점을 지정키에 기록, 
- m + [지정키] => 기억시키고 '  ` ' (역따옴표) 누르고 지정키 눌러서 복귀
- ``( 역따옴표 두번) 을 누르면 직전에 위치했던 지점으로 복귀

# /문자열 

=> 해당 문자열을 검색, 검색 결과 이동은 n/N 을 눌러서 이동

# 마이크로 매크로 

직전에 수행했던 작업을 반복하고자 할 때 , 마침표를 눌러서 반복가능

  • yy  복사
  • 숫자 + yy => 커서 위치부터 [숫자]개수만큼의 행까지 복사
  • 붙이기
  • :wq, ZZ  저장
  • i,a,o,esc 모드전환

2. 입력모드 

텍스트를 입력하는 모드. 자유롭게 텍스트를 작성할 수 있지만 기능적인 명령어들을
사용 불가. 명령모드에서 i,a,o,I,A,O를 눌러서 진입이 가능

 

  • A : 현재 행에서 제일 뒤로 가서 입력모드 전환
  • I : 현재 행에서 제일 앞으로 가서 입력모드 전환
  • i,a : 현 커서 위치에서 입력 전환, a는 attached로 한 칸 뒤부터 입력모드 전환
    i 는 insert, 현재 칸부터 입력 전환
  • o : 한줄 내려서 입력모드 전환 , O한줄 위에 추가하고 입력 전환
  • c : 수정 명령. 뒤에 뭘 붙이냐에 따라서 수정 범위를 변경 할 수 있음
  • cc  ==> 행 단위로 내용 수정
  • cw ==> 단어 단위로 내용 수정 
  • c +방향키  ==> 현 커서 위치부터 해당 방향으로 내용 수정 
    ,현재 커서의 위치는 삭제되고 새로운 열이 생성
  • 진입시 , INSERT 라는 표시가 좌측에 표시

문자를 입력하고 ctrl + p 를 누를 시에 추천 단어 목록이 뜬다.
(현재 문서 내에서 비슷한 값들로 추천목록이 생성)  

 

 

3. 마지막행 모드

: 을 눌러서 진입하고 명령을 입력해주면 명령 수행.

 

  • :[범위][기능]/[대상]/[결과]/[옵션]
    ex) 1,21s/ssh/icmp/gi
  • :w ==> 저장
  • :w [ 파일명 ] ==> 파일명으로 새로 저장
  • :q ==>  나가기 
  • :wq ==> 저장하고 나가기
  • :e [대상]==> edit 편집한다. == 열기 
  • :e! ==> edit 하지 않는다. == 초기 상태로 다시(마지막 저장상태)
  • :sp ==> 현재 편집창을 수평으로 나눔
  • :vs ==> 현재 편집창을 수직으로 나눔
  • ctrl + ww 혹은 ctrl + w 방향키 ==> 다중 창 간 커서 이동
  • :new ==> 새 문서를 새 창에 띄우고
  • :e new ==> 현재 창에 새 문서를 띄움
  • :/문자열 ==> 해당 문자열 검색
  • :?문자열 ==> 해당 문자열 검색
  • :s/문자열1/문자열2 ==> 제일 먼저 등장하는 1번 문자열을 2번 문자열로 치환
    (행 내 문자열1을 모두 바꾸고 싶으면 s/문자열1/문자열2/[옵션]에 global, 대소문자 무시는 i 입력)


!! 문자열 위치에 정규표현식 사용 가능
(tcp|udp) == tcp 혹은 udp 
/\(tcp\|udp\)

범위를 전체를 잡을 땐 % 사용

  • :숫자,숫자 ==> 범위 지정
  • :숫자  ==> 해당 행으로 이동
  • :s/문자열/\L&/ ==> 해당 문자열을 소문자로
  • :s/문자열/\U&/ ==> 해당 문자열을 대문자로
  • :!명령어 ==> 해당 시스템 명령어 시행
  • :r [대상파일] ==> 해당 파일의 내용을 현 행에 추가
  • :r !명령어 ==> 해당 명령어의 프롬프트 출력 결과를 현 행에 추가
  • :숫자 r !명령어 ==> 해당 라인에 명령어 출력 결과를 추가
  • :w ! 명령어를 일시적으로 창에 보여줌


4. 비주얼 모드:

범위를 지정하고 해당 범위에서 수정할 수 있는 모드

  • v : 글자 단위로 범위를 지정
  • V : 라인 단위로 범위를 지정
  • ctrl + v : 블록 단위로 범위를 지정

범위 지정 후 수행할 수 있는 명령들

  • y : 복사
  • d : 잘라내기
  • c : 수정
  • J : 서로 다른 줄 하나로 합치기
  • U : 대문자로 수정
  • u : 소문자로 수정
  • gv : 직전에 지정했던 블록 다시 지정

!!마지막행 모드를 블럭 지정해서 실행 가능
마지막행 모드 진입해서 norm i[문자] ==> 해당 문자열 각 행 제일 앞에 추가
(주로 주석처리 시 사용)

!!ctrl + v로 블럭 지정 후에 I를 눌러서 입력모드로 변경 시, 
입력한 내용을 일괄적으로 해당 블럭 내, 각 행에 적용(esc로 빠져나오고 적용)

 


# vi 환경변수 

마지막 행 모드를 통해서 적용 시키거나, 
/etc/vimrc 추가해서 설정 적용이 가능한 vim에 대한 환경 변수들.
(매번 새로 적용할 게 아니면 vimrc에 고정적으로 기입해서 사용)\

  • set ic ==> 대소문자 무시
  • set nu ==> 행 번호 표시
  • set ai ==> 줄 맞춤
  • set sm ==> 괄호의 짝을 표시해주는 기능
  • set sts=숫자 ==> tab의 간격을 설정

#vi 명령어

  • vi [파일명] ==> 파일 열기
  • vi -R [파일명] ==> Readonly로 열 때
  • vi -o [파일명1] [파일명2] ==> 한 번에 여러 파일 열기
  • vi -r ==> 현 디렉터리에 복구 파일이 있는지 확인
  • vi -r [파일명] ==> 복구 파일이 있을 시, 해당 파일로 바로 열기

??? 복구파일

.[파일명].sw[a-z] 로 생성되는 파일들
비정상 종료, 혹은 이미 파일이 열려있는 상태에서 동일한 파일을 새로 파일을 열려고 할 때 vi는 해당 파일에 대한 복구 파일을 생성함.
재접근 시, 해당 파일을 먼저 컨택하기 때문에 정상 종료하거나 복구 파일을 삭제하면 더 이상 복구모드 접근창이 열리지 않음
O : read - only
E : edit ( 마지막 저장상태)
R : .*.swp 파일로 수정(복구)
Q : 나가기

#브라우징 모드
vi . 을 입력해서 들어가는 모드. 일종의 DOS 환경처럼 터미널을 이용한 탐색 및 파일열기가 가능


#임시적 셸 빠져나가기?

ctrl +z를 이용해서 작업 중에 빠져나갈 수 있음 (halt 상태) 
해당 상태로 밀린 작업들은 jobs 명령를 통해서 확인할 수 있음
작업으로 돌아가는건 fg 명령어로 돌아갈 수 있음
fg %숫자 ==> 해당 번호의 작업으로 돌아가기

#정규표현식을 이용해서 복수 문자열을 복수의 문자열로 치환 
#ssh             22/tcp                               The Secure Shell (SSH) Protocol
#ssh             22/icmp                               The Secure Shell (telnet) Protocol

tcp => icmp , SSH => telnet 
s/tcp\(.\{-\}\)SSH/icmp\1telnet/ 
==> tcp SSH 그리고 그 사이에 있는 글자들을 icmp, telnet 그 사이에 있는 글자 그룹들로 바꿔줘라
tcp(.{-})SSH ==> tcp와 SSH 사이에 있는 글자는 하나의 그룹으로 취급

 

 

 

 

728x90
반응형

'Linux' 카테고리의 다른 글

[Linux] 여러 명령어  (1) 2023.03.18
[Linux] 명령어  (0) 2023.03.14
[Linux] 1. Linux 란?  (0) 2023.02.22

댓글