리눅스 vi/vim


모든 Unix Like 시스템에는 vi 문서 편집기가 내장되어 있지만 다른 문서 편집기는 없을 수도 있습니다.

하지만 현재 우리는 vim 편집기를 더 많이 사용합니다.

vim에는 프로그램 편집 기능이 있어 글꼴 색상으로 문법의 정확성을 적극적으로 식별할 수 있어 프로그램 설계가 용이합니다.

관련 기사: 역사상 가장 완벽한 Vim 단축키 비트맵 - 초급부터 고급까지


vim이란 무엇인가요?

Vim은 vi에서 개발된 텍스트 편집기입니다. 특히 코드 완성, 컴파일, 에러 점프 등 프로그래밍을 용이하게 하는 기능이 풍부해 프로그래머들 사이에서 널리 사용되고 있다.

간단히 말하면 vi는 구식 워드 프로세서이지만 그 기능은 이미 매우 완벽하지만 아직 개선의 여지가 있습니다. vim은 프로그램 개발자에게 매우 유용한 도구라고 할 수 있습니다. vim의 공식 웹사이트(http://www.vim.org) 자체에서도 vim은 워드 프로세싱 소프트웨어가 아니라 프로그램 개발 도구라고 나와 있습니다.

vim 키보드 다이어그램:

vi-vim-cheat-sheet-sch.gif


vi/vim 사용

기본적으로 vi/vim은 일반 모드, 편집 모드, 명령줄 명령 모드의 세 가지 모드로 구분됩니다. 이 세 가지 모드의 기능은 다음과 같습니다:

  • 일반 모드:
    vi로 파일을 열면 곧바로 일반 모드(기본 모드)로 들어갑니다. 이 모드에서는 '상하좌우' 키를 이용해 커서를 이동할 수 있고, '문자 삭제'나 '전체 줄 삭제'를 이용해 파일 내용을 처리할 수 있다. "복사하여 붙여넣기"를 사용하여 파일 데이터를 처리할 수도 있습니다.

  • 편집 모드:
    일반 모드에서는 삭제, 복사, 붙여넣기 등이 가능하지만, 파일 내용 편집은 불가능합니다! 『i,』를 누를 때까지 기다리세요. I, o, O, a, A, r, R 등은 문자 뒤에 편집 모드로 들어갑니다. 주목! 일반적으로 Linux에서는 이 키를 누르면 화면 왼쪽 하단에 "INSERT"가 나타납니다. 또는 REPLACE”를 입력한 후에만 편집할 수 있습니다. 그리고 일반 모드로 돌아가고 싶다면, 편집 모드를 종료하려면 "Esc" 버튼을 눌러야 합니다.

  • 명령줄 명령 모드:
    일반 모드에서는 "를 입력합니다. : / ? ” 세 개의 버튼 중 하나를 사용하면 커서를 맨 아래 줄로 이동할 수 있습니다. 이 모델에서는 읽기, 저장, 많은 문자 바꾸기, 종료 등 "데이터 검색" 작업을 제공할 수 있습니다. vi의 동작, 줄 번호 표시 등이 이 모드에서 이루어집니다!

간단히 말하면 이 세 가지 모드를 아래 아이콘으로 생각하면 됩니다.

1040.png

vi/vim 사용 예

vi/vim을 사용하여 일반 모드로 들어가세요

vi를 사용하여 파일을 생성하려는 경우 test.txt라는 이름을 사용하면 다음과 같이 할 수 있습니다:

[root@www ~]# vi test.txt

vi의 일반 모드로 들어가려면 vi 파일 이름 을 직접 입력하세요. 파일 존재 여부에 관계없이 vi 뒤에 파일 이름을 추가해야 한다는 점에 유의하세요!

1041.png

i를 눌러 편집 모드로 들어가 텍스트 편집을 시작하세요

일반 모드에서 i, o, a 및 기타 문자를 누르면 편집 모드로 들어갑니다!

편집 모드에서는 왼쪽 하단의 상태 표시줄에 –INSERT-라는 단어가 나타나는 것을 볼 수 있는데, 이는 어떤 문자든 입력할 수 있다는 프롬프트입니다.

이때, [Esc]키를 제외한 키보드의 다른 모든 키는 일반 입력버튼으로 간주되어 어떠한 편집도 가능합니다.

1048.jpg

일반 모드로 돌아가려면 [ESC] 버튼을 누르세요

자, 위 스타일대로 편집이 끝났다면 어떻게 종료해야 할까요? 예! 좋아요! 그냥 [Esc] 버튼을 눌러주세요! 즉시 화면 왼쪽 하단에 있는 – INSERT –가 없어진 것을 발견하게 될 것입니다!

일반 모드에서 :wq를 눌러 vi를 저장하고 나가세요

좋아요, 저장하겠습니다. 저장하고 나가는 명령은 매우 간단합니다. 저장하고 나가려면 ":wq"를 입력하세요!

1049.png

이렇게 해서 test.txt 파일을 성공적으로 만들었습니다. 매우 간단하지 않습니까?


vi/vim 버튼 설명

위의 간단한 예에서 i, [Esc], :wq 외에도 vim에는 실제로 사용할 수 있는 버튼이 많이 있습니다.

1부: 일반 모드에서 사용할 수 있는 버튼 설명, 커서 이동, 복사 및 붙여넣기, 검색 및 바꾸기 등

nxddnddd1GdGd$d0yynyyy1GyGy0y$p , PJc u[Ctrl]+r이 u와 [Ctrl]+r은 매우 자주 사용되는 명령입니다! 하나는 복원, 하나는 재작업이에요~ 편집할 때 이 두 가지 기능 키를 사용하세요. 헤헤! 매우 행복합니다! .
커서 이동 방법
h 또는 왼쪽 화살표 키(←) cursor 왼쪽으로 한 글자 이동
j 또는 아래쪽 화살표 키(↓)커서를 한 글자 아래로 이동
k 또는 위쪽 화살표 키(↑)커서를 한 글자 위로 이동
l 또는 오른쪽 화살표 키(→)커서를 한 문자 오른쪽으로 이동
키보드 위에 오른손을 올려놓으면 hjkl이 4개의 버튼을 이용해 커서를 움직일 수 있도록 배열되어 있는 것을 알 수 있습니다. 예를 들어 30줄 아래로 이동하는 등 여러 번 이동하려면 "30j" 또는 "30↓" 키 조합을 사용할 수 있습니다. 즉, 수행하고 싶은 횟수(횟수)를 추가한 후 액션을 누르면 됩니다!
[Ctrl] + [f]화면을 한 페이지 "아래로" 이동합니다. 이는 [Page Down] 버튼과 동일합니다. (일반적으로 사용됨)
[Ctrl] + [b]화면을 한 페이지 위로 이동합니다. [Page Up] 버튼과 동일합니다. (일반적으로 사용됨)
[Ctrl] + [d]화면을 반 페이지 "아래"로 이동
[Ctrl] + [u]화면을 반 페이지 "위"로 이동
+ 커서는 공백이 아닌 문자의 다음 열로 이동합니다
-커서는 공백이 아닌 문자의 이전 열로 이동합니다
n<space>그 n 20과 같은 "숫자"를 의미합니다. 숫자를 누른 다음 스페이스바를 누르면 커서가 이 줄의 오른쪽으로 n 이동합니다. 문자. 예를 들어, 20<space>는 커서를 20문자 뒤로 이동합니다.
0 또는 기능 키 [Home]숫자 "0"입니다: 이 줄의 맨 앞 문자로 이동합니다. (공통적으로 사용됨)
$ 또는 기능키 [End]이 줄의 마지막 문자로 이동 (공통적으로 사용됨)
H커서를 이 화면 맨 윗줄의 첫 번째 문자로 이동
M커서는 이 화면 중앙에 있는 줄의 첫 번째 문자로 이동합니다
L커서는 이 화면의 맨 아래 줄의 첫 번째 문자로 이동합니다
G 이 파일의 마지막 줄로 이동(일반적으로 사용됨)
nGn은 숫자입니다. 이 파일의 n번째 줄로 이동하세요. 예를 들어 20G는 이 파일의 20번째 위치로 이동됩니다. OK (:set nu와 함께 사용할 수 있음)
gg 이 파일의 첫 번째 줄로 이동하면 1G에 해당합니다! (일반적으로 사용됨)
n<Enter>n은 숫자입니다. 커서를 n줄 아래로 이동합니다(일반적으로 사용됨)
검색 및 바꾸기
/word커서 아래에서 word라는 문자열을 찾습니다. 예를 들어, 파일에서 vbird를 검색하려면 이 문자열에 대해 /vbird를 입력하면 됩니다! (자주 사용되는)
?word커서 위에 word라는 문자열을 찾습니다.
nn은 영어 버튼입니다. 이전 검색을 반복하는 동작을 나타냅니다. 예를 들어, 문자열 vbird를 아래쪽으로 검색하기 위해 방금 /vbird를 실행했다면, n을 누른 후 다음 이름 vbird를 아래쪽으로 계속 검색할 것입니다. 끈. ?vbird가 실행되면 n을 누르면 vbird라는 문자열을 위쪽으로 계속 검색합니다!
N이 N은 영어 버튼입니다. n과 정반대로 이전 검색 작업을 수행하는 것은 "역방향"입니다. 예를 들어, /vbird 다음에 N을 누르면 vbird를 검색하기 위한 "위"를 의미합니다.
n 및 N과 함께 /word를 사용하면 매우 도움이 됩니다! 검색한 키워드 중 일부를 반복적으로 찾을 수 있습니다!
:n1,n2s/word1/word2/gn1과 n2는 숫자입니다. 라인 n1과 n2 사이에서 문자열 word1을 찾아 문자열을 다음으로 바꿉니다. 단어 2! 예를 들어, 100행과 200행 사이에서 vbird를 검색하고 이를 VBIRD로 바꾸면 다음과 같습니다.
『:100,200s/vbird/VBIRD/g』. (일반적으로 사용됨)
:1,$s/word1/word2/gword1 문자열을 첫 번째 줄부터 마지막 ​​줄까지 찾아 문자열을 다음으로 바꿉니다. 단어 2! (일반적으로 사용됨)
:1,$s/word1/word2/gcword1 문자열을 첫 번째 줄부터 마지막 ​​줄까지 찾아 문자열을 다음으로 바꿉니다. 단어 2! 그리고 교체하기 전에 확인하도록 사용자에게 프롬프트 문자를 표시합니다. 교체해야 합니까? (자주 사용되는)
삭제, 복사하여 붙여넣기
x, X는 한 문자 앞으로 삭제(백스페이스 키인 [backspace]와 동일) (일반적으로 사용됨)
n은 숫자이며, n자를 뒤로 연속 삭제합니다. 예를 들어 10자를 연속으로 삭제하고 싶은데, "10배".
커서가 있는 행 전체 삭제(일반적으로 사용)
n은 숫자입니다. 커서가 위치한 곳에서 n개의 열을 삭제합니다. 예를 들어 20dd는 20개의 열을 삭제합니다. (일반적으로 사용)
커서부터 첫 번째 행까지 모두 삭제
커서부터 마지막 ​​행까지 모두 삭제
커서가 있는 위치 삭제 is, to 줄의 마지막 문자
는 숫자 0입니다. 커서가 있는 곳을 삭제하고 줄의 첫 번째 문자로 이동합니다.
커서가 있는 줄을 복사합니다( 일반적으로 사용됨)
n은 숫자입니다. 커서가 위치한 곳 아래로 n 열을 복사합니다. 예를 들어 20yy는 20을 복사합니다. Column (일반적으로 사용)
커서가 있는 열부터 첫 번째 열까지 모든 데이터 복사
커서가 있는 열부터 마지막 ​​열까지 모두 복사
커서 복사 해당 문자의 모든 데이터를 줄의 시작 부분까지 복사
커서가 있는 문자의 모든 데이터를 줄의 끝 부분까지 복사
p는 커서 아래에 데이터를 복사한다는 의미입니다. 다음 줄을 붙여넣고, P를 커서 한 줄 위에 붙여넣습니다! 예를 들어 현재 커서가 20행에 있고 10행의 데이터가 복사되었습니다. 그런 다음 p를 누른 후, 해당 10개 행의 데이터는 원래 20개 행 뒤에, 즉 21행부터 붙여넣어집니다. 하지만 P를 누르면 어떻게 될까요? 그런 다음 원래 라인 20이 라인 30으로 푸시됩니다. (일반적으로 사용됨)
커서가 있는 컬럼의 데이터와 다음 컬럼의 데이터를 합쳐 같은 컬럼으로 합친다
아래 10행 삭제, [ 10cj ] 등 여러 데이터를 반복 삭제 ]
이전 작업을 복원합니다. (자주 사용)
이전 작업을 다시 실행합니다. (자주 사용되는)
의심하지 마세요! 이것은 소수점입니다! 이전 작업을 반복한다는 의미입니다.반복 삭제, 반복 붙여넣기 등을 하고 싶다면 소수점 "."만 누르면 됩니다! (일반적으로 사용됨)

