- 2014.11.14 수업
1. vi
1) 라인명령모드
행번호 출력하기
:set nu = :se nu // set number
행번호 삭제
:set nonu = :se nonu // set no number
치환 명령어
:[범위]s/[old]/[new]
ex)
5번째 행 치환
:5s/passwd/samadal
20~23행 치환
:20,23/PASS/madal
문서 전체 치환
:%s/MAX/dalma
g:중복문자도 모두 치환
:56s/i/a/g
외부명령어 실행
:! [command] // 잠시 vi 멈추고 외부 명령어 실행, alias작동 안함
:.! [command] // 내 커서가 있는 곳에 결과물 입력
ex)
:!ifconfig
:.!ifconfig
화면 분할
Ctrl + n w // 수평으로 화면 분할
Ctrl + w w // 창 이동
Ctrl + w q or :q // 창 닫기
:f // 현재 편집중인 파일 정보 보여줌
:e // 문서 열어주는 기호. e! 하면 강제로 염
:w [경로] // 저장
:w >> [filename] // 결과물을 다른 파일에 추가
:nr [filename] // n라인 다음줄 밑에 [filename] 내용을 삽입
ex) :3r ./b // 3라인 다음줄에 ./b 파일 내용 삽입
:nr! [command] // n라인 다음줄에 [command] 결과물 삽입
ex) :5r! ls -d // 5라인 다음줄에 ls -d 결과물 삽입
:n(숫자) // n번째 행으로 이동
vi a b c 처럼 동시에 여러개의 창을 띄웠을 경우
:n // 다음 파일 보기
:N // 이전 파일 보기
:args // 내가 열어놓은 파일 목록 보기
:nn // n번째 뒤 파일 보기
ex):3n // 3번째 뒤 파일 보기
vi 내에서 복사
5,12 co 2 // 5~12 줄을 2번째 밑에 복사. 이동은 co -> m
[문제]
/home/samadal/ 에 있는 모든 파일 삭제
:!rm ./*
20번째 라인 밑에 자세한 출력내용(samadal 디렉터리에 있는 모든 파일들(a, b, c, d, e))을 삽입
:!touch ./a ./b ./c ./d ./e
파일 안에 있는 내용 변경 : etc(madal), rc(sam)
:%s/etc/madal/g
:%s/rc/sam/g
5~12번째 라인을 2번째 라인 밑에 복사
:5 8yy :2 p or :5,12 co 2
지금까지 작업한 모든 내용을 /test/sam.test 파일로 저장
:!mkdir /test/
:w /test/sam.test
/home/.sam.test 파일로 저장
:w /home/.sam.test
/backup/madal 파일로 저장
:w /backup/madal
빈문서 파일을 연 후 /backup/madal 파일 열기
:enew!
:e /backup/madal
2014.02.04 추가
유용한 vi명령어 (출처 : http://koreahojin.egloos.com/512216)
삽입
I: 줄의 제일 앞에서 입력
A: 줄의 제일 끝에서 입력
콤보 command
4w: 4단어 skip후 이동
4b: 4단어 skip후 이동
4j,h,k,l: 커서이동시 지정한 수만큼 건너뛰므로 이동을 좀 더 빨리 할 수 있다.
줄의 결합(J)
2줄이 있고, 2째줄을 1째줄 끝에 붙이고 싶다면, 1째줄에서 J를 입력하면 된다.
커서이동
0: 줄의 처음
^: 줄의 처음(글자가 시작되는 처음)
$: 줄의 끝
w: 단어단위 이동
e: w와 같으나 단어의 끝으로 이동
b: w의 반대방향으로 이동
H, M, L: 커서를 화면 상,중,하로 이동
검색(/후 검색할 단어입력)
n: 뒤로 검색
N: 앞으로 검색
매크로
ab aa aaaa: aa를 입력하면 aaaa로 자동변환
치환
s/pattern/replace: 현재줄의 첫번째 matching pattern치환
s/pattern/replace/g: 현재줄의 모든 matching pattern치환
%s/pattern/replace/g: 모든 줄의 치환
line,lines/pattern/replace: 해당 범위의 치환
저장
w>> file: 지정한 파일에 추가
윈도 split
vi내에서 위아래로 윈도가 분활되면서 2개의 파일을 동시에 open/편집할 수 있다.
ex-mode(:프롬프트상태)에서 'sp 파일이름'
윈도우가 전환은 Ctrl+ww
기타
1). d의 경우 command모드로 계속 남아 있으나 c는 삭제후 insert모드로 변환한다.
cc, c$, cw등은 유용하게 사용될 수 있다.
2) .은 마지막 명령을 되풀이한다.
visual모드
윈도의 텍스트 에디터와 같이 선택부분이 반전되면서 복사,삭제등을 할 수 있다.
v로 visual모드로 집입하여 커서키를 사용해 원하는 부분을 선택한다.
복사는 y, 삭제/잘라내기는 d로 할 수 있다.
vi설정(vim설정)
자신의 홈디렉토리에 .vimrc를 생성하고 다음과 같이 할 수 있다.
set ai
set ts=4
set nu
각각 auto-indent, tab stop, numbering
윈도에서 작업중 vi에 붙여넣기시 계단현상발생 방지
:set paste
위치기억(UltraEdit의 ALT-F2, F2와 동일한 기능)
m{a-z}: 현재위치를 {a-z}로 북마크함
`{a-z}: 기억해둔 {a-z}로 이동. 보통 한개만 등록했다면 그냥 ``를 사용하면 된다.
레코딩
설정파일의 주석추가/삭제시 유용하게 사용할 수 있다.(이미 vi에 매크로기능이 있지만, 레코딩이
UltraEdit의 매크로기능과 유사하다.)
q{a-z}: {a-z}로 레코딩 시작. {a-z}만 가능한게 아니고 실제 {0-9a-zA-Z"}를 적기 번거로워 이렇게
표시만 한 것이다.
q: 레코딩 종료
@{a-z}: 레코딩 내용 적용(@@를 하면 바로 이전의 레코딩내용을 적용, N@@은 N으로 지정한
숫자만큼 적용)
'Study > CentOS' 카테고리의 다른 글
[09] useradd -D, usermod (0) | 2015.03.27 |
---|---|
[08] passwd, shadow, group, gshadow, useradd, passwd, skel (0) | 2015.03.27 |
[06] 명령어 find, shutdown, vi(1) & FTP 방화벽 설정 관련(집) (0) | 2015.03.27 |
[05] alias, touch, head, tail, more, less, nl, |(파이프), cat, ftp, date, clock, cal (0) | 2015.03.27 |
[04] cp, mv, mkdir, rmdir, rm (0) | 2015.03.27 |