>php教程 >PHP开发 >Linux에서 vi 명령에 대한 자세한 설명

Linux에서 vi 명령에 대한 자세한 설명

高洛峰
高洛峰원래의
2016-12-12 16:29:131243검색

vi 명령에 대한 자세한 설명

vi 명령은 Unix에서 일반적으로 사용되는 중요한 명령으로, 전체 화면 모드에서 하나 이상의 파일을 편집할 수 있습니다. vi가 실행될 때 파일이 지정되지 않으면 vi 명령은 이름이 지정되지 않은 빈 작업 파일을 자동으로 생성합니다. 지정한 파일이 없으면 지정한 파일 이름으로 새 파일이 생성됩니다. 파일 수정 사항이 저장되지 않으면 vi 명령은 원본 파일의 내용을 변경하지 않습니다.

참고: vi 명령은 편집된 파일을 잠그지 않으므로 여러 사용자가 동시에 파일을 편집할 수 있으며 마지막으로 저장된 파일 버전이 유지됩니다.

다음은 vi 명령에서 사용하는 일부 옵션과 그 의미입니다.

 -c 하위 명령 지정된 파일을 편집하기 전에 먼저 지정된 명령 하위 명령을 실행합니다.

-r filename은 지정된 파일 filename을 복원합니다.

-R은 지정된 파일을 읽기 전용 모드로 편집기에 넣으므로 파일에 대한 수정 사항은 저장되지 않습니다.

  -y number 편집창의 크기를 수직선으로 설정합니다.

vi 편집의 세 가지 모드는 다음과 같습니다.

명령 모드는 vi에 들어갈 때의 모드입니다. 이 모드에서 사용자는 다양한 하위 명령을 입력하여 줄 삭제, 줄 붙여넣기, 다음 단어로 이동, 다른 줄로 이동 등과 같은 * 작업을 수행할 수 있습니다.

텍스트 입력 모드 이 모드에서는 줄의 내용을 수정하고 새 줄을 추가할 수 있습니다. 명령 모드에서 a, i, c를 입력하여 텍스트 입력 모드로 들어가고 Esc 키를 누르면 명령 모드로 돌아갑니다.

명령 항목 모드 이 모드에서는 하위 명령을 통해 더 많은 매개변수를 입력할 수 있습니다. 예를 들어, w 하위 명령에는 파일 이름 입력이 필요하고 "/" 하위 명령에는 검색어 입력이 필요합니다. 사용자는 Esc 키를 사용하여 명령 모드로 돌아갑니다.

자체 명령 모드에서는 다음과 같이 실행됩니다. 같은 줄로 이동하라는 자 명령입니다.

h 커서를 왼쪽으로 한 칸 이동합니다.

 l 커서를 오른쪽으로 한 칸 이동합니다.

  j 커서를 한 칸 아래로 이동합니다.

 k 커서를 한 칸 위로 이동합니다.

 w 다음 작은 문자 앞으로 커서를 이동합니다.

 W 다음 큰 문자 앞으로 커서를 이동합니다.

  b 이전 소문자 앞으로 커서를 이동합니다.

 B 이전 큰 문자 앞으로 커서를 이동합니다.

 e 커서를 다음 작은 문자 뒤로 이동합니다.

 E 이전 큰 문자 뒤로 커서를 이동합니다.

 fc 같은 줄의 다음 c 문자로 커서를 이동합니다.

 Fc 같은 줄의 이전 c 문자로 커서를 이동합니다.

 tc 같은 줄의 다음 문자 c 앞의 공백으로 커서를 이동합니다.

 Tc 같은 줄의 이전 문자 c 뒤의 공백으로 커서를 이동합니다.

 number| 커서를 숫자 열로 이동합니다.

다음은 명령 모드에서 줄 간 이동을 위한 하위 명령입니다.

