다음의 표는 모든 set 명령어 옵션에 대한 간단한 설명이다. 첫번째 열은 옵션으로 영문 철자순으로 나열되었다. 여기서 옵션은 약어를 사용할 수 있으며, 약어는 괄호내에 두었다. 두번째 열은 사용자가 명시적으로 set 명령을 호출(수작업으로 직접 설정하거나 .exrc파일 내에서 설정하거나)하지 않았다면 vi를 사용할 때 기본적으로 사용되는 값이다. 마지막 열은 옵션이 무엇을 의미하는지에 대한 간단한 설명이다.

 

옵션(약어) 기본값

설명

 
autoindent (ai) noai 각 행을 전행과 동일하게 들여쓰기 한다. shiftwidth 옵션과 함께 사용된다.
autoprint (ap) ap 각 편집 명령 후, 변경사항을 화면에 출력한다(전역 대치의 경우, 마지막 대치만이 출력된다)
autowrite (aw) noaw :n으로 다른 파일을 열기전이나 :!.로 Unix 명령을 수행하기 전에 파일이 변경되어다면 자동적으로 저장한다.
beautify (bf) nobf 입력하는 동안 모든 제어문자를 무시한다(탭, 개행문자나 폼피드는 제외)
directory (dir) /tmp ex가 버퍼 파일을 저장하는 디렉토리의 이름
edcompatible noed- compatible 대치 명령에대해 ed와 같은 특징을 사용한다.
errorbells (eb) errorbells 오류시 벨소리를 낸다.
hardtabs (ht) =8 하드 탭에대한 값을 지정
ignorecase (ic) noic 검색시 대소문자를 구분하지 않는다.
lisp nolisp 적당한 lisp 형식으로 들여쓰기를 한다. ( ), { }, [[와 ]]는 lisp에서와 마찬가지로 동작한다.
list nolist 탭을 ^I로, 행의 끝은 $로 표시한다(행의 끝에 공백이나 탭이 있는지 알아보기 위해 list를 사용한다)
magic magic 아무개 문자 .(점), *(별표)와 [ ](대괄호)는 pattern에서 특별한 의미를 갖는다.
mesg mesg vi로 편집하는 동안 시스템 메시지를 터미날로 출력하도록 한다.
number (nu) nonu 편집화면 좌측에 행의 수를 출력한다.
open open ex로부터 open이나 visual 모드로 기입을 허용한다.
optimize opt noopt 여러행을 프린트할 때 행 끝의 캐리지 리턴을 삭제하며, 공백문자(탭, 공백)으로 시작되는 행을 프린트할 때 Dumb 터미널로 빠르게 출력한다.
paragraphs (para) =IPLPPQP LIpplpipbp {또는 }에의해 이동할 문단 구분자를 정의한다. 값에서 문자 쌍은 문단의 시작을 나타내는 nroff/troff 매크로의 이름이다.
prompt prompt ex 프로프트(:)를 설정한다.
readonly (ro) noro 쓰기 명령 다음에 !를 사용하지 않는한 어떠한 파일도 저장할 수 없다(w, ZZ, autowrie와 동작한다)
redarw (re) noredraw 편집이 수행되면 언제나 화면을 다시 그린다(삽입 모드는 존재하는 글자사이에 바로 글자를 십입하며, 행 삭제는 즉시 아래 행을 현재행에 붙인다). 기본값은 선로 속도와 터미날 형식에 의존한다. noredraw는 선로 속도가 느린 dumb 터미날을 사용할 때 유용하다. 삭제된 행은 @로 보이며, 삽입된 문장은 ESC를 누르기 전까지 존재하는 문장을 겹처쓰는 것처럼 보인다.
remap remap 키 매핑에서 다시 키 매핑을 사용할 수 있도록 해준다.
report =5 화면 가장 아래행에 경고 메시지를 출력한 Large edit(예, 싱글 편집에의해 영향받는 행의 수)의 크기
scroll =[1/2 window] 스크롤될 화면의 크기
sections =SHNHH HU [[ ]] 이동을 위한 절 구분자를 정의한다. 값의 쌍은 절의 시작을 나타내는 nroff/troff의 이름이다.
shell (sh) =/bin/sh 쉘 기호(:!)와 쉘 명령(:sh)에 사용될 쉘의 경로명과 파일명. 값은 쉘 환경변수로부터 가지고 온다.
shiftwidth (sw) sw=8 autoindent 옵션이 존재할때 후향 탭(^D)의 공백의 수를 정의한다.
showmatch (sm) nosm vi에서 )나 }를 입력하면 깜박이가 일치하는 (, {로 이동한다.(만약 화면에서 매치가 일어나지 않으면 오류 메시지 벨을 울린다.) 프로그래밍시 아주 유용하다.
slowopen (slow) noslow 삽입시 존재하는 문장을 겹처쓰는 것처럼 보인다. 기본값은 선로 속도화 터미날 형식에 의존한다.
tabstop (ts) =8 편지시 TAB에대한 공백의 수를 정의한다(프린터는 탭에대해 여전히 8개의 공백을 사용한다).
taglength (H) =0 태그들에대해 중요한 글자들의 수를 정의한다. 기본값(0)은 모든 글자들이 중요하다는 것을 의미한다.
tags =tags /usr/lib/tags 태그들을 포함하는 파일의 경로명(tag(1) 명령을 보기바란다)(기본적으로 시스템은 /usr/lib/tags와 현재 디렉토리의 파일 tags를 찾는다)
term   터미날 형
timeout timeout 매크로 인식을 위한 시간. 여러개의 키를 매크로로 매핑했을 때 키를 지나치게 천천히 입력하면 매크로로 인식되지 않는다.
ttytype   터미날 형
warn warn 경고로서 "No write since lase change"를 출력한다.
window (w)   화면 상의 파일의 행수를 보여준다. 기본 값은 선로 속도화 터미날 형에 의존한다.
wrapscan (ws) ws 검색시 파일 끝에 도달하면 처음부터 다시 검색한다.
wrapmargin (wm) =0 우측 마진으로 부터 Wrap할 위치를 지정한다. 만약 "0"보다 크면, Wrap되는 지점에 개행문자를 삽입한다.
writeany (wa) nowa 임의의 파일로 저장할 수 있도록 한다.(w 명령을 사용할 때 어떠한 것도 검사하지 않는다.)

 

이포넷, 이포넷 vi set 명령어 옵션

 

 

Posted by sangheum

모든 Unix에 포함되어 있는 편집기가 ex이고, 이 ex를 Visual 모드로 동작 시킨것이 VI(vee-eye라고 발음)이. 다음은 vi에서 사용되는 명령어 목록이다. 너무 많다는 생각이 들지만 몇몇 가지 규칙만 숙지하면 쉽게 사용할 수 있다. vi 명령어는 대소문자를 구분한다. vi 명령어는 i(insert:삽입), d(delect:삭제), c(change:변경), y(Yank:복사)의 기본 명령어와 숫자, 이동명령을 조합해서 사용한다.

      

이동명령
글자 h ,j ,k ,l ←↓↑→
 
문장 w, W, b, B단어 단위로 앞, 뒤로 이동 소문자는 구두점도 하나의 단어로 인식하며, 대문자는 구두 점을 무시한다.
e, E단어의 끝
), (다음, 이전 문장의 시작
}, {다음, 이전 구의 시작
]], [[다음, 이전 절의 시작
 
0, $현재 행의 처음, 마지막 위치
^현재행의 첫 문자(공백은 무시)
+, -다음, 이전 행의 첫 문자
n|현재행의 n번째 열
H화면의 첫 행
M화면의 중간 행
L화면의 마지막 행
nH화면 첫행에서 아래로 n번째 행
nL화면 마지막 행에서 위로 n번째 행
 
화면 CTRL-F, CTRL-B한화면 앞, 뒤로
CTRL-D, CTRL-U반화면 아래, 위로
CTRL-E, CTRL-Y화면 전체를 한행 위, 아래로
z[RETURN]깜박이가 있는 행을 화면 첫행으로
z.깜박이가 있는 행을 가운데 행으로
z-깜박이가 있는 행을 가운데 행으로
 
검색 /pattern앞 방향으로 패턴을 검색
?pattern뒷 방향으로 패턴을 검색
n, N동일, 반대 방향으로 마직막 검색을 반복
/, ?앞, 뒤로 이전 검색을 반복
fx현재 행에서 글자 x를 앞방향으로 검색
Fx현재 행에서 글자 x를 뒷방향으로 검색
tx현재 행에서 글자 x를 앞방향으로 검색한후, 글자 x 전 글자로 이동
Tx현재 행에서 글자 x를 뒷방향으로 검색한후, 글자 x 뒷 글자로 이동
;이전 현재 행 검색을 반복
'이전 현재 행 검색을 반대 방향으로 반복
 
행 번호 CTRL-G현재의 행 번호를 출력
nGn 번째 행으로 이동
G파일의 마지막 행으로 이동
``G 명령 전의 마지막 위치로 이동(두개의 작은 역 따옴표)
:nn 번째 행으로 이동
편집명령
삽입 i, a깜박이 앞, 뒤에 문장 삽입
I, A행의 시작, 끝에 문장 삽입
o, O깜빡이 아래, 윗 줄에 새로운 행 편집
R글자 덥어쓰기
 
변경 r한글자 변경
~대 소문자 변경(다른 명령, 숫자와 결합할 수 없음)
cw한 단어 변경
cw한 단어 변경
cc현재 행 변경
C깜박이 위치에서 행 끝까지 변경
s한 글자를 삭제하고 문장으로 대치
S현재 행을 삭제하고 문장으로 대치
 
삭제, 이동 x한글자 삭제
X깜박이 앞의 한글자 삭제
dw, de한 단어 삭제(단어 다음의 공백 포함), 한 단어만 삭제
dd현재행 삭제
D깜박이 위치에서 행 끝까지 삭제
p, P깜박이 아래, 윗 줄에 삭제한 문장 붙이기
"np삭제 버퍼로 부터 n 번째 행을 깜박이 아래줄에 붙이기(마지막 9개의 삭제행에 대해)
 
복사 yw한단어 복사
yy현재행 복사
"ayy현재행을 a라는 버퍼에 복사
p, P깜박이 아래, 윗 줄에 복사된 문장을 붙임
"aP버퍼 a의 문장을 깜박이 윗줄(p, 아래 줄)에 붙임
 
ex 편집명령 :d행 삭제
:m행 이동
:co행 복사
:.,$d현재 행에서 파일 끝까지 삭제
:30, 60m현재행 다음 줄에 30행부터 60행까지를 이동
.,/pattern/co$현재행 부터 pattern을 포함하는 항까지를 파일 끝으로 복사
명령행 옵션
명령행 vi filefile를 vi 편집기로 호출
vi file1 file2파일들을 연속적으로 vi 편집기로 호출
view file파일을 읽기 모드로 vi 편집기로 호출
vi -R file파일을 읽기 모드로 vi 편집기로 호출
vi -r file 시스템이 크래쉬된 후, 파일과 최근 편집 사항을 복구
vi + file마지막 행으로 파일 열기
vi +n filen 번째 행으로 파일 열기
vi +/pattern filepattern으로 파일 열기
ex file파일을 ex 편집기로 열기
종료명령
종료 명령 ZZ저장하고 빠저나오기
:x저장하고 빠저나오기
:wq저장하고 빠저나오기
:w저장하기
:w!저장하기(겹처쓰기 방지)
:30,60w newfile30번째 행에서 60번째 행까지를 newfile로 저장하기
:30,60w >> file30번째 행에서 60번째 행까지를 file에 덧붙이기
:w %.newfile이라는 파일을 file.new로 저장하기
:q종료하기
:q!종료하기(겹처쓰기 방지)
:Qvi를 종료하고, ex 호출하기
:e file2vi를 종료하지 않고 file2 편집하기
:n다음 파일 편집하기
:e!현재 편집하고 있는 파일(변경사항을 저장하지 않은 원본)을 다시 부르기
:e#이전 파일 편집하기
:preUnix 시스템에 파일보존 신청하기. Unix 프롬프트에서 vi -r file을 입력하면 이전에 변경한 사항을 복구할 수 있다.
#이전 파일명
기타명령
vi 명령 .마지막 명령 반복
u, U마지막 명령, 행에대한 명령 취소
J두 행 합치기
CTRL-L화면 다시 그리기
CTRL-R취소 명령 취소(Redo)
 
ex 명령 :vi로 부터 ex 호출
:viex로 부터 vi 호출
:sh쉘 호출
^D쉘에서 vi로 돌아가기
:! commandUnix 명령어 실행
:r newfilenewfile을 현재 파일로 읽음
:r! commandUnix 명령어의 출력을 현재파일로 읽음
 
표시 mx현재의 위치를 x로 표시(숫자는 안됨)
`xx로 깜박이 이동
``이전 표시나 이동 후 문장으로 되돌아가기
'x표시 x를 포함하는 행의 선두로 이동
''이전 표시를 포함하는 행의 선두로 이동
 
단축 :map x sequence키 x를 편집명령어 집합으로 정의
:unmap xx에대한 정의 삭제
:ab abbr phrasephrase의 약자를 abbr로 한다. abbr이 삽입모드에서 입력되면 완전한 단어나 구로 확장된다.
:unab abbr약어를 삭제한다.
 
사용자화 :set option옵션을 사용
:set option=value옵션에 value를 할당
:set nooption옵션 사용안함
:set사용자에의해 설정된 옵션 보이기
:set all기본 옵션과 사용자가 설정한 모든 옵션의 목록 보이기
:set option?설정된 옵션값 보이기
주의:.exrc 파일내에서는 ex 명령의 시작을 나타내는 콜론(:)을 생략해야 한다.

vi 명령어 ,vi 사용법 을 알아봤다. 꼭 숙지하기 바란다. 몇개의 블로그를 찾아봤지만 이게 최고로 정리가 잘 되어 있다. ^^


Posted by sangheum