내발자국[동호회]
[FAQ: KORNET] VI 편집기 사용방법
松巖
1996. 7. 12. 12:40
□코넷 가이드에서 받아옴
----------------------
vi 사용에 대한 FAQ
^^^^^^^^^^^^^^^^^^^^^^
1995. 12. 15
--------------------------------------------------------------------------
[질문 1]: VI 는 무엇입니까?
--------------------------------------------------------------------------
vi란 Visual Editor를 말합니다.
요즘은 visual editor가 대부분이지만 vi가 만들어지기 전까지는 sed, ex, ed등의
에디터와 도스에서의 edlin등의 라인단위의 에디터를 많이 사용 했죠.
vi 는 William Joy라는 사람에 의해서 BSD 계열의 UNIX를 위해서 만들어졌고,
그뒤로 AT&T에서도 쓰이게 되면서, 현재는 UNIX의 기본 에디터로 많은 사랑을
받고 있으며, 다른 운영체계에서도 폭넓게 쓰이고 있습니다.
--------------------------------------------------------------------------
[질문 2] 명령모드와 삽입모드는 어떻게 다릅니까 ?
--------------------------------------------------------
" 명령모드 " 와 " 삽입모드 " 의 차이점을 이해하는것이 VI를 배우는 기초이며
또한 필수적입니다.
vi 를 시작하게 되면 명령모드로 동작하게 됩니다. 명령모드에서는 커서의 위치를
움직이고, 원하는 문자열을 찾고, 어떤 부분을 복사해서 다른부분에 덧붙이는등의
일을 할 수 있습니다.
삽입 모드에서는 키보드에서 누르는 문자가 삽입이 됩니다.
명령모드에서 삽입모드로 들어가는 명령에는 다음과 같은것이 있습니다.
i -- 현재 커서의 위치에 문자를 삽입합니다.
a -- 현재 커서의 위치 다음부터 삽입을 합니다.
o -- 현재 커서가 있는 라인의 다음 라인부터 삽입을 합니다.
O -- 현재 커서가 있는 라인의 윗라인부터 삽입을 합니다.
이 외에도 지정 위치까지의 텍스트를 삽입하는 문자열로 대치해주는
c 명령어가 있습니다.
삽입 모드에서 다시 명령모드로 돌아가려면 Esc 키를 누르면 됩니다.
[문제 3] 문서 편집중에 변경된 사항을 저장하지 않고 빠져 나오려면 어떻게 하나
요?
----------------------------------------------------------------------------
명령모드에서 :q! 를 누르면 됩니다. " : "는 콜론명령이라는 여러가지 명령
을 사용할때 앞에다 붙여주는 명령어입니다. 주로 화일을 다룰때 쓰게 되지요.
----------------------------------------------------------------------------
[문제 4] 현재 편집중인 문서에 다른 화일을 삽입하려면 어떻게 하나요?
----------------------------------------------------------------------------
명령모드에서 :r 화일이름 하면 됩니다.
예를 들어 자신의 홈디렉토리의 sample 이라는 화일을 삽입하고 싶다면
:r ~/sample 라고 명령을 하면 되지요.
----------------------------------------------------------------------------
[문제 5] 문자열 검색은 어떻게 하나요?
명령모드에서 "/문자열"은 전방향검색을 하고, "?문자열"은 후방향검색을 합니다..
다시말하면,
"/문자열"은 문서의 아래쪽으로 검색을 하고, "?문자열"은 문서의 윗쪽으로 검색을
합니다.
예를 들어 현재 편집중인 문서내에서 sample 이라는 문자열을 검색하려면
명령모드에서 /sample 하면 됩니다.
또 다음에 나타나는 sample이라는 문자열을 검색하려면 n 을 누르면 됩니다.
문서의 중간쯤의 위치에서 지나간 화면에서 sample이라는 문자열을 찾고싶다면,
명령모드에서 ?sample 하면 됩니다.
더 윗부분의 같은 문자열을 또 검색하고 싶다면 n 을 누르면 됩니다.
----------------------------------------------------------------------------
[문제 6] 문서의 편집이 끝났습니다. 어떻게 저장하고 vi를 끝내나요?
----------------------------------------------------------------------------
:wq 명령을 사용하시면 됩니다.역시 콜론 명령이죠.
w는 변경된 내용을 화일에 저장하라는 말이고, q는 vi를 끝내고 빠져나오라는
말이죠.
이때 변경된 내용을 다른 이름으로 저장하고 싶다면 :w 다른이름 으로 정하면
됩니다.
----------------------------------------------------------------------------
[문제 7] 어떻게 text를 복사합니까?
----------------------------------------------------------------------------
먼저 명령어 부터 답을 해 드리자면, "알파벳yy 입니다. 맨앞의 "를 빼먹지 않
도록 주의하세요.여기서 알파벳에는 a에서부터 z까지 쓸 수 있습니다.
간단히 설명하자면 알파벳에 a를 사용했다면 a라는 버퍼에 내용이 저장이 되는
거랍니다. 예를 들어 다시 설명하겠습니다.
예1) 현재 커서가 위치해 있는 라인부터 10줄을 복사해서 다른부분에 덧붙이려면..
"b10yy 라고 한다음에, 복사하고 싶은 부분으로 이동해서 "bp 라고 명령을
내리면 됩니다. 여기서 p는 put의 뜻입니다.
즉 b라는 버퍼에 저장된 내용을 덧붙이라는 말입니다.
예2) 현재위치부터 10줄을 다른 부분으로 이동시키려면...
"c10dd 명령을 한다음에, 붙이고 싶은 부분으로 이동합니다.
역시 위의 복사와 같은 방법으로, "cp 명령을 합니다.
위의 복사 명령과 다른점은 dd(한줄 지우기)명령을 사용해서 원래의 위치에
있던 내용은 지우고 다른 부분에 덧붙인다는 거죠.
----------------------------------------------------------------------------
[문제 8] 에구~~ 실수로 dG 명령을 사용해서 화일의 현재 위치부터 끝까지 다 지웠
습니다. 어떻게 하면 복구 할 수 있을까요?
----------------------------------------------------------------------------
자신이 사용했던 명령어중에서 마지막 명령을 취소( Undo )하는 명령은, u 입니
다. 현재 커서 위치의 라인에서 했던 모든 명령을 취소하려면, U 를 사용하시면
됩니다.
만약편집중이던 화일을 아무런 변경없이 다시 불러들이고 싶다면, :e! 를
사용하시면 됩니다.
----------------------------------------------------------------------------
[문제 9] 편집중인 화일의 일부분을 다른 화일로 저장하려면 어떻게 해야 하나요?
----------------------------------------------------------------------------
역시 콜론 명령을 사용하셔야 합니다.
이해를 돕기 위해 예를 들어 설명하겠습니다.
만약 3행에서 7행까지를 sample이라는 화일로 만들고 싶다면..
명령모드에서 :3,7 w sample 해주면 됩니다.
기존의 example이라는 화일에 현재 편집화일의 6행에서 9행까지를 덧붙이고
싶다면.. 명령모드에서 :6,9 w >> example 해주면 됩니다.
----------------------------------------------------------------------------
[문제 10] 아!!!! 문서 편집중에 시스템 장애로 접속이 끊겼습니다. 다시 복구할
방법이 없을까요 ?
----------------------------------------------------------------------------
이런경우 여기에 대해서 시스템으로부터 메일을 받게됩니다.
복구 명령은 vi -r 화일이름 하면 됩니다.
만약 편집하고 있던 화일이름이 sample.txt 라면, vi -r sample.txt 합니다.
화일이름이 기억나지 않는다면, vi -r 만 해주세요. 임시보관된 화일목록이
나옵니다.
----------------------------------------------------------------------------
[문제 11] 문서 편집을 끝내고 보니 new라고 써야될것을 전부 old라고 썼습니다.
이것을 일일히 고쳐줘야 하나요?
----------------------------------------------------------------------------
이런 경우에 검색과 치환을 사용합니다.
위의 경우 문서 전체에 나타나는 old라는 단어를 new로 고쳐야 되므로
명령모드에서 :%s/old/new/g 해주면 됩니다.
좀더 자세히 설명하자면, 기본적인 형식은 명령모드에서 :범위s/old/new/g
입니다.
:은 콜론 명령임을 뜻하구요.마지막의 g는 한라인에서 원하는 문자열이 여러번
나올때 전부 치환을 하라는 말입니다. 만약 한라인에서 한번만 바꾸려면
안써도 됩니다.
범위에는 vi에서의 다른 명령어처럼 범위를 지정할 수 있습니다.
범위에 들어갈 변수들에는...
라인번호 -- 즉, 범위에 1을 써주면 1행에서만 지정된 명령을 수행합니다.
$ -- 화일의 끝을 나타냅니다.
. -- 현재커서의 위치를 말합니다.
% -- 현재 화일을 나타냅니다.
1,6 -- 1행에서 6행까지 수행합니다.
예를 들어 설명하자면..
:7,$s/bad/good/g -- 7행부터 문서의 끝까지 bad를 good으로 바꿔 줍니다.
:.,+10s/evil/angel/g -- 현재 위치부터 다음10줄까지 evil을 angel로 치환.
:%s/hell/heaven/g -- 문서 전체에 나타나는 hell을 모두 heaven으로 치환.
----------------------------------------------------------------------------
[문제 12] vi 안에서 다른 unix명령어를 사용할 수 있나요?
----------------------------------------------------------------------------
물론 가능합니다.
명령모드에서 :!명령어 의 형식으로 사용합니다.
예를 들어 vi에서 문서 편집중 다른 문서를 삽입하고 싶은데, 현재 디렉토리에
있는 화일의 목록을 보고 싶다면
:!ls -la 해주면 됩니다.
또한 또다른 쉘을 띄울 수도 있습니다.
명령모드에서 :!sh 해주면 또 다른 쉘이 뜨게 됩니다.
----------------------------------------------------------------------------
[문제 13] 문서 작성중 somebody@soback.kornet.nm.kr 이라는 문장이 빈번하게
사용됩니다. 이 문장을 자동으로 삽입 하게 해주는 방법은 없을까요?
----------------------------------------------------------------------------
:ab 명령을 사용하면 됩니다.
질문과 같은 경우 sombody@soback.kornet.nm.kr 이라는 문장을 자신이 원하는
약어로 지정할 수 있습니다.
예를 들어 위의 주소를 ems라고 칠때 마다 삽입이 되게 하려면..
명령모드에서 :ab ems sombody@soback.kornet.nm.kr 하면 됩니다.
이제 문서작성중에 ems라고 칠때마다 위의 주소가 삽입이 됩니다.
단, 주의하실점은 일단 현재 화일의 편집을 마치면 이 약어는 다음에는 쓰이지
않게 됩니다. 즉, 효력이 현재 편집중에만 미친다는 말이죠. 물론 이 약어를
계속 유효하게 할수도 있습니다. 자신의 홈디렉토리에 .exrc라는 화일을 만들어
이안에 지정해 놓으면 됩니다.
VI 환경설정 하기를 참조하세요.
----------------------------------------------------------------------------
[문제 14] VI의 환경 설정은 어떻게 해 줍니까?
명령모드에서 콜론 명령인 :set 옵션 의 형식으로 사용됩니다. 이때 자신이
지정한 옵션을 영구적으로 vi를 사용할때마다 사용하고 싶다면 자신의 홈디
렉토리 안에 .exrc 화일을 만들어 그 안에 적어주면 됩니다.
화일이름에 주의하세요. 앞에 dot(.)가 붙은 .exrc입니다.
.exrc화일에는 모든 콜론명령을 쓸 수 있습니다.
콜론 명령을 .exrc에 쓸땐 콜론을 빼고 써줍니다.
.exrc화일에는 약어지정과 키맵핑을 쓸 수 있습니다.
.exrc화일에는 빈줄이 있어서는 안됩니다.
각줄에서 "로 시작하면 주석으로 해석 됩니다.
.exrc화일의 예.
set ai
"자동 들여 쓰기를 합니다."
set ic
"검색명령을 사용할때 대문자 소문자 구별을 하지 않습니다."
set exrc
"자신의 홈디렉토리외에서도 .exrc화일의 설정을 사용합니다."
set showmode
"명령모드와 삽입모드의 구분을 보여줍니다."
ab ard@ naman@soback.kornet.nm.kr
"약어지정 -- ard@만 입력하면 naman@soback.kornet.nm.kr이 삽입됩니다.
ab 아녀 안녕하세요. 나만입니다.
"약어지정 -- 아녀 만 입력하면 안녕하세요.나만입니다 가 삽입됩니다."
map Ctrl-v delete키
"키맵핑 -- 키보드의 delete키를 오른쪽 한문자 지우기로 맵핑합니다."
----------------------------------------------------------------------------
[문제 15] 키보드의 F1같은 펑션키에 자주 쓰이는 명령어를 등록할 수는 없나요?
----------------------------------------------------------------------------
가능합니다. :map명령을 사용하시면 됩니다.
예를 들어 F1키에 dd ( 한줄지우기 )명령을 등록해서 사용하고 싶다면
명령모드에서 :map Ctrl-v F1키 dd 하시면 됩니다.
이때 Ctrl-v는 Ctrl키를 누른상태에서 v를 누르는것입니다.
Ctrl-v는 vi에게 명령을 할때 특수키를 입력하기 앞서 눌러주는 문자입니다.
따라서 위의 명령을 사용할때 Ctrl-v를 누른다음에 F1키를 누르면 화면에는..
:map ^[[11~와 같이 나타납니다.
한가지 더 예를 들어, 키보드의 Delete키를 도스에서 처럼 한글자 지우는
키로 만들고 싶다면
:map Ctrl-v Delete키 x 하면 됩니다.
이때도 물론 화면에는 :map ^? x 라고 나옵니다.
이것을 키보드맵핑이라고 합니다. 키보드 맵핑도 현재 편집중에만 유효합니다.
계속 유효하게 만들고 싶다면 .exrc화일에 써주면 됩니다.
----------------------------------------------------------------------------
[문제 16] 도스에서 텍스트 화일을 만들었습니다. 코넷으로 업 로드 해서 다시 편집
하려고 vi로 열어 봤더니 각 라인의 끝에 ^M이 붙어서 지저분하군요.
어떻게 하면 이것을 없앨 수 있을까요?
----------------------------------------------------------------------------
간단합니다. 명령모드에서 :%s/Ctrl-v 엔터키//g 하면 됩니다.
여기서 ^M은 도스에서의 리턴키를 유닉스에서 인식할때 나타나는 현상입니다.
물론 위의 명령은 치환 검색 명령이죠. 화일전체에서 ^M을 공백으로 바꾸라는
명령입니다. 이때도 물론 엔터키는 특수한 문자이기 때문에 Ctrl-v를 써야
됩니다.
----------------------------------------------------------------------------
[문제 17] VI를 사용할때 현재 명령모드에 있는지 삽입모드에 있는지 자꾸 혼돈됩
니다. 해결책이 없을까요?
----------------------------------------------------------------------------
물론 있지요. 어느 상태에서건 무조건 Esc키를 두번 누르면 명령모드로 갑니다.
더 확실한 방법은 콜론 명령을 사용하는 방법입니다.
명령모드에서 :set showmode 해주면 화면 우측하단에 현재 상태가 나타납니다.
물론 이 명령도 .exrc화일에 넣어두고 영구적으로 사용할 수 있습니다.
VI 환경 설정 하기를 참조하세요.
━━━━━━━━━━━━━━━━━━━━━━━━━Internet User Group━━━━
빠르고 안전하고 건전하고 편하고 즐겁고 쉬운 leesun2@soback.kornet.nm.kr
인터넷 항해를 인터넷 유저 그룹과 함께 하세요! LEESUN2@hitel.kol.co.kr
━━━━━━━━━━━━━━━━━━━━━━━━━go IUG━━━━━━━━
----------------------
vi 사용에 대한 FAQ
^^^^^^^^^^^^^^^^^^^^^^
1995. 12. 15
--------------------------------------------------------------------------
[질문 1]: VI 는 무엇입니까?
--------------------------------------------------------------------------
vi란 Visual Editor를 말합니다.
요즘은 visual editor가 대부분이지만 vi가 만들어지기 전까지는 sed, ex, ed등의
에디터와 도스에서의 edlin등의 라인단위의 에디터를 많이 사용 했죠.
vi 는 William Joy라는 사람에 의해서 BSD 계열의 UNIX를 위해서 만들어졌고,
그뒤로 AT&T에서도 쓰이게 되면서, 현재는 UNIX의 기본 에디터로 많은 사랑을
받고 있으며, 다른 운영체계에서도 폭넓게 쓰이고 있습니다.
--------------------------------------------------------------------------
[질문 2] 명령모드와 삽입모드는 어떻게 다릅니까 ?
--------------------------------------------------------
" 명령모드 " 와 " 삽입모드 " 의 차이점을 이해하는것이 VI를 배우는 기초이며
또한 필수적입니다.
vi 를 시작하게 되면 명령모드로 동작하게 됩니다. 명령모드에서는 커서의 위치를
움직이고, 원하는 문자열을 찾고, 어떤 부분을 복사해서 다른부분에 덧붙이는등의
일을 할 수 있습니다.
삽입 모드에서는 키보드에서 누르는 문자가 삽입이 됩니다.
명령모드에서 삽입모드로 들어가는 명령에는 다음과 같은것이 있습니다.
i -- 현재 커서의 위치에 문자를 삽입합니다.
a -- 현재 커서의 위치 다음부터 삽입을 합니다.
o -- 현재 커서가 있는 라인의 다음 라인부터 삽입을 합니다.
O -- 현재 커서가 있는 라인의 윗라인부터 삽입을 합니다.
이 외에도 지정 위치까지의 텍스트를 삽입하는 문자열로 대치해주는
c 명령어가 있습니다.
삽입 모드에서 다시 명령모드로 돌아가려면 Esc 키를 누르면 됩니다.
[문제 3] 문서 편집중에 변경된 사항을 저장하지 않고 빠져 나오려면 어떻게 하나
요?
----------------------------------------------------------------------------
명령모드에서 :q! 를 누르면 됩니다. " : "는 콜론명령이라는 여러가지 명령
을 사용할때 앞에다 붙여주는 명령어입니다. 주로 화일을 다룰때 쓰게 되지요.
----------------------------------------------------------------------------
[문제 4] 현재 편집중인 문서에 다른 화일을 삽입하려면 어떻게 하나요?
----------------------------------------------------------------------------
명령모드에서 :r 화일이름 하면 됩니다.
예를 들어 자신의 홈디렉토리의 sample 이라는 화일을 삽입하고 싶다면
:r ~/sample 라고 명령을 하면 되지요.
----------------------------------------------------------------------------
[문제 5] 문자열 검색은 어떻게 하나요?
명령모드에서 "/문자열"은 전방향검색을 하고, "?문자열"은 후방향검색을 합니다..
다시말하면,
"/문자열"은 문서의 아래쪽으로 검색을 하고, "?문자열"은 문서의 윗쪽으로 검색을
합니다.
예를 들어 현재 편집중인 문서내에서 sample 이라는 문자열을 검색하려면
명령모드에서 /sample 하면 됩니다.
또 다음에 나타나는 sample이라는 문자열을 검색하려면 n 을 누르면 됩니다.
문서의 중간쯤의 위치에서 지나간 화면에서 sample이라는 문자열을 찾고싶다면,
명령모드에서 ?sample 하면 됩니다.
더 윗부분의 같은 문자열을 또 검색하고 싶다면 n 을 누르면 됩니다.
----------------------------------------------------------------------------
[문제 6] 문서의 편집이 끝났습니다. 어떻게 저장하고 vi를 끝내나요?
----------------------------------------------------------------------------
:wq 명령을 사용하시면 됩니다.역시 콜론 명령이죠.
w는 변경된 내용을 화일에 저장하라는 말이고, q는 vi를 끝내고 빠져나오라는
말이죠.
이때 변경된 내용을 다른 이름으로 저장하고 싶다면 :w 다른이름 으로 정하면
됩니다.
----------------------------------------------------------------------------
[문제 7] 어떻게 text를 복사합니까?
----------------------------------------------------------------------------
먼저 명령어 부터 답을 해 드리자면, "알파벳yy 입니다. 맨앞의 "를 빼먹지 않
도록 주의하세요.여기서 알파벳에는 a에서부터 z까지 쓸 수 있습니다.
간단히 설명하자면 알파벳에 a를 사용했다면 a라는 버퍼에 내용이 저장이 되는
거랍니다. 예를 들어 다시 설명하겠습니다.
예1) 현재 커서가 위치해 있는 라인부터 10줄을 복사해서 다른부분에 덧붙이려면..
"b10yy 라고 한다음에, 복사하고 싶은 부분으로 이동해서 "bp 라고 명령을
내리면 됩니다. 여기서 p는 put의 뜻입니다.
즉 b라는 버퍼에 저장된 내용을 덧붙이라는 말입니다.
예2) 현재위치부터 10줄을 다른 부분으로 이동시키려면...
"c10dd 명령을 한다음에, 붙이고 싶은 부분으로 이동합니다.
역시 위의 복사와 같은 방법으로, "cp 명령을 합니다.
위의 복사 명령과 다른점은 dd(한줄 지우기)명령을 사용해서 원래의 위치에
있던 내용은 지우고 다른 부분에 덧붙인다는 거죠.
----------------------------------------------------------------------------
[문제 8] 에구~~ 실수로 dG 명령을 사용해서 화일의 현재 위치부터 끝까지 다 지웠
습니다. 어떻게 하면 복구 할 수 있을까요?
----------------------------------------------------------------------------
자신이 사용했던 명령어중에서 마지막 명령을 취소( Undo )하는 명령은, u 입니
다. 현재 커서 위치의 라인에서 했던 모든 명령을 취소하려면, U 를 사용하시면
됩니다.
만약편집중이던 화일을 아무런 변경없이 다시 불러들이고 싶다면, :e! 를
사용하시면 됩니다.
----------------------------------------------------------------------------
[문제 9] 편집중인 화일의 일부분을 다른 화일로 저장하려면 어떻게 해야 하나요?
----------------------------------------------------------------------------
역시 콜론 명령을 사용하셔야 합니다.
이해를 돕기 위해 예를 들어 설명하겠습니다.
만약 3행에서 7행까지를 sample이라는 화일로 만들고 싶다면..
명령모드에서 :3,7 w sample 해주면 됩니다.
기존의 example이라는 화일에 현재 편집화일의 6행에서 9행까지를 덧붙이고
싶다면.. 명령모드에서 :6,9 w >> example 해주면 됩니다.
----------------------------------------------------------------------------
[문제 10] 아!!!! 문서 편집중에 시스템 장애로 접속이 끊겼습니다. 다시 복구할
방법이 없을까요 ?
----------------------------------------------------------------------------
이런경우 여기에 대해서 시스템으로부터 메일을 받게됩니다.
복구 명령은 vi -r 화일이름 하면 됩니다.
만약 편집하고 있던 화일이름이 sample.txt 라면, vi -r sample.txt 합니다.
화일이름이 기억나지 않는다면, vi -r 만 해주세요. 임시보관된 화일목록이
나옵니다.
----------------------------------------------------------------------------
[문제 11] 문서 편집을 끝내고 보니 new라고 써야될것을 전부 old라고 썼습니다.
이것을 일일히 고쳐줘야 하나요?
----------------------------------------------------------------------------
이런 경우에 검색과 치환을 사용합니다.
위의 경우 문서 전체에 나타나는 old라는 단어를 new로 고쳐야 되므로
명령모드에서 :%s/old/new/g 해주면 됩니다.
좀더 자세히 설명하자면, 기본적인 형식은 명령모드에서 :범위s/old/new/g
입니다.
:은 콜론 명령임을 뜻하구요.마지막의 g는 한라인에서 원하는 문자열이 여러번
나올때 전부 치환을 하라는 말입니다. 만약 한라인에서 한번만 바꾸려면
안써도 됩니다.
범위에는 vi에서의 다른 명령어처럼 범위를 지정할 수 있습니다.
범위에 들어갈 변수들에는...
라인번호 -- 즉, 범위에 1을 써주면 1행에서만 지정된 명령을 수행합니다.
$ -- 화일의 끝을 나타냅니다.
. -- 현재커서의 위치를 말합니다.
% -- 현재 화일을 나타냅니다.
1,6 -- 1행에서 6행까지 수행합니다.
예를 들어 설명하자면..
:7,$s/bad/good/g -- 7행부터 문서의 끝까지 bad를 good으로 바꿔 줍니다.
:.,+10s/evil/angel/g -- 현재 위치부터 다음10줄까지 evil을 angel로 치환.
:%s/hell/heaven/g -- 문서 전체에 나타나는 hell을 모두 heaven으로 치환.
----------------------------------------------------------------------------
[문제 12] vi 안에서 다른 unix명령어를 사용할 수 있나요?
----------------------------------------------------------------------------
물론 가능합니다.
명령모드에서 :!명령어 의 형식으로 사용합니다.
예를 들어 vi에서 문서 편집중 다른 문서를 삽입하고 싶은데, 현재 디렉토리에
있는 화일의 목록을 보고 싶다면
:!ls -la 해주면 됩니다.
또한 또다른 쉘을 띄울 수도 있습니다.
명령모드에서 :!sh 해주면 또 다른 쉘이 뜨게 됩니다.
----------------------------------------------------------------------------
[문제 13] 문서 작성중 somebody@soback.kornet.nm.kr 이라는 문장이 빈번하게
사용됩니다. 이 문장을 자동으로 삽입 하게 해주는 방법은 없을까요?
----------------------------------------------------------------------------
:ab 명령을 사용하면 됩니다.
질문과 같은 경우 sombody@soback.kornet.nm.kr 이라는 문장을 자신이 원하는
약어로 지정할 수 있습니다.
예를 들어 위의 주소를 ems라고 칠때 마다 삽입이 되게 하려면..
명령모드에서 :ab ems sombody@soback.kornet.nm.kr 하면 됩니다.
이제 문서작성중에 ems라고 칠때마다 위의 주소가 삽입이 됩니다.
단, 주의하실점은 일단 현재 화일의 편집을 마치면 이 약어는 다음에는 쓰이지
않게 됩니다. 즉, 효력이 현재 편집중에만 미친다는 말이죠. 물론 이 약어를
계속 유효하게 할수도 있습니다. 자신의 홈디렉토리에 .exrc라는 화일을 만들어
이안에 지정해 놓으면 됩니다.
VI 환경설정 하기를 참조하세요.
----------------------------------------------------------------------------
[문제 14] VI의 환경 설정은 어떻게 해 줍니까?
명령모드에서 콜론 명령인 :set 옵션 의 형식으로 사용됩니다. 이때 자신이
지정한 옵션을 영구적으로 vi를 사용할때마다 사용하고 싶다면 자신의 홈디
렉토리 안에 .exrc 화일을 만들어 그 안에 적어주면 됩니다.
화일이름에 주의하세요. 앞에 dot(.)가 붙은 .exrc입니다.
.exrc화일에는 모든 콜론명령을 쓸 수 있습니다.
콜론 명령을 .exrc에 쓸땐 콜론을 빼고 써줍니다.
.exrc화일에는 약어지정과 키맵핑을 쓸 수 있습니다.
.exrc화일에는 빈줄이 있어서는 안됩니다.
각줄에서 "로 시작하면 주석으로 해석 됩니다.
.exrc화일의 예.
set ai
"자동 들여 쓰기를 합니다."
set ic
"검색명령을 사용할때 대문자 소문자 구별을 하지 않습니다."
set exrc
"자신의 홈디렉토리외에서도 .exrc화일의 설정을 사용합니다."
set showmode
"명령모드와 삽입모드의 구분을 보여줍니다."
ab ard@ naman@soback.kornet.nm.kr
"약어지정 -- ard@만 입력하면 naman@soback.kornet.nm.kr이 삽입됩니다.
ab 아녀 안녕하세요. 나만입니다.
"약어지정 -- 아녀 만 입력하면 안녕하세요.나만입니다 가 삽입됩니다."
map Ctrl-v delete키
"키맵핑 -- 키보드의 delete키를 오른쪽 한문자 지우기로 맵핑합니다."
----------------------------------------------------------------------------
[문제 15] 키보드의 F1같은 펑션키에 자주 쓰이는 명령어를 등록할 수는 없나요?
----------------------------------------------------------------------------
가능합니다. :map명령을 사용하시면 됩니다.
예를 들어 F1키에 dd ( 한줄지우기 )명령을 등록해서 사용하고 싶다면
명령모드에서 :map Ctrl-v F1키 dd 하시면 됩니다.
이때 Ctrl-v는 Ctrl키를 누른상태에서 v를 누르는것입니다.
Ctrl-v는 vi에게 명령을 할때 특수키를 입력하기 앞서 눌러주는 문자입니다.
따라서 위의 명령을 사용할때 Ctrl-v를 누른다음에 F1키를 누르면 화면에는..
:map ^[[11~와 같이 나타납니다.
한가지 더 예를 들어, 키보드의 Delete키를 도스에서 처럼 한글자 지우는
키로 만들고 싶다면
:map Ctrl-v Delete키 x 하면 됩니다.
이때도 물론 화면에는 :map ^? x 라고 나옵니다.
이것을 키보드맵핑이라고 합니다. 키보드 맵핑도 현재 편집중에만 유효합니다.
계속 유효하게 만들고 싶다면 .exrc화일에 써주면 됩니다.
----------------------------------------------------------------------------
[문제 16] 도스에서 텍스트 화일을 만들었습니다. 코넷으로 업 로드 해서 다시 편집
하려고 vi로 열어 봤더니 각 라인의 끝에 ^M이 붙어서 지저분하군요.
어떻게 하면 이것을 없앨 수 있을까요?
----------------------------------------------------------------------------
간단합니다. 명령모드에서 :%s/Ctrl-v 엔터키//g 하면 됩니다.
여기서 ^M은 도스에서의 리턴키를 유닉스에서 인식할때 나타나는 현상입니다.
물론 위의 명령은 치환 검색 명령이죠. 화일전체에서 ^M을 공백으로 바꾸라는
명령입니다. 이때도 물론 엔터키는 특수한 문자이기 때문에 Ctrl-v를 써야
됩니다.
----------------------------------------------------------------------------
[문제 17] VI를 사용할때 현재 명령모드에 있는지 삽입모드에 있는지 자꾸 혼돈됩
니다. 해결책이 없을까요?
----------------------------------------------------------------------------
물론 있지요. 어느 상태에서건 무조건 Esc키를 두번 누르면 명령모드로 갑니다.
더 확실한 방법은 콜론 명령을 사용하는 방법입니다.
명령모드에서 :set showmode 해주면 화면 우측하단에 현재 상태가 나타납니다.
물론 이 명령도 .exrc화일에 넣어두고 영구적으로 사용할 수 있습니다.
VI 환경 설정 하기를 참조하세요.
━━━━━━━━━━━━━━━━━━━━━━━━━Internet User Group━━━━
빠르고 안전하고 건전하고 편하고 즐겁고 쉬운 leesun2@soback.kornet.nm.kr
인터넷 항해를 인터넷 유저 그룹과 함께 하세요! LEESUN2@hitel.kol.co.kr
━━━━━━━━━━━━━━━━━━━━━━━━━go IUG━━━━━━━━