+ 또는 Enter를 눌러 커서를 다음 줄의 공백이 아닌 첫 번째 문자로 이동합니다.

  - 이전 줄에서 공백이 아닌 첫 번째 문자로 커서를 이동합니다.

 0 현재 줄의 첫 번째 문자로 커서를 이동합니다.

 $ 현재 줄의 마지막 문자로 커서를 이동합니다.

 H 커서를 화면 맨 윗줄로 이동하세요.

  L 커서를 화면 하단으로 이동하세요.

 M 커서를 화면 중앙으로 이동하세요.

다음은 명령 모드에서 화면 표시를 변경하는 하위 명령입니다

 z- 현재 줄을 화면의 마지막 줄로 설정하고 화면을 다시 표시합니다.

z. 현재 줄을 화면의 중간 줄로 만들고 화면을 다시 표시합니다.

 Ctrl+l은 현재 화면 내용을 다시 표시합니다.

 /pattern/z- 패턴의 다음 위치를 찾아 화면의 마지막 줄에 줄을 설정합니다.

다음은 명령 모드에서 페이지를 표시하는 데 사용되는 하위 명령입니다.

 Ctrl + f는 한 페이지 뒤로 스크롤합니다.

Ctrl + d는 반 페이지 뒤로 스크롤합니다.

한 페이지 앞으로 스크롤하려면 Ctrl + b를 누르세요.

Ctrl + u 반 페이지 앞으로 스크롤합니다.

Ctrl + e는 한 줄 아래로 스크롤합니다.

Ctrl + y는 화면 항목을 한 줄 위로 스크롤합니다.

다음은 명령 모드에서 문자열을 찾는 데 사용되는 하위 명령입니다.

 /pattern은 지정된 패턴을 역방향으로 검색하여 파일의 끝을 만나면 처음부터 시작합니다.

? 패턴은 지정된 패턴을 앞으로 검색합니다. 파일의 시작 부분을 발견하면 끝부터 시작합니다.

 n 마지막으로 지정한 방향으로 마지막에 정의한 검색을 다시 수행합니다.

 N 마지막으로 지정한 방향과 반대 방향으로 마지막으로 정의한 검색을 다시 수행합니다.

 /pattern/+number 패턴이 포함된 행 뒤의 숫자 행에서 커서를 중지합니다.

 /pattern/-number 패턴이 포함된 줄 앞의 숫자 줄에 커서를 놓습니다.

 % 일치하는 "()" 또는 "{}"으로 이동합니다.

다음은 텍스트 입력 모드에서 텍스트를 입력하는 데 사용되는 하위 명령입니다(사용자는 언제든지 Esc를 눌러 명령 모드로 돌아갈 수 있습니다).

 a 커서 뒤에서 텍스트 입력을 시작합니다.

A는 줄 끝에서 텍스트 입력을 시작합니다.

i 커서 앞에 텍스트 입력을 시작합니다.

줄 시작 부분에서 공백이 아닌 첫 번째 문자 앞에 텍스트를 입력합니다.

o커서가 있는 줄 뒤에 빈 줄을 삽입합니다.

O커서가 있는 줄 앞에 빈 줄을 삽입합니다.

다음은 명령 모드에서 텍스트를 변경하는 데 사용되는 하위 명령입니다(사용자는 언제든지 Esc 키를 눌러 명령 모드로 돌아갈 수 있습니다).

 cc 또는 S는 전체 줄을 수정합니다.

 C 줄의 커서 위치 다음 부분을 변경합니다.

 cw는 커서가 있는 단어를 변경합니다.

 dd는 현재 줄을 삭제합니다.

 D 커서가 있는 줄에서 커서 뒤에 있는 내용을 삭제합니다.

 dw는 커서가 있는 단어를 삭제합니다.

J 이 줄 끝에 다음 내용 줄을 추가합니다.

rc는 조명 기호의 문자를 c로 대체합니다.

R은 이 줄의 내용을 덮어씁니다.

u마지막 수정 사항을 되돌립니다.

x는 커서가 있는 문자를 삭제합니다.

 ~ 커서 아래 문자의 대소문자를 바꿔보세요.

이전 작업을 반복합니다.

 <<현재 줄을 왼쪽으로 이동합니다.

 >>현재 줄을 오른쪽으로 이동합니다.