2부: 일반 모드에서 편집 모드로 전환할 때 사용 가능한 버튼 설명

삽입 또는 바꾸기 편집 모드 진입
i, I삽입 입력 모드 (삽입 모드):
i는 "현재 커서 위치에서 삽입"을 의미하고, "현재 줄의 공백이 아닌 첫 번째 문자에서 삽입"을 의미합니다. (일반적으로 사용되는)
a, A입력 모드로 진입:
a는 "현재 커서가 위치한 다음 문자부터 삽입 시작"을 의미합니다. "커서가 위치한 줄의 마지막 문자부터 삽입" 입니다. (일반적으로 사용되는)
o, O입력 모드 입력:
영문자 o의 대문자와 소문자 버전입니다. o는 "현재 커서가 있는 다음 줄에 새 줄을 삽입합니다"를 의미합니다. O 현재 커서 위치 위에 새 줄을 삽입하세요! (일반적으로 사용되는)
r, R교체 모드로 전환:
r은 커서가 위치한 문자만 대체합니다. R은 커서가 위치한 문자를 항상 대체합니다. ESC까지; (일반적으로 사용되는)
위의 키 중 "--INSERT--" 또는 "--REPLACE--"라는 단어가 vi 화면 왼쪽 하단에 나타납니다. 이름에서 이미 이 동작을 알 수 있습니다! ! 특히 주의할 점은 위에서 언급한 것처럼 파일에 문자를 입력하려는 경우 입력하려면 왼쪽 하단에 INSERT 또는 REPLACE가 표시되어야 합니다!
[Esc]편집 모드를 종료하고 일반 모드로 돌아갑니다. (자주 사용하는)

