여기는 저의 2004~2007년까지의 기록입니다. 이 블로그는 이제 Tistory로 옮겼습니다.
2008년부터의 기록은 http://blog.studioego.info 로 가시기 바랍니다.

StudioEgo's Thoughts, seasonⅡ


유용한 vi명령어


네이트 통에서 퍼왔습니다.
펌질은 싫지만...VI명령어는 외워야 하고.. 익숙하지 않은 관계로 펌질했습니다 -_-a;;
학교 서버중에서 SPARC Machine에서 어셈블리 언어 프로그래밍 할려면 vi로 편집한후 gcc, gdb를 돌려야 하므로, vi를 알아야 합니다.

이 것 어떻게 하면 잘 외워지는지... 잘 쓰지않아서 외워지지 않더군요. 기본적인 명령어 예를 들어 :i, :wq만 알뿐 -_-;;

유용한 vi명령어

삽입
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으로 지정한 숫자만큼 적용)

ctags사용
쉘에서 ctags -R하여 모든 소스에 대해 인덱스 생성
vi를 실행하고 검색할 단어를 :ta tag로 지정하든지, 단어가 있는 곳에 커서를 둔다.
해당함수(오브젝트)가 정의된 곳으로 가기: Ctrl + ]
되돌아가기: Ctrl + t

여러 파일 편집
vi a.c b.c c.c와 같이 여러 파일을 지정한다.
args: 파일목록 표시
n: 다음파일 편집(vi시작지 지정하지 않는 파일은 'n 파일이름'이로 지정하면 된다.)
rew: 이전 파일 편집(vim에선 prev를 사용해도 된다)
*현재 편집중인 파일을 저장해야 다음 파일을 수정할 수 있음에 주의
(불편한 편집이 아닐 수 없다.)

여러줄을 주석으로 처리할때
10줄을 주석기호 #을 사용하여 주석처리하려면 다음과 같이 하면 된다.
우선, 첫째줄에 #를 붙이고, 두째줄로 넘어와 9.를 입력하면 된다.
.(period)는 마지막에 수행한 명령어를 반복하는 명령이다.
by Ego君 | 2006/09/25 05:42 | 리눅스 | 트랙백(2) | 덧글(12)
트랙백 주소 : http://sungdh86.egloos.com/tb/2717336
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from ATle's Home at 2006/10/14 10:18

제목 : awer
유용한 vi명령어 ...more

Tracked from exラ&#.. at 2007/10/25 12:27

제목 : ライブ&#12..
ライブチャット...more

Commented by 미리내 at 2006/09/25 05:52
으하하핫! VI편집기, 저도 Perl이나 리눅스 설정 바꿀 때 써보긴 했는데
한동안 안쓰면 잊어버리더라고요 =ㅁ=;;
Commented by 정태영 at 2006/09/25 07:57
dxvypG^$/?n 정도가 제일 많이 쓰는게 아닐까 싶네요;; v 는 그냥 블럭 V 는 라인 블럭 ctrl+v 는 (이걸뭐라고 부르지) 하튼 칸+라인블럭? 에다가 y 로 복사하고 p 로 붙이고 G 로 마지막 라인으로 가고 /나? 로 찾고 n 으로 다음 검색 결과로 넘어가고 N 으로 이전 검색결과로 갈 수 있죠 ;)

dd 로 현재 라인 제거도 가능하고 yy 로 현재 라인 복사도 할 수 있습니다.

v 로 블럭설정 후 ! 로 외부 명령 실행이라거나 s/찾을패턴/대체할문자열/g 정도도 익혀두면 편합니다. (v 로 블럭설정후 !iconf -f euc-kr -t utf-8 정도를 실행하면 블럭설정한 곳만 인코딩 변환을 할 수 있다거나 뭐 하튼 이용하기 나름입니다.)

블럭 설정 후 'ay 'by 'cy 'ap 'bp 식으로 특정 변수에 값을 저장해놨다가 붙여넣기 하는 방법도 있기는 한데 ... 막상 이건 잘 안쓰게 되더군요.

아 그리고 창 스피릿은 저렇게 어렵게 하는 거 말고 ctrl+w n, ctrl+w v 로도 가능합니다. 창 사이 이동은 ctrl+w 화살표키 로 할 수 있구요. 윈도우 뉴~ 윈도우 버티컬 로 외워놨었는데 실제 저런 의미로 단축키가 할당된건지는 정확히 모르겠네요 --;;

하튼 정말 vi 는 매니악한 편집기 ㅋㅋ
Commented by 정태영 at 2006/09/25 07:58
iconv 를 iconf 로 오타냈네요 --;
Commented by 정태영 at 2006/09/25 08:00
그리고 ts 만 설정하면 조금 불편하고 shiftwidth 까지도 설정해놔야 편할겁니다. 말 그대로 ts 는 탭사이즈, shiftwidth 는 자동인덴트 될 때 얼마나 인덴트할 지 값이라서...
Commented by 정태영 at 2006/09/25 08:03
u (undo) 도 빠졌네요. 도배는... 이만 슝슝
Commented by 클랴 at 2006/09/25 11:16
i,c,d, ijkm 정도밖에 모르는.
Commented by 美妙 at 2006/09/25 16:25
잘 안외워져서 머리가...orz;
Commented by 설화가람 at 2006/09/25 16:25
어욹, 너무 복잡해요... orz....
으어어어어.....
Commented by 헬라 at 2006/09/26 14:01
으하하핫, 전 이거 죽어도 못 외웁니다.
Commented by 투비프리 at 2006/09/28 23:06
pico 쓰세요.
Commented by daewonyoon at 2006/10/06 10:45
Commented by daybreaker at 2006/10/06 23:23
정규표현식 치환, 그리고 vimrc 다루는 방법(특히 인코딩 관련 설정들) 등만 더 익히시면 완전 손에 익히실 수 있을 겁니다 ^^;

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >