vi 입력 명령
vi 파일 이름: 새 파일을 열거나 만들고 첫 번째 줄의 시작 부분에 커서를 놓습니다.
vi +n 파일 이름: 파일을 열고 커서를 파일의 시작 부분에 놓습니다. n번째 줄
vi + 파일 이름: 파일을 열고 마지막 줄의 시작 부분에 커서를 놓습니다.
vi +/pattern 파일 이름: 파일을 열고 패턴과 일치하는 첫 번째 문자열에 커서를 놓습니다.
vi - r 파일 이름: 지난번에 vi로 편집할 때 시스템이 충돌했습니다. 복원 파일 이름
vi 파일 이름....파일 이름: 여러 파일을 열고 순차적으로 편집
커서 이동 명령
h: 이동 커서를 왼쪽으로 한 글자
l: 커서를 오른쪽으로 한 글자 이동
space: 커서를 오른쪽으로 한 글자 이동
백스페이스: 커서를 왼쪽으로 한 글자 이동
k 또는 Ctrl +p: 커서를 한 줄 위로 이동
j 또는 Ctrl+n: 커서를 한 줄 아래로 이동
Enter: 커서를 한 줄 아래로 이동
w 또는 W: 커서를 한 단어 오른쪽으로 이동 단어의 시작으로
b 또는 B: 커서를 한 단어 왼쪽으로 시작으로 이동합니다.
e 또는 E: 커서를 단어의 끝으로 한 단어 오른쪽으로 이동합니다.
): 문장 끝으로 커서 이동
(: 문장 시작 부분으로 커서 이동
}: 문단 시작 부분으로 커서 이동
{: 문단 끝 부분으로 커서 이동
nG: 커서가 n 줄의 시작 부분으로 이동
n+: 커서가 n 줄 아래로 이동
n-: 커서가 n 줄 위로 이동
n$: 커서가 n 줄의 끝으로 이동 n
H: 커서가 화면의 맨 윗줄로 이동합니다.
M: 커서가 화면의 가운데 줄로 이동합니다.
L: 커서가 화면의 마지막 줄로 이동합니다.
0 : (숫자 0임) 커서가 현재 줄의 시작 부분으로 이동
$: 커서를 현재 줄의 끝으로 이동
화면 스크롤 명령
Ctrl+u: 파일의 시작 부분으로 반 화면 스크롤
Ctrl+d: 파일의 끝으로 반 화면 스크롤
Ctrl+ f: 파일의 끝으로 한 화면 스크롤
Ctrl+b; 한 화면에서 파일 시작 부분까지
nz: n번째 줄을 화면 상단으로 스크롤합니다. n이 지정되지 않은 경우 현재 줄을 화면 상단으로 스크롤합니다. >텍스트 명령 삽입
i: 커서 앞
I: 현재 줄의 시작 부분
a: 커서 뒤
A: 현재 줄의 끝
o: 현재 줄 아래 열기
O: 현재 줄 위에 새 줄 열기
r: 현재 문자 바꾸기
R: ESC 키를 누를 때까지 현재 문자와 그 뒤의 문자 바꾸기
s: 현재 커서 위치부터 시작 지정된 문자 수를 입력된 텍스트로 대체
S: 지정된 행 수를 삭제하고 입력된 텍스트로 대체
ncw 또는 nCW: 지정된 문자 수 수정
nCC: 지정된 문자 수정 문자 수 라인
삭제 명령
ndw 또는 ndW: 커서에서 시작하여 그 뒤에 오는 n-1 문자를 삭제합니다.
do: 라인의 시작 부분까지 삭제
d$: 줄 끝까지 삭제
ndd: 현재 줄과 그 뒤의 n-1 줄 삭제
x 또는 X: 한 문자 삭제, x는 커서 뒤의 문자 삭제 및 텍스트
검색 및 바꾸기 명령
/pattern: 커서 시작부터 파일 끝까지 패턴 검색
?pattern: 커서 시작부터 파일 시작까지 패턴 검색
n : 같은 방향으로 반복 마지막 검색 명령
N: 마지막 검색 명령을 반대 방향으로 반복
: s/p1/p2/g: 현재 행의 모든 p1을 p2로 대체
: n1, n2s/p1/p2 /g: n1~n2 행의 모든 p1을 p2로 대체
: g/p1/s//p2/g: 파일의 모든 p1을 p2로 대체
옵션 설정
all: 모든 옵션 설정 나열
term: 터미널 유형 설정
ignorance: 검색 시 대소문자 무시
list: 탭 정지(Ctrl+I) 및 줄 끝 표시($) 표시
number: 줄 번호 표시
report: 줄 중심 명령으로 수정된 번호 표시
terse: 간단한 경고 메시지 표시
warn: 다른 파일로 전환할 때 현재 파일이 저장되지 않는 경우 표시 정보 쓰기 없음
nomagic: 검색 모드 앞에 "" 없이 특수 문자 사용을 허용합니다.
nowrapscan: 검색이 파일의 양쪽 끝에 도달하면 vi가 다른 쪽 끝에서 시작하는 것을 금지합니다.
mesg: vi는 write
마지막 줄 명령
: n1, n2 co n3: n1~n2 줄 사이의 내용을 n3 줄
을 사용하여 다른 사용자가 자신의 터미널에 작성한 정보를 표시합니다. n1, n2 m n3: n1~n2 행 사이의 내용을 n3 행의 맨 아래로 이동
: n1, n2 d: n1~n2 행 사이의 내용 삭제
: w: 현재 파일 저장
: e filename: 편집할 파일 이름 열기
: x: 현재 파일을 저장하고 종료
: q: vi 종료
: q!: 파일을 저장하지 않고 vi 종료
:!command: 쉘 명령 명령
실행: n1, n2 w!command: 파일의 n1 ~ n2 행의 내용을 명령의 입력으로 사용하여 실행합니다. n1, n2가 지정되지 않은 경우. 전체 파일 내용은 명령의 입력으로 사용됩니다.
: r!command: 명령 명령의 출력을 현재 줄에 넣습니다.
작업 등록
"?nyy: 현재 명령의 내용을 저장합니다. 라인과 그 아래 n 라인 레지스터에? , 여기서 ?는 문자, n은 숫자
"?nyw: 현재 줄과 다음 n 단어를 레지스터에 저장합니까?, 여기서 ?는 문자, n은 숫자
"?nyl: 현재 행과 다음 n자를 레지스터에 저장합니까?, 어디에서 ?는 문자이고 n은 숫자
"?p: 레지스터를 꺼내나요? 그리고 커서 위치에 놓습니다. 여기? 문자나 숫자일 수 있습니다.
ndd: 현재 줄과 그 아래 n줄의 텍스트를 삭제하고, 삭제된 내용을 삭제 레지스터 1번에 넣습니다.
VI 사용
------------------------- --- ----------------
1. 텍스트 삽입
┌──┬────────────┐
│명령│설명│
├──┼───────── ───┤
│i │현재 문자 앞에 텍스트 삽입│
├──┼────────────┤
│I │문자 앞에 텍스트 삽입 line│
├─ ─┼────────────┤
│a │현재 문자 뒤에 텍스트 추가│
├──┼──────── ────┤
A ────────────┤
│O │현재 줄 앞에 빈 줄 삽입 │
├──┼────── ──────┤
│R │다시 쓰기 모드에서 텍스트 입력│
└──┴────────────┘
커서 이동
2. ┌─────┬──── ───────┐
│명령│설명│
├─────┼───────────┤
│j 또는 아래쪽 화살표│아래로 한 줄 이동│
├─────┼──────────┤
│k 또는 위쪽 화살표│한 줄 위로 이동│
├──────┼─── ────────┤
│h 또는 왼쪽 화살표│왼쪽으로 한 문자 이동│
├─────┼───── ──────┤
│l 또는 오른쪽 화살표 │한 문자 오른쪽으로 이동│
├─────┼───────────┤
│w │한 단어 오른쪽으로 이동│
├──── ─┼───────────┤
│W │공백으로 구분하여 오른쪽으로 한 단어 이동│
├─ ────┼─────────── ┤
│b │한 단어 왼쪽으로 이동│
├─────┼────────── ─┤
│B │한 단어를 공백으로 구분하여 왼쪽으로 이동│
├─────┼───────────┤
│0 │처음으로 이동 줄│
│Ctrl-F │페이지 앞으로│
├─ ────┼──────────┤
│Ctrl-B │페이지 뒤로│
├ ─────┼────────── ─┤
│nG │n번째 줄로│
├─────┼──────────┤
│G │마지막 줄│
└─ ────┴──────────┘
대체 텍스트
┌─────┬ ──────┐
│명령│설명│
├─────┼──────┤
│$ │줄 끝까지│
├─ ────┼──────┤
│( │To 문장 시작 부분│
├─────┼──────┤
│) │To 문장 끝│
├────┼───────┤
4. 텍스트 삭제
┌───┬── ────────┐
│명령│설명│
├─── ┼───────────┤
│r │문자 바꾸기│
├───┼───────────┤
│c │Esc를 누를 때까지 텍스트 수정│
├───┼──────────┤
│cw │다음 단어 수정│
├───┼──── ───────┤
│cnw │다음 n 단어 수정│
└───┴ ────────────┘
5. 텍스트 편집
┌──┬────────────────────┐
│밍지│설명│
├──┼─────── ─── ───────────┤
│yy │한 줄의 텍스트를 기본 버퍼로 이동│
├──┼────────── ───── ───────┤
│yn │다음 단어를 기본 버퍼로 이동│
├──┼──────────── ──────── ──┤
│ynw │다음 n 단어를 기본 버퍼로 이동│
├──┼──────────── ──────────┤
│p │기본 버퍼에 텍스트 줄이 포함된 경우 현재 │
│ │ 줄 뒤에 빈 줄을 삽입하고 기본 버퍼의 텍스트를 바꿉니다. 사운드 │
│ │를 이 줄에 붙여넣습니다. 기본 버퍼에 여러 단어 │
│ │가 포함된 경우 해당 단어를 커서 오른쪽에 붙여넣습니다. │
├──┼──────────────────────┤
│P │기본 버퍼에 텍스트 줄이 포함된 경우 현재 │
│ │줄 앞에 빈 줄을 삽입하고 기본 버퍼의 내용 │
│ │을 이 줄에 붙여넣습니다. 기본 버퍼에 │
│ │여러 단어가 포함되어 있으면 이 단어를 왼쪽에 붙여넣습니다. 커서
│
└──┴───────────────────────┘
Six , 저장하고 종료
┌───────────┬─────────────┐
│명령│설명│
├─── ───── ───┼──────────────┤
│zz │저장하고 나가기│
├─────────── ┼──── ───────────┤
│:w 파일명 │파일 쓰기│
├──────────┼───── ────── ────┤
│:W │파일 쓰기│
├───────────┼──────────── ───┤
│:x │저장하고(현재 파일이 수정된 경우) 종료│
├───────────┼──────────── ───┤
│:q! │파일을 저장하지 않고 바로 나가기│
├─────────┼────────────── ┤ │ 여러 세트가 있습니다 , 그리고 많은 사람들이 이 방법에 익숙하지 않습니다. 사실, 기본적인 명령만 숙지하고 유연하게 사용하면 이 방법의 장점을 발견하고 점차적으로 이 방법을 사용하게 될 것입니다. 이 문서에서는 가장 일반적으로 사용되는 명령과 VI의 고급 응용 기술을 소개하는 것을 목표로 합니다.
1. 기본 명령어 소개
--- 1. 커서 명령
k, j, h, l - 상하좌우 커서 이동 명령입니다. Linux에서는 키보드 오른쪽에 있는 4개의 커서 키를 사용할 수 있지만 이 4개의 명령을 기억하는 것은 여전히 매우 유용합니다. 이 4개의 키는 키보드에서 오른손의 기본 위치입니다.
nG——점프 명령. n은 줄 수입니다. 이 명령은 커서를 지정된 줄로 즉시 이동합니다.
Ctrl+G - 커서 위치의 행과 열 수를 보고합니다.
w, b - 커서가 한 단어를 앞으로 또는 뒤로 건너뛰도록 합니다.
---- 2. 명령 편집
i, a, r - 커서 앞, 뒤, 위치에 문자 명령을 삽입합니다(i=삽입, a=추가, r=교체).
cw, dw - 커서 위치의 단어를 변경(교체)/삭제하는 명령입니다(c=변경, d=삭제).
x, d$, dd - 한 문자를 삭제하고, 커서부터 줄 끝까지의 모든 문자를 삭제하고, 줄 전체를 삭제하는 명령입니다.
---- 3. 검색 명령
----/string,?string——커서 위치를 기준으로 앞뒤로 해당 문자열을 검색하는 명령입니다.
---- 4. 복사 명령
---- yy, p - 한 줄을 클립보드에 복사하거나 클립보드의 내용을 제거하는 명령입니다.
2. 자주 묻는 질문 및 지원요령
--- 1. 새 파일에서 /etc/passwd의 내용을 읽고 사용자 이름 부분을 추출합니다.
---- vi 파일
---- :r /etc/passwd 열린 파일 파일에서 커서 위치의 /etc/passwd 읽기
---- :%s/:.*//g /etc/passwd에서 사용자 이름 뒤의 콜론부터 줄 끝까지의 모든 부분을 삭제합니다.
---- 지정된 줄 번호 이후의 파일 내용을 읽을 수도 있습니다. 예를 들어 ":3r /etc/passwd" 명령을 사용하면 /etc/passwd의 세 번째 줄부터 모든 내용을 읽을 수 있습니다. 새 파일.
---- 다음 방법을 사용하여 파일에서 #으로 시작하는 모든 빈 줄과 주석 줄을 삭제할 수도 있습니다.
---- #cat squid.conf.default | grep -v ^$ | grep -v ^#
---- 2. 편집을 위해 파일을 연 후, 로그인한 사용자에게 파일에 대한 쓰기 권한이 없어 변경 사항을 임시 파일에 저장해야 한다는 사실을 알게 되었습니다.
---- vi 파일
---- :w /tmp/1 모든 변경 사항을 저장합니다. 변경 사항 중 일부를 임시 파일에 저장할 수도 있습니다(예: 20~59행). 사이의 내용은 /tmp/1 파일에 저장됩니다. 다음 명령을 입력할 수 있습니다.
---- vi 파일
---- :20,59w /tmp/1
---- 3. VI를 사용하여 파일을 편집하지만 내용의 상당 부분을 삭제해야 합니다.
---- 먼저 편집 명령 "vi file"을 사용하여 파일을 연 다음 삭제해야 할 줄로 커서를 이동하고 Ctrl+G를 눌러 줄 번호를 표시한 다음 Ctrl+G를 눌러 줄 번호를 표시합니다. 파일 끝 부분에 줄 번호를 표시합니다.
---- :23,1045d 두 번 얻은 줄 번호가 23과 1045라고 가정하고, 이 기간 동안 모든 내용을 삭제하려면 ma 및 mb 명령을 사용하여 시작 줄과 끝 줄을 표시할 수도 있습니다. 삭제한 후 ":a,bd" 명령을 사용하여 삭제하세요.
---- 4. 전체 파일의 각 줄 또는 일부 줄의 시작이나 끝 부분에 일부 문자열을 추가합니다.
---- vi 파일
---- :3,$s/^/some string / 파일의 첫 줄부터 마지막 줄까지 "some string"을 삽입합니다.
---- :%s/$/some string/g 전체 파일의 각 줄 끝에 "some string"을 추가하세요.
---- :%s/string1/string2/g 전체 파일에서 "string1"을 "string2"로 바꿉니다.
---- :3,7s/string1/string2/ 파일의 3~7번째 줄에 있는 "string1"만 "string2"로 바꿉니다.
---- 참고: s는 대체, %는 모든 행, g는 전역을 나타냅니다.
---- 5. 2개의 파일을 동시에 편집하고 한 파일의 텍스트를 복사하여 다른 파일에 붙여넣습니다.
---- vi file1 file2
---- yy 파일 1의 커서 위치에 줄을 복사합니다
---- :n 파일 2로 전환 (n=next)
-- -- p 복사한 줄을 파일 2의 커서 위치에 붙여넣기
---- :n 파일 1로 다시 전환
---- 6. 파일의 경로를 바꾸십시오.
---- ":%s#/usr/bin#/bin#g" 명령을 사용하여 파일의 모든 경로 /usr/bin을 /bin으로 바꿉니다. ":%s//usr/bin//bin/g" 명령을 사용할 수도 있습니다. 여기서 ""는 이스케이프 문자로, 다음 "/" 문자는 구분 기호가 아니라 실제 의미가 있는 문자임을 나타냅니다.