Unix / Linux-vi 편집기 튜토리얼
이 장에서는 Unix에서 vi 편집기가 작동하는 방식을 이해합니다. Unix에서 파일을 편집하는 방법은 여러 가지가 있습니다. 화면 지향 텍스트 편집기를 사용하여 파일 편집vi가장 좋은 방법 중 하나입니다. 이 편집기를 사용하면 파일의 다른 행과 컨텍스트에서 행을 편집 할 수 있습니다.
vi 편집기의 개선 된 버전은 VIM현재 사용 가능합니다. 여기서 VIM은Vi IM증명되었습니다.
vi는 일반적으로 Unix 편집기에서 사실상의 표준으로 간주됩니다.
일반적으로 모든 유닉스 시스템에서 사용할 수 있습니다.
구현은 전반적으로 매우 유사합니다.
리소스가 거의 필요하지 않습니다.
같은 다른 편집자보다 사용자 친화적입니다. ed 아니면 그 ex.
당신은 사용할 수 있습니다 vi편집기를 사용하여 기존 파일을 편집하거나 처음부터 새 파일을 만듭니다. 이 편집기를 사용하여 텍스트 파일을 읽을 수도 있습니다.
vi 편집기 시작
다음 표는 vi 편집기를 사용하는 기본 명령을 나열합니다.
Sr. 아니. | 명령 및 설명 |
---|---|
1 | vi filename 새 파일이 없으면 새로 작성하고, 그렇지 않으면 기존 파일을 엽니 다. |
2 | vi -R filename 읽기 전용 모드로 기존 파일을 엽니 다. |
삼 | view filename 읽기 전용 모드로 기존 파일을 엽니 다. |
다음은 새 파일을 만드는 예입니다. testfile 현재 작업 디렉토리에 이미 존재하지 않는 경우-
$vi testfile
위의 명령은 다음 출력을 생성합니다-
|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]
당신은 tilde(~) 커서 뒤의 각 줄에. 물결표는 사용되지 않은 선을 나타냅니다. 줄이 물결표로 시작하지 않고 공백으로 표시되면 공백, 탭, 줄 바꿈 또는 기타 볼 수없는 문자가있는 것입니다.
이제 작업을 시작할 하나의 열린 파일이 있습니다. 계속 진행하기 전에 몇 가지 중요한 개념을 이해하겠습니다.
작동 모드
vi 편집기로 작업하는 동안 일반적으로 다음 두 가지 모드가 있습니다.
Command mode−이 모드를 사용하면 파일 저장, 명령 실행, 커서 이동, 줄 또는 단어 잘라 내기 (뒤집기) 및 붙여 넣기, 찾기 및 바꾸기와 같은 관리 작업을 수행 할 수 있습니다. 이 모드에서는 입력하는 모든 내용이 명령으로 해석됩니다.
Insert mode−이 모드에서는 파일에 텍스트를 삽입 할 수 있습니다. 이 모드에서 입력 된 모든 내용은 입력으로 해석되어 파일에 배치됩니다.
vi는 항상 command mode. 텍스트를 입력하려면 단순히 입력하는 삽입 모드에 있어야합니다.i. 삽입 모드에서 나오려면Esc 키를 누르면 명령 모드로 돌아갑니다.
Hint− 현재 모드가 확실하지 않은 경우 Esc 키를 두 번 누릅니다. 명령 모드로 이동합니다. vi 편집기를 사용하여 파일을 엽니 다. 일부 문자를 입력하여 시작한 다음 명령 모드로 이동하여 차이점을 이해하십시오.
vi에서 벗어나기
vi를 종료하는 명령은 다음과 같습니다. :q. 명령 모드에서 콜론과 'q'를 입력 한 다음 리턴을 입력하십시오. 파일이 어떤 식 으로든 수정 된 경우 편집기는이를 경고하고 종료 할 수 없습니다. 이 메시지를 무시하려면 저장하지 않고 vi를 종료하는 명령은 다음과 같습니다.:q!. 이렇게하면 변경 사항을 저장하지 않고 vi를 종료 할 수 있습니다.
편집기의 내용을 저장하는 명령은 다음과 같습니다. :w. 위의 명령을 quit 명령과 결합하거나:wq 반환합니다.
가장 쉬운 방법 save your changes and exit viZZ 명령을 사용합니다. 명령 모드에있을 때 다음을 입력합니다.ZZ. 그만큼ZZ 명령은 :wq 명령.
파일의 특정 이름을 지정 / 설명하려면 다음을 지정하여 지정할 수 있습니다. :w. 예를 들어, 작업 중이던 파일을 저장하려면filename2, 당신은 입력합니다 :w filename2 반환합니다.
파일 내에서 이동
텍스트에 영향을주지 않고 파일 내에서 이동하려면 명령 모드에 있어야합니다 (Esc를 두 번 누름). 다음 표는 한 번에 한 문자를 이동하는 데 사용할 수있는 몇 가지 명령을 나열합니다.
Sr. 아니. | 명령 및 설명 |
---|---|
1 | k 커서를 한 줄 위로 이동합니다. |
2 | j 커서를 한 줄 아래로 이동합니다. |
삼 | h 커서를 왼쪽 한 문자 위치로 이동합니다. |
4 | l 커서를 오른쪽 한 문자 위치로 이동합니다. |
파일 내에서 이동하려면 다음 사항을 고려해야합니다.
vi는 대소 문자를 구분합니다. 명령을 사용할 때 대소 문자에주의해야합니다.
vi의 대부분의 명령 앞에는 작업을 수행 할 횟수가 올 수 있습니다. 예를 들면2j 커서를 커서 위치에서 두 줄 아래로 이동합니다.
vi에서 파일 내에서 이동하는 다른 방법이 많이 있습니다. 명령 모드 (press Esc twice). 다음 표는 파일을 이동하는 몇 가지 명령을 나열합니다.
Sr. 아니. | 명령 및 설명 |
---|---|
1 | 0 or | 줄의 시작 부분에 커서를 놓습니다. |
2 | $ 줄 끝에 커서를 놓습니다. |
삼 | w 커서를 다음 단어로 이동 |
4 | b 커서를 이전 단어로 이동 |
5 | ( 현재 문장의 시작 부분에 커서를 놓습니다. |
6 | ) 다음 문장의 시작 부분에 커서를 놓습니다. |
7 | E 공백으로 구분 된 단어의 끝으로 이동합니다. |
8 | { 단락을 뒤로 이동 |
9 | } 단락을 앞으로 이동 |
10 | [[ 섹션을 뒤로 이동 |
11 | ]] 섹션을 앞으로 이동합니다. |
12 | n| 열로 이동 n 현재 줄에서 |
13 | 1G 파일의 첫 번째 줄로 이동합니다. |
14 | G 파일의 마지막 줄로 이동합니다. |
15 | nG 로 이동 nth 파일 줄 |
16 | :n 로 이동 nth 파일 줄 |
17 | fc 앞으로 이동 c |
18 | Fc 다시 이동 c |
19 | H 화면 상단으로 이동 |
20 | nH 로 이동 nth 화면 상단에서 선 |
21 | M 화면 중앙으로 이동 |
22 | L 화면 하단으로 이동 |
23 | nL 로 이동 nth 화면 하단에서 선 |
24 | :x 콜론과 숫자는 다음과 같이 표시되는 줄 번호에 커서를 놓습니다. x |
제어 명령
제어 키와 함께 다음 명령을 사용하여 아래 표에 나와있는 기능을 수행 할 수 있습니다.
Sr. 아니. | 명령 및 설명 |
---|---|
1 | CTRL+d 1/2 화면 앞으로 이동 |
2 | CTRL+f 하나의 전체 화면 앞으로 이동 |
삼 | CTRL+u 1/2 화면 뒤로 이동 |
4 | CTRL+b 한 화면 뒤로 이동 |
5 | CTRL+e 화면을 한 줄 위로 이동 |
6 | CTRL+y 화면을 한 줄 아래로 이동 |
7 | CTRL+u 화면을 1/2 페이지 위로 이동 |
8 | CTRL+d 화면을 1/2 페이지 아래로 이동 |
9 | CTRL+b 화면을 한 페이지 위로 이동 |
10 | CTRL+f 화면을 한 페이지 아래로 이동 |
11 | CTRL+I 화면을 다시 그립니다 |
파일 편집
파일을 편집하려면 삽입 모드에 있어야합니다. 명령 모드에서 삽입 모드로 들어가는 방법은 여러 가지가 있습니다.
Sr. 아니. | 명령 및 설명 |
---|---|
1 | i 현재 커서 위치 앞에 텍스트를 삽입합니다. |
2 | I 현재 줄의 시작 부분에 텍스트를 삽입합니다. |
삼 | a 현재 커서 위치 뒤에 텍스트를 삽입합니다. |
4 | A 현재 줄 끝에 텍스트를 삽입합니다. |
5 | o 커서 위치 아래에 텍스트 입력을위한 새 줄을 만듭니다. |
6 | O 커서 위치 위에 텍스트 입력을위한 새 줄을 만듭니다. |
캐릭터 삭제
다음은 열린 파일에서 문자와 줄을 삭제하는 데 사용할 수있는 중요한 명령 목록입니다.
Sr. 아니. | 명령 및 설명 |
---|---|
1 | x 커서 위치 아래의 문자를 삭제합니다. |
2 | X 커서 위치 앞의 문자를 삭제합니다. |
삼 | dw 현재 커서 위치에서 다음 단어로 삭제합니다. |
4 | d^ 현재 커서 위치에서 줄의 시작 부분까지 삭제합니다. |
5 | d$ 현재 커서 위치에서 줄 끝까지 삭제 |
6 | D 커서 위치에서 현재 줄의 끝까지 삭제 |
7 | dd 커서가있는 줄을 삭제합니다. |
위에서 언급했듯이 vi의 대부분의 명령 앞에는 작업을 수행 할 횟수가 올 수 있습니다. 예를 들면2x 커서 위치 아래에있는 두 문자를 삭제하고 2dd 커서가있는 두 줄을 삭제합니다.
계속 진행하기 전에 명령을 연습하는 것이 좋습니다.
변경 명령
또한 vi에서 문자, 단어 또는 행을 삭제하지 않고 변경할 수 있습니다. 다음은 관련 명령입니다.
Sr. 아니. | 명령 및 설명 |
---|---|
1 | cc 행의 내용을 제거하고 삽입 모드로 둡니다. |
2 | cw 커서가있는 단어를 커서에서 소문자로 변경합니다. w 단어의 끝. |
삼 | r 커서 아래의 문자를 바꿉니다. vi는 교체가 입력 된 후 명령 모드로 돌아갑니다. |
4 | R 현재 커서 아래에있는 문자로 시작하는 여러 문자를 덮어 씁니다. 당신은 사용해야합니다Esc 덮어 쓰기를 중지합니다. |
5 | s 현재 문자를 입력 한 문자로 바꿉니다. 그 후에는 삽입 모드로 남아 있습니다. |
6 | S 커서가있는 줄을 삭제하고 새 텍스트로 바꿉니다. 새 텍스트를 입력 한 후 vi는 삽입 모드로 유지됩니다. |
복사 및 붙여 넣기 명령
한 위치에서 줄이나 단어를 복사 한 다음 다음 명령을 사용하여 다른 위치에 붙여 넣을 수 있습니다.
Sr. 아니. | 명령 및 설명 |
---|---|
1 | yy 현재 줄을 복사합니다. |
2 | yw 소문자 w 커서가있는 문자에서 단어의 끝까지 현재 단어를 복사합니다. |
삼 | p 복사 된 텍스트를 커서 뒤에 놓습니다. |
4 | P 잡아 당기는 텍스트를 커서 앞에 놓습니다. |
고급 명령
일상적인 편집을 단순화하고 vi를보다 효율적으로 사용할 수있는 몇 가지 고급 명령이 있습니다.
Sr. 아니. | 명령 및 설명 |
---|---|
1 | J 현재 줄을 다음 줄과 결합합니다. j 개의 명령이 여러 줄을 연결합니다. |
2 | << 현재 행을 한 시프트 너비만큼 왼쪽으로 이동합니다. |
삼 | >> 현재 행을 한 시프트 너비만큼 오른쪽으로 이동합니다. |
4 | ~ 커서 아래에있는 문자의 대소 문자를 전환합니다. |
5 | ^G Ctrl과 G 키를 동시에 눌러 현재 파일 이름과 상태를 표시합니다. |
6 | U 현재 행을 커서가 행에 들어가기 전의 상태로 복원합니다. |
7 | u 이렇게하면 파일에서 수행 된 마지막 변경을 취소하는 데 도움이됩니다. 'u'를 다시 입력하면 변경 사항이 다시 적용됩니다. |
8 | J 현재 줄을 다음 줄과 결합합니다. 카운트는 많은 줄을 연결합니다. |
9 | :f 파일의 현재 위치를 %로 표시하고 파일 이름, 총 파일 수를 표시합니다. |
10 | :f filename 현재 파일의 이름을 filename으로 바꿉니다. |
11 | :w filename 파일 filename에 씁니다. |
12 | :e filename 파일 이름으로 다른 파일을 엽니 다. |
13 | :cd dirname 현재 작업 디렉토리를 dirname으로 변경합니다. |
14 | :e # 열려있는 두 파일 사이를 전환합니다. |
15 | :n vi를 사용하여 여러 파일을 여는 경우 :n 시리즈의 다음 파일로 이동합니다. |
16 | :p vi를 사용하여 여러 파일을 여는 경우 :p 시리즈의 이전 파일로 이동합니다. |
17 | :N vi를 사용하여 여러 파일을 여는 경우 :N 시리즈의 이전 파일로 이동합니다. |
18 | :r file 파일을 읽고 현재 줄 뒤에 삽입합니다. |
19 | :nr file 파일을 읽고 줄 뒤에 삽입합니다. n. |
단어 및 문자 검색
vi 편집기에는 두 가지 종류의 검색이 있습니다. string 과 character. 문자열 검색의 경우/ 과 ?명령이 사용됩니다. 이러한 명령을 시작하면 방금 입력 한 명령이 검색 할 특정 문자열을 입력하는 화면의 마지막 줄에 표시됩니다.
이 두 명령은 검색이 수행되는 방향에서만 다릅니다.
그만큼 / 명령은 파일에서 앞으로 (아래로) 검색합니다.
그만큼 ? 명령은 파일에서 뒤로 (위로) 검색합니다.
그만큼 n 과 N명령은 각각 동일한 또는 반대 방향으로 이전 검색 명령을 반복합니다. 일부 문자에는 특별한 의미가 있습니다. 이러한 문자 앞에는 백 슬래시 (\)이 검색 표현식의 일부로 포함됩니다.
Sr. 아니. | 캐릭터 및 설명 |
---|---|
1 | ^ 줄의 시작 부분에서 검색합니다 (검색 식의 시작 부분에 사용). |
2 | . 단일 문자와 일치합니다. |
삼 | * 0 개 이상의 이전 문자와 일치합니다. |
4 | $ 줄 끝 (검색 표현식의 끝에 사용). |
5 | [ 일치하거나 일치하지 않는 표현식 세트를 시작합니다. |
6 | < 이것은 단어의 끝 또는 시작을 찾기 위해 백 슬래시로 이스케이프 된 표현식에 입력됩니다. |
7 | > 이것은 '<'문자 설명. |
문자 검색은 한 줄 내에서 검색하여 명령 뒤에 입력 된 문자를 찾습니다. 그만큼f 과 F 명령은 현재 줄에서만 문자를 검색합니다. f 앞으로 검색하고 F 뒤로 검색하고 커서가 찾은 문자의 위치로 이동합니다.
그만큼 t 과 T 명령은 현재 줄에서만 문자를 검색하지만 t, 커서가 문자 앞의 위치로 이동하고 T 문자 뒤의 위치로 줄을 뒤로 검색합니다.
명령 설정
다음을 사용하여 vi 화면의 모양과 느낌을 변경할 수 있습니다. :set명령. 명령 모드에 있으면 다음을 입력하십시오.:set 다음 명령 중 하나가 뒤 따릅니다.
Sr. 아니. | 명령 및 설명 |
---|---|
1 | :set ic 검색시 대소 문자를 무시합니다. |
2 | :set ai 자동 들여 쓰기 설정 |
삼 | :set noai 자동 들여 쓰기 설정 해제 |
4 | :set nu 왼쪽에 줄 번호가있는 줄을 표시합니다. |
5 | :set sw 소프트웨어 탭 스톱의 너비를 설정합니다. 예를 들어 다음 명령을 사용하여 이동 폭을 4로 설정합니다.:set sw = 4 |
6 | :set ws 경우 wrapscan가 설정되고, 단어가 파일의 맨 아래에 발견되지 않는, 그것은 처음에 검색을 시도 할 것이다 |
7 | :set wm 이 옵션의 값이 0보다 큰 경우 편집기는 자동으로 "단어 줄 바꿈"합니다. 예를 들어 줄 바꿈 여백을 두 문자로 설정하려면 다음을 입력합니다.:set wm = 2 |
8 | :set ro 파일 유형을 "읽기 전용"으로 변경 |
9 | :set term 터미널 유형을 인쇄합니다. |
10 | :set bf 입력에서 제어 문자를 버립니다. |
명령 실행
vi에는 편집기 내에서 명령을 실행할 수있는 기능이 있습니다. 명령을 실행하려면 명령 모드로 이동하여 다음을 입력하기 만하면됩니다.:! 명령.
예를 들어, 해당 파일 이름으로 파일을 저장하기 전에 파일이 있는지 확인하려면 다음을 입력 할 수 있습니다. :! ls 그리고 당신은 출력을 볼 수 있습니다 ls 화면에.
임의의 키 (또는 명령의 이스케이프 시퀀스)를 눌러 vi 세션으로 돌아갈 수 있습니다.
텍스트 바꾸기
대체 명령 (:s/)를 사용하면 파일 내에서 단어 또는 단어 그룹을 빠르게 바꿀 수 있습니다. 다음은 텍스트를 대체하는 구문입니다-
:s/search/replace/g
그만큼 g전 세계를 상징합니다. 이 명령의 결과로 커서 행의 모든 항목이 변경됩니다.
참고할 중요 사항
다음 사항은 vi로 성공에 추가됩니다-
명령을 사용하려면 명령 모드에 있어야합니다. (명령 모드에 있는지 확인하려면 언제든지 Esc를 두 번 누르십시오.)
명령에주의해야합니다. 대소 문자를 구분합니다.
텍스트를 입력하려면 삽입 모드에 있어야합니다.