다음은 파일의 텍스트를 복사하는 데 사용되는 워드 명령입니다.

 p 커서가 있는 줄 아래 줄의 버퍼 내용을 가져옵니다.

 P 커서가 있는 줄 위의 줄까지 버퍼 내용을 가져옵니다.

 "bd 유명한 버퍼 b에 텍스트를 삭제합니다.

 "bp 유명한 버퍼 b에 내용을 게시합니다.

yy현재 줄을 버퍼에 넣습니다.

Y 현재 줄을 버퍼에 넣습니다.

Yw는 커서 아래의 단어를 버퍼에 넣습니다.

다음은 파일 저장을 위한 하위 명령입니다.

  :w는 수정된 파일을 다시 씁니다.

 :w filename filename이 존재하지 않는 경우 수정된 파일을 filename이라는 이름으로 저장합니다. filename이 존재하는 경우 오류가 발생합니다.

 !w filename filename 파일이 있으면 수정된 파일을 filename으로 저장합니다.

다음은 vi로 편집한 여러 파일 사이를 전환하는 데 사용되는 하위 명령 목록입니다.

 :nStart vi에 의해 활성화된 파일 목록의 다음 파일을 편집합니다.

 :n filenames는 편집할 새 파일 목록을 지정합니다.

현재 파일과 다른 파일 사이를 전환하는 데 사용되는 하위 명령은 다음과 같습니다.

  :e filename filename을 사용하여 vi를 활성화합니다(vi에서 다른 파일 filename 로드).

현재 파일을 다시 로드합니다. 현재 파일에 변경 사항이 있으면 이전 변경 사항을 삭제합니다.

 :e+filename filename을 사용하여 vi를 활성화하고 파일 끝부터 편집을 시작합니다.

 :e+number filename filename을 사용하여 vi를 활성화하고 줄 번호 편집을 시작하세요.

  :e# 다른 파일 편집을 시작합니다.

다음은 이 파일에 다른 파일 코드를 추가하는 데 사용되는 하위 명령입니다.

 :r filename은 파일 이름 파일을 읽고 해당 내용을 현재 파일에 추가합니다.

 :r ! command는 명령 파일을 실행하고 해당 출력을 현재 파일에 추가합니다.

다음은 vi의 다른 하위 명령입니다.

 ctrl+g는 편집 중인 파일에 대한 정보를 얻습니다.

 :sh는 sh를 시작하고 sh에서 돌아와서 종료 또는 ctrl+d를 사용합니다.

 :! Command는 명령 명령을 실행합니다.

!! ! 명령 하위 명령.

:q vi를 종료합니다. 사용자가 편집된 파일을 변경하면 시스템은 사용자가 q 명령을 사용하여 종료하도록 허용하지 않습니다.

:q! 파일 변경 여부에 관계없이 vi를 종료합니다.

ZZ 또는:wq 파일 수정 사항을 저장하고 vi를 종료합니다.

사용자는 특수 파일 .exrc에서 특수 vi 명령을 정의할 수 있습니다. vi에서 이러한 명령을 사용할 때는
명령 앞에 콜론(:)을 추가해야 합니다.

——————————————————-

Vi 모드

vi는 오래전에 작성된 프로그램입니다. 당시 키보드에는 오늘날 우리가 알고 있는 기능 키만큼 많은 기능 키가 없었습니다. 따라서 vi는 문자 입력과 ESC를 통해 텍스트 입력 및 수정을 제어하도록 설계되었습니다.

어떤 사람들에게는 이것이 안타까울 수도 있지만, 모든 기능을 완료하기 위해 키보드에서 손의 위치를 ​​바꿀 필요는 없다는 것을 알게 될 것입니다. 결과적으로 타이핑 속도가 빨라집니다.