3부: 일반 모드에서 명령줄 모드로 전환하는 데 사용할 수 있는 버튼 설명

명령줄 저장, 종료 및 기타 명령
:w편집된 데이터를 하드 디스크 파일에 쓰기( 자주 사용하는)
:w!파일 속성이 "읽기 전용"이면 강제로 파일을 씁니다. 다만, 쓸 수 있는지, 이는 여전히 파일에 대한 파일 권한과 관련이 있습니다!
:qVi 종료 (일반적으로 사용되는)
:q!파일을 수정했는데 저장하지 않으려면 !를 사용하여 파일을 저장하지 않고 강제 종료하세요.
주의하세요. vi에서 느낌표(!)는 "강제"를 의미하는 경우가 많습니다~
:wq저장하고 나가면 :wq!인 경우 강제로 저장하고 나가게 됩니다. (자주 사용하는)
ZZ대문자 Z입니다! 파일이 수정되지 않았다면 저장하지 않고 나가세요. 파일이 수정되었다면 저장하고 나가세요!
:w [파일명]편집된 데이터를 다른 파일에 저장합니다. (새 파일 저장과 유사)
:r [파일명]편집된 데이터에서 다른 파일의 데이터를 읽어옵니다. 즉, "파일 이름"입니다. 이 파일의 내용은 커서가 위치한 줄의 끝에 추가됩니다
:n1,n2 w [파일명]n1부터 n2까지의 내용을 파일명에 저장합니다.
:! command일시적으로 vi를 종료하고 명령줄 모드에서 명령을 실행하면 결과가 표시됩니다! 예를 들어
『:!ls /home』 vi의 /home에서 ls로 출력된 파일 정보를 볼 수 있습니다!
vim 환경 변경
:set nu줄 번호를 표시합니다. 설정 후 줄의 줄 번호가 각 줄의 접두사에 표시됩니다
:set nonu nu를 설정하고 반대로 줄 번호를 취소하세요!

vi/vim에서는 숫자가 매우 의미가 있다는 점에 특히 유의하세요! 숫자는 일반적으로 그것이 의미하는 반복 횟수를 나타냅니다! 또한 어느 번호로 가야 할지 등을 의미할 수도 있습니다.

예를 들어 행 50개를 삭제하려면 "50dd"를 사용하면 되겠죠? 작업 전에 숫자가 추가됩니다. 20행 아래로 이동하려면 어떻게 해야 합니까? 그것은 "20j"또는 "20↓"입니다.