리눅스 vi/vim
모든 Unix Like 시스템에는 vi 문서 편집기가 내장되어 있지만 다른 문서 편집기는 없을 수도 있습니다.
하지만 현재 우리는 vim 편집기를 더 많이 사용합니다.
vim에는 프로그램 편집 기능이 있어 글꼴 색상으로 문법의 정확성을 적극적으로 식별할 수 있어 프로그램 설계가 용이합니다.
관련 기사: 역사상 가장 완벽한 Vim 단축키 비트맵 - 초급부터 고급까지
vim이란 무엇인가요?
Vim은 vi에서 개발된 텍스트 편집기입니다. 특히 코드 완성, 컴파일, 에러 점프 등 프로그래밍을 용이하게 하는 기능이 풍부해 프로그래머들 사이에서 널리 사용되고 있다.
간단히 말하면 vi는 구식 워드 프로세서이지만 그 기능은 이미 매우 완벽하지만 아직 개선의 여지가 있습니다. vim은 프로그램 개발자에게 매우 유용한 도구라고 할 수 있습니다. vim의 공식 웹사이트(http://www.vim.org) 자체에서도 vim은 워드 프로세싱 소프트웨어가 아니라 프로그램 개발 도구라고 나와 있습니다.
vim 키보드 다이어그램:
vi/vim 사용
기본적으로 vi/vim은 일반 모드, 편집 모드, 명령줄 명령 모드의 세 가지 모드로 구분됩니다. 이 세 가지 모드의 기능은 다음과 같습니다:
일반 모드:
vi로 파일을 열면 곧바로 일반 모드(기본 모드)로 들어갑니다. 이 모드에서는 '상하좌우' 키를 이용해 커서를 이동할 수 있고, '문자 삭제'나 '전체 줄 삭제'를 이용해 파일 내용을 처리할 수 있다. "복사하여 붙여넣기"를 사용하여 파일 데이터를 처리할 수도 있습니다.편집 모드:
일반 모드에서는 삭제, 복사, 붙여넣기 등이 가능하지만, 파일 내용 편집은 불가능합니다! 『i,』를 누를 때까지 기다리세요. I, o, O, a, A, r, R 등은 문자 뒤에 편집 모드로 들어갑니다. 주목! 일반적으로 Linux에서는 이 키를 누르면 화면 왼쪽 하단에 "INSERT"가 나타납니다. 또는 REPLACE”를 입력한 후에만 편집할 수 있습니다. 그리고 일반 모드로 돌아가고 싶다면, 편집 모드를 종료하려면 "Esc" 버튼을 눌러야 합니다.명령줄 명령 모드:
일반 모드에서는 "를 입력합니다. : / ? ” 세 개의 버튼 중 하나를 사용하면 커서를 맨 아래 줄로 이동할 수 있습니다. 이 모델에서는 읽기, 저장, 많은 문자 바꾸기, 종료 등 "데이터 검색" 작업을 제공할 수 있습니다. vi의 동작, 줄 번호 표시 등이 이 모드에서 이루어집니다!
간단히 말하면 이 세 가지 모드를 아래 아이콘으로 생각하면 됩니다.
vi/vim 사용 예
vi/vim을 사용하여 일반 모드로 들어가세요
vi를 사용하여 파일을 생성하려는 경우 test.txt라는 이름을 사용하면 다음과 같이 할 수 있습니다:
[root@www ~]# vi test.txt
vi의 일반 모드로 들어가려면 vi 파일 이름 을 직접 입력하세요. 파일 존재 여부에 관계없이 vi 뒤에 파일 이름을 추가해야 한다는 점에 유의하세요!
i를 눌러 편집 모드로 들어가 텍스트 편집을 시작하세요
일반 모드에서 i, o, a 및 기타 문자를 누르면 편집 모드로 들어갑니다!
편집 모드에서는 왼쪽 하단의 상태 표시줄에 –INSERT-라는 단어가 나타나는 것을 볼 수 있는데, 이는 어떤 문자든 입력할 수 있다는 프롬프트입니다.
이때, [Esc]키를 제외한 키보드의 다른 모든 키는 일반 입력버튼으로 간주되어 어떠한 편집도 가능합니다.
일반 모드로 돌아가려면 [ESC] 버튼을 누르세요
자, 위 스타일대로 편집이 끝났다면 어떻게 종료해야 할까요? 예! 좋아요! 그냥 [Esc] 버튼을 눌러주세요! 즉시 화면 왼쪽 하단에 있는 – INSERT –가 없어진 것을 발견하게 될 것입니다!
일반 모드에서 :wq를 눌러 vi를 저장하고 나가세요
좋아요, 저장하겠습니다. 저장하고 나가는 명령은 매우 간단합니다. 저장하고 나가려면 ":wq"를 입력하세요!
이렇게 해서 test.txt 파일을 성공적으로 만들었습니다. 매우 간단하지 않습니까?
vi/vim 버튼 설명
위의 간단한 예에서 i, [Esc], :wq 외에도 vim에는 실제로 사용할 수 있는 버튼이 많이 있습니다.
1부: 일반 모드에서 사용할 수 있는 버튼 설명, 커서 이동, 복사 및 붙여넣기, 검색 및 바꾸기 등
커서 이동 방법 | |
---|---|
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 | 이 파일의 마지막 줄로 이동(일반적으로 사용됨) |
nG | n은 숫자입니다. 이 파일의 n번째 줄로 이동하세요. 예를 들어 20G는 이 파일의 20번째 위치로 이동됩니다. OK (:set nu와 함께 사용할 수 있음) |
gg | 이 파일의 첫 번째 줄로 이동하면 1G에 해당합니다! (일반적으로 사용됨) |
n<Enter> | n은 숫자입니다. 커서를 n줄 아래로 이동합니다(일반적으로 사용됨) |
검색 및 바꾸기 | |
/word | 커서 아래에서 word라는 문자열을 찾습니다. 예를 들어, 파일에서 vbird를 검색하려면 이 문자열에 대해 /vbird를 입력하면 됩니다! (자주 사용되는) |
?word | 커서 위에 word라는 문자열을 찾습니다. |
n | n은 영어 버튼입니다. 이전 검색을 반복하는 동작을 나타냅니다. 예를 들어, 문자열 vbird를 아래쪽으로 검색하기 위해 방금 /vbird를 실행했다면, n을 누른 후 다음 이름 vbird를 아래쪽으로 계속 검색할 것입니다. 끈. ?vbird가 실행되면 n을 누르면 vbird라는 문자열을 위쪽으로 계속 검색합니다! |
N | 이 N은 영어 버튼입니다. n과 정반대로 이전 검색 작업을 수행하는 것은 "역방향"입니다. 예를 들어, /vbird 다음에 N을 누르면 vbird를 검색하기 위한 "위"를 의미합니다. |
n 및 N과 함께 /word를 사용하면 매우 도움이 됩니다! 검색한 키워드 중 일부를 반복적으로 찾을 수 있습니다! | |
:n1,n2s/word1/word2/g | n1과 n2는 숫자입니다. 라인 n1과 n2 사이에서 문자열 word1을 찾아 문자열을 다음으로 바꿉니다.
단어 2! 예를 들어, 100행과 200행 사이에서 vbird를 검색하고 이를 VBIRD로 바꾸면 다음과 같습니다. 『:100,200s/vbird/VBIRD/g』. (일반적으로 사용됨) |
:1,$s/word1/word2/g | word1 문자열을 첫 번째 줄부터 마지막 줄까지 찾아 문자열을 다음으로 바꿉니다. 단어 2! (일반적으로 사용됨) |
:1,$s/word1/word2/gc | word1 문자열을 첫 번째 줄부터 마지막 줄까지 찾아 문자열을 다음으로 바꿉니다. 단어 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! | 파일 속성이 "읽기 전용"이면 강제로 파일을 씁니다. 다만, 쓸 수 있는지, 이는 여전히 파일에 대한 파일 권한과 관련이 있습니다! |
:q | Vi 종료 (일반적으로 사용되는) |
: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↓"입니다.