대화형 전체 화면 편집 작업을 완료하기 위해 vi에는 세 가지 모드가 있습니다. 삽입 모드는 텍스트를 입력하는 데 사용됩니다. 삽입 모드에서는 입력한 모든 문자가 화면에 표시되고 파일에 저장됩니다. 명령 모드는 대부분의 편집 기능에 사용됩니다. 명령 모드에서는 커서 이동, 텍스트 삭제, 텍스트 복사 등과 같이 모든 입력이 텍스트로 직접 이동하는 대신 특정 응답을 생성합니다. 세 번째 모드는 검색, 전역 교체, 여러 파일 처리 등과 같은 추가 기능을 수행하는 것입니다. 이 모드는 ex 편집기를 기반으로 합니다.
vi 시작

vi가 시작되면 기본 모드는 명령 모드입니다. 아래 단계에 따라 시도해 보세요. vi를 시작하려면 프로그램 이름을 입력하세요.

$ vi

다음과 비슷한 내용이 표시됩니다.

~~~ ~~~~~ ~~~~~~~~~~~~~~~~~ 빈 버퍼

i – ​​​​Insert

이제 “i”를 입력하여 삽입 모드로 들어갑니다. . 문자 "i"는 에코되지 않습니다. 이후에 입력하는 모든 내용은 캐시에 표시됩니다. 이제 텍스트를 입력해 보겠습니다. 예에 나오는 단어는 Sun Tzu의 The Art of War의 영어 버전에서 가져온 것입니다. 예제에서는 커서 위치에 밑줄이 그어져 있습니다.

지혜로운 지휘관은 변화하는 상황을 인식하고 신속하게 대응할 수 있습니다. 성실하다면 그의 부하들은 상벌의 확실성을 의심하지 않을 것입니다. 인간적이라면 그는 인류를 사랑하고 다른 사람들을 동정하며 그들의 근면을 높이 평가할 것입니다. 용감하면 주저하지 않고 기회를 잡아서 승리하고, 엄격하면 군대가 그를 두려워하고 형벌을 두려워하기 때문에 징계를 받는다. 의심을 극복하거나 훌륭한 계획을 세울 수 없습니다.'~~~~~~~~~~~~~~~~~~

Esc–Cancel

입력이 끝나면 Esc를 누르세요. 키를 누르면 명령 모드로 돌아갑니다. (이미 명령 모드에 있는 경우 Esc를 누르면 경적 소리가 들립니다.) Esc는 완료되지 않은 명령을 취소하고 삽입 모드를 종료합니다. Esc를 누르면 커서는 입력한 마지막 문자 아래에 유지됩니다.

안타깝게도 현재 어떤 모드에 있는지 알 수 있는 명확한 신호가 없습니다. 하지만 현재 어떤 모드에 있는지 쉽게 알 수 있는 방법이 있습니다. 키를 눌렀을 때 해당 문자가 화면에 나타나면 삽입 모드에 있는 것이고, 그렇지 않으면 명령 모드에 있는 것입니다. 현재 어떤 모드에 있는지 잘 모르겠으면 Esc를 두 번 눌러 경적 소리를 듣고 명령 모드에 있는지 확인하세요.
커서 이동 및 간단한 편집

기본적인 커서 이동 명령을 살펴보겠습니다. 손가락을 훈련시키고 나중에 원하는 명령을 자동으로 실행하게 하세요.
가장 중요한 이동 명령

얼마나 많은 명령이 커서 이동에 영향을 미치는지 살펴보겠습니다.
hh – 커서를 왼쪽으로 이동

먼저 h를 5번 눌러 커서를 왼쪽으로 5칸 이동합니다. (화면에 h가 실행되는 것이 보이면 Esc를 누르는 것을 잊어버린 것입니다.) 이제 커서는 "계획"의 "p" 아래에 있어야 합니다(아래 예 참조).

만약 지휘관이 변화하는 상황을 인식하고 적절하게 행동할 수 있다면 그의 부하들은 아무것도 얻지 못할 것입니다. 인간적이라면 인류를 사랑하고, 타인을 동정하며, 그들의 노고를 높이 평가하고, 용기가 있으면 주저하지 않고 기회를 포착해 승리를 거둔다. 심보서(Shen Paoxsu)는 '장군이 용기가 없으면 의심을 이기지 못하고 위대한 계획을 세울 수 없다'고 말했습니다.

kk – 커서를 위로 이동

