Vi의 세 가지 작동 모드
일반 모드, 명령 모드라고도 함
삽입 모드
명령줄(cmdline) 모드
Vi에 들어간 후 가장 먼저 들어가는 것은 일반 모드입니다. Vi는 편집 명령이 입력되기를 기다립니다. 즉, 이때 입력한 문자가 명령으로 해석됩니다.
일반 모드에서는 삽입 명령 i, 추가 명령 a, 열기 명령 o 등을 입력하여 삽입 모드로 들어갑니다. 삽입 모드에서 사용자가 입력한 모든 문자는 Vi에 의해 파일 내용으로 저장되고 화면에 표시됩니다. 텍스트 입력 중에 Esc 키를 누르면 일반 모드로 돌아갑니다.
일반 모드에서는 Ex 명령을 실행하려면 ? 및 /를 사용하고, 셸 명령을 호출하려면 !를 사용하세요. 마지막 명령 줄이 실행된 후 Vi는 자동으로 일반 모드로 돌아갑니다.
1. 일반 모드에서의 동작
삽입 모드 진입
i 커서 앞에 삽입 I 커서 행의 시작 부분에 삽입
a 커서 A 뒤에 삽입 커서 끝에 삽입
o 커서가 있는 줄 아래에 줄을 삽입하고 줄의 시작 부분에
O를 삽입합니다. 커서가 있는 줄 위에 줄을 삽입하고
을 삽입합니다.
커서 위치
G제목
nG n번째 줄의 시작으로 이동
n+ n줄 아래로 이동, 줄의 시작
n- n 줄 위로 이동, 줄 시작
n$ n 줄 아래로 이동(1은 이 줄을 나타냄), 줄 끝
0 줄 시작
$ 줄 끝
^ 줄의 첫 글자
h,j,k,l 왼쪽으로 이동, 아래로 이동, 위로 이동, 오른쪽으로 이동
H 현재 화면의 첫 번째 줄의 시작
M 화면에 표시된 파일의 중간 줄의 시작
L 현재 화면의 맨 아래 줄의 시작
바꾸고 삭제
rc 커서가 가리키는 문자를 c로 바꾸기
nrc c 사용 커서가 가리키는 처음 n개의 문자 바꾸기
x 커서 위치의 문자 삭제
nx 커서 위치부터 오른쪽으로 n개 문자 삭제
dw 커서가 단어 중간에 있는 경우 단어 위치부터 삭제 커서를 단어 끝까지 (단어 뒤에 여러 개의 공백과 탭 포함)
ndw 커서가 있는 단어부터 시작하여 n 단어를 삭제합니다. (첫 번째 단어는 커서가 있는 문자부터 삭제 시작합니다. )
db
ndd 到到到ded Line
d$ 현재 문자를 줄 끝까지 삭제
d0 이전 문자를 줄 처음까지 삭제
d, 왼쪽 화살표는 해당 줄을 삭제 커서의 이전 문자
d, 오른쪽 화살표는 커서의 문자
d를 삭제하고, 위쪽 화살표는 현재 줄과 이전 줄을 삭제합니다.
d, 아래쪽 화살표는 현재 줄과 다음 줄을 삭제합니다
복사하여 붙여넣기yy 현재 줄을 버퍼에 복사nyy 현재 시작 n 줄을 버퍼
yG 커서부터 마지막 라인까지를 버퍼 영역에 복사
y1G 커서부터 첫 번째 라인까지를 버퍼에 복사
y $ 커서 위치부터 줄 끝까지 복사
y0 커서의 이전 위치 줄 시작 부분까지 문자를 버퍼에 복사
p 내용 쓰기 커서 위치로 버퍼
문자열 검색/str str이 있는 곳으로 오른쪽으로 이동?str str이 있는 곳으로 왼쪽으로 이동
n 같은 방향으로 이동
N 반대 방향으로 이동
실행 취소 및 반복U 이전 오작동의 영향을 취소하거나 파일 에 대한 부적절한 작업. 방금 완료된 명령을 다시 실행합니다.
2. 명령줄 모드에서의 작업
줄 건너뛰기
:n n줄로 이동문자열 검색 및 바꾸기:/str/ 현재 위치에서 str이 있는 곳으로 오른쪽으로 이동
:?str? :/str/w 파일 到 到 :/str/w 파일 credcred. /str2/w 파일 str1부터 str2 끝까지의 내용을 파일 파일에 씁니다.
:s/str1/str2/ 발견된 첫 번째 str1을 str2
로 바꿉니다: s/str2/str2/g 모두 바꾸기 str1이 str2
와 함께 현재 줄에서 발견되었습니다:n1,n2s/str1/str2/g iety >
:1,.s/str1/str2/g 모든 str1을 라인 1에서 현재 라인으로 교체 with str2 모든 str1을 str2로 교체:%s/str1/str2/g 모든 str1을 str2로 교체하고 교체하기 전에 물어보세요 :12,23s/^/#/ 12~23행 앞에 #추가
:%s= *$== 줄 끝의 추가 공백을 모두 삭제
:g/^s*$/d 문자(공백 포함)가 포함되지 않은 빈 줄을 모두 삭제
텍스트 복사, 이동 및 삭제
:n1,n2 co n3 n1~n2 행을 n3 뒤에 복사
:n1,n2 m N3 이동 라인 N1에서 N2를 n3 의 뒷면으로 이동합니다. D는 현재 줄을 삭제합니다
: nd logue 🎜> : n1, n2 d 到 到 wealthune in 🎜>
: .,$d :/str1/, /str2/d loggene in us in in inedoid people | 관련 명령
:w 저장 현재 편집된 내용을 디스크
:w 파일에 저장 현재 편집된 내용이 파일
:n1,n2w 파일
셸 명령 실행
: !Cmd Cmd 명령의 입력입니다. 라인을 지정하지 않으면 파일 전체가 Cmd의 입력으로 사용됩니다.
:r !Cmd 명령 실행 결과를 다음 라인에 씁니다. 커서가 있는 줄(명령은 별칭일 수 없음)
Vi 환경 설정
:set autoindent 자동 들여쓰기
:set noautoindent 자동 들여쓰기 취소
:set number 파일 편집 시 행 번호 표시
:set nonumber
:자 세트 행 및 열 위치에 대한 생성
:set tabstop=value Set the 탭 문자를 표시할 공백 문자 수
:set Wrapmargin=value 디스플레이의 오른쪽 페이지 여백을 설정합니다. 입력이 설정된 페이지 여백에 들어가면 편집기가 자동으로 캐리지 리턴 및 줄 바꿈
:set
:set all 덕트 생성: 모두 설정 >Vi 종료:q 종료:qw 저장하고 종료:q! 저장하지 않고 종료