이제 k를 5번 눌러 커서를 5줄 위로 이동해 보겠습니다. 어쩌면 지름길이 있어야 한다고 생각해야 할 수도 있습니다. 자, 쉬운 방법이 있습니다. 수행하려는 작업 앞에 숫자를 입력하세요. 5k를 누르면 k를 5번 누른 것과 같은 결과가 나옵니다. 이제 커서는 "he"의 "e" 아래에 있어야 합니다.

지혜로운 지휘관은 변화하는 상황을 인식하고 적절하게 접촉할 수 있으며, 진실하다면 그의 부하들은 상벌의 확실성을 의심하지 않을 것입니다. 용기가 있으면 주저하지 않고 기회를 잡아서 승리하고, 엄하면 신보서가 두려워하여 규율을 정한다. 용감한 사람은 의심을 극복할 수도, 훌륭한 계획을 세울 수도 없습니다.'~~~~~~~~~~~~~~~~~

이러한 기능을 사용할 때 몇 가지 제한 사항이 있습니다. 예를 들어, h 또는 l을 사용하여 커서를 텍스트 줄의 시작이나 끝 너머로 이동하면 커서는 시작이나 끝 부분에 머물며 경적 소리가 울려 알려줍니다.

h랑 k랑 비슷한 것도 있나요? 표 3.2를 살펴보자. 익숙해지는 가장 좋은 방법은 많이 사용해 보는 것입니다.
표 3.2. 일반적인 화살표 키

명령 이동
h 왼쪽으로 한 글자
j 다음 줄
k 이전 줄
l 오른쪽으로 한 글자
w, W 이전 단어(W 구두점 무시)
b, B 다음 단어(B 구두점 무시)
$ 줄 끝
^ 줄 시작 부분의 비어 있지 않은 첫 번째 문자
0 줄 시작
G 버퍼 시작
nG n번째 줄

대문자와 소문자 명령에는 약간의 차이가 있습니다. 소문자는 일반적으로 구두점으로 "단어"를 구별하지만 대문자는 이를 무시합니다.
가장 중요한 편집 절차

가장 간단하고 일반적으로 사용되는 편집 절차를 살펴보겠습니다.

수정 누구도 실수하지 않습니다. 따라서 조만간 입력한 텍스트를 수정해야 하는 상황에 직면하게 될 것입니다. 워드 프로세싱에 소요되는 대부분의 시간은 실제로 새로운 것을 입력하기보다는 수정하는 데 소요됩니다. 그러므로 쉽게 수정하는 방법을 아는 것이 중요합니다.

x – 문자 삭제 텍스트를 삭제하는 가장 쉬운 방법은 x를 사용하는 것입니다. 이 명령을 실행하면 커서가 위치한 문자가 사라지고, 다음 텍스트가 왼쪽으로 이동하게 됩니다. 삭제하는 문자가 줄의 마지막 문자인 경우 커서가 존재하지 않는 문자 아래에 머물지 않도록 커서가 왼쪽으로 한 칸 이동합니다. 더 이상 말이 없으면 경적이 울릴 것입니다.

d – 개체 삭제 이 명령의 오른쪽에는 특정 텍스트 개체도 있어야 합니다. 텍스트 개체는 텍스트 조각입니다. 오른쪽에 연결된 캐릭터는 커서의 움직임을 제어하는 ​​캐릭터입니다. 예를 들어 w는 한 단어 앞으로를 의미하고 dw는 다음 단어를 삭제합니다. 5w는 5단어 앞으로 이동을 의미하며, d5w는 ​​해당 단어를 삭제합니다.

dd – 줄 삭제 가장 일반적으로 사용되는 d 시리즈 명령 중 하나입니다. 이전과 마찬가지로 5dd는 5줄을 삭제합니다

D – 전체 삭제 대문자 D는 커서부터 줄 끝까지 삭제하는 데 사용됩니다. d$와 동일한 효과.

u – Recovery 후회하고 싶나요? 삭제만 취소하는 것이 아니라 모든 편집 작업을 취소합니다.

.–Repeat 편집 작업을 반복합니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.