'Essential Tools'에 해당되는 글 12건
- 2011.12.06 넷캣(Netcat) 간단한 사용방법 2
- 2011.10.25 맨페이지 간단한 색상 추가해서 보기
- 2011.09.23 Vim 편집기로 스크립트 작성하기
- 2011.09.22 [VIM Plugin] T-Commant
- 2011.09.22 [VIM Plugin] snipMate
- 2011.09.10 한장으로 보는 정규 표현식(Regular Expression) cheat sheet
- 2011.06.27 [VIM] 단축키 정리
- 2011.06.27 [gcc] 옵션 정리
넷캣(Netcat)은 TCP나 UDP 프로토콜을 사용하는 네트워크 연결에서 데이터를 읽고 쓰는 간단한 유틸리티 프로그램이다. 일반적으로는 UNIX의 cat과 비슷한 사용법을 가지고 있지만 cat이 파일에 쓰거나 읽듯이 nc는 network connection 에 읽거나 쓴다. 이것은 스크립트와 병용하여 network에 대한 debugging, testing tool로써 매우 편리하지만 반면 해킹에도 이용범위가 넓다. |
connect to somewhere: listen for inbound: | nc [-options] hostname port[s] [ports] ... nc -l -p port [-options] [hostname] [port] |
[ 옵션 ] | [ 설명 ] |
-c shell commands | as `-e'; use /bin/sh to exec [dangerous!!] |
-e | program to exec after connect [dangerous!!] |
-b | allow broadcasts |
-g | source-routing hop point[s], up to 8 |
-G | source-routing pointer: 4, 8, 12, ... |
-h | this cruft |
-i secs | delay interval for lines sent, ports scanned |
-k | set keepalive option on socket |
-l | listen mode, for inbound connects |
-n | numeric-only IP addresses, no DNS |
-o file | hex dump of traffic |
-p port | local port number |
-r | randomize local and remote ports |
-q secs | quit after EOF on stdin and delay of secs |
-s addr | local source address |
-T tos | set Type Of Service |
-t | answer TELNET negotiation |
-u | UDP mode |
-v | verbose [use twice to be more verbose] |
-w secs | timeout for connects and final net reads |
-z | zero-I/O mode [used for scanning] |
연결 수립 | |
넷캣은 IP주소의 임의의 포트로 연결할 수 있다.
|
서비스 배너 수집 | |
다양한 서비스를 대상으로 그대로 사용할 수 있다. 하지만 HTTP 같은 서비스의 배너를 알아내려면 우선 HTTP명령을 전송해야 한다.
위 결과를 보면 웹 서버 소프트웨어와 운영체제를 알 수 있다. |
간단한 서버 | ||||
포트 1234에서 리슨(listen)하는 간단한 채팅 서버를 만들어 보자.
클라이언트에서 입력한 모든 문자가 서버에 출력된다. 간단한 채팅 서버를 만든 셈이다. |
파일 전송 | ||||
클라이언트에서 넷캣 리스너로 파일을 전송할 수도 있고 역방향으로 파일을 전송할 수도 있다.
클라이언트에서 명령의 결과를 바로 서버 측으로 전송하거나 파일을 전송할 수 있다. |
포트 스캐닝 | |
@ 상세 출력(-v), @ DNS 이름 주소 변환 실시 안 함(-n), @ 데이터 전송 안 함(-z), @ 최대 1초의 연결 리슨 시간(-w 1)을 옵션으로 TCP 프로토콜을 사용해서 1-1023 사이의 포트를 스캔
80, 22번 포트가 열려있음을 확인할 수 있다. ※ 넷캣이 포트 스캐닝을 지원하긴 하지만 포트 스캐닝을 실시할 때는 엔맵(nmap)을 권장. |
백도어 쉘 | ||||
@ 특정 포트(-p)에서 리슨하면서(-l) @ 연결 수립 시 특정 쉘을 실행하도록(-e) 옵션을 지정하여 백도어 쉘을 실행 할 수 있다.
연결이 수립되면 서버에 임의의 리눅스 명령어를 입력할 수 있다. 명령 뒤에 ";"(세미콜론)문자를 덧붙여야 한다. (사용하는 클라이언트 마다 다를 수 있음) 위와 같이 서버에서 실행된 명령의 결과가 클라이언트 화면에 출력된다. 넷캣 리스너를 루트 권한으로 실행하면 서버에서 임의의 모든 작업을 수행할 수 있다. 누구나 해당 포트로 연결해서 넷캣 백도어를 이용할 수 있다는 점과, 넷캣 연결은 기본적으로 암호화되지 않는다는 사실에 주의해야 한다. |
리버스 쉘 | ||||
이 방법은 방금 위에서 살펴본 백도어 쉘과는 반대 케이스다. 이전 예에서는 서버가 쉘을 실행했지만 리버스 쉘에서는 원격 호스트가 서버로 연결하면서 쉘을 실행한다.
서버에서 "connect to [10.0.2.100] from (UNKNOWN)...<etc>"와 같은 메시지를 확인할 수 있다면 리버스 쉘이 성공적으로 연결된 것이다. 서버에서 임의의 명령을 입력하면 원격 머신에서 실행된다. 이처럼 원격 머신의 운영체제에서 지원하는 임의의 명령을 실행할 수 있다. |
'Essential Tools' 카테고리의 다른 글
맨페이지 간단한 색상 추가해서 보기 (0) | 2011.10.25 |
---|---|
한장으로 보는 정규 표현식(Regular Expression) cheat sheet (0) | 2011.09.10 |
[gcc] 옵션 정리 (0) | 2011.06.27 |
DJGPP 설정 (1) | 2011.05.08 |
[Port scanner] Nmap Security Scanner (0) | 2010.09.04 |
@ ~/.bashrc에 다음 추가.
#------------------------------------------//// # Color man pages: #------------------------------------------//// export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking export LESS_TERMCAP_md=$'\E[01;31m' # begin bold export LESS_TERMCAP_me=$'\E[0m' # end mode export LESS_TERMCAP_se=$'\E[0m' # end standout-mode export LESS_TERMCAP_so=$'\E[01;44;33m' # begin standout-mode - info box export LESS_TERMCAP_ue=$'\E[0m' # end underline export LESS_TERMCAP_us=$'\E[01;32m' # begin underline |
$ source ~/.bashrc
$ man ls
'Essential Tools' 카테고리의 다른 글
넷캣(Netcat) 간단한 사용방법 (2) | 2011.12.06 |
---|---|
한장으로 보는 정규 표현식(Regular Expression) cheat sheet (0) | 2011.09.10 |
[gcc] 옵션 정리 (0) | 2011.06.27 |
DJGPP 설정 (1) | 2011.05.08 |
[Port scanner] Nmap Security Scanner (0) | 2010.09.04 |
Vim 편집기로 스크립트 작성하기, Part 1: 변수, 값 및 표현식 Vimscript는 Vim 편집기를 변경하고 확장하기 위한 메커니즘입니다. 스크립트를 사용하면 새 도구를 작성하고 일반 작업을 단순화할 수 있을 뿐만 아니라 편집기의 기존 기능까지도 재설계하여 변경할 수 있습니다. 시리즈의 첫 번째인 이 기사에서는 Vimscript 프로그래밍 언어의 기본 구성 요소인 값, 변수, 표현식, 명령문, 함수 및 명령에 대해 설명합니다. 또한 일련의 간단한 예제를 통해 기능을 직접 구현해 보면서 설명합니다. |
Vim 편집기로 스크립트 작성하기, Part 2: 사용자 정의 함수 사용자 정의 함수는 실제 환경에서 사용하고 있는 복잡한 프로그래밍 작업을 관리하기 위해 애플리케이션을 쉽게 관리할 수 있는 올바른 구성 요소로 분해하는 데 사용되는 필수 도구입니다. 시리즈의 두 번째 기사에 해당하는 이 기사에서는 몇 가지 실용적인 예제를 통해 Vimscript 언어에서 새 함수를 작성하고 전개하는 방법에 대해 설명합니다. |
vim스크립트는 프로그래밍의 초석인 데이터 컬렉션에 대한 연산에 있어 최상의 지원을 제공한다. 이 연재의 세 번째 기사에서는 vim스크립트의 내장 리스트를 이용하여, 리스트를 재구성하거나 연속된 파일명들을 필터링하거나 행 번호의 집합을 정렬하는 것과 같은 매일 하는 연산들을 손쉽게 하는 방법을 배울 것이다. 독자들은 또한 vim의 두 가지 일반적인 사용, 즉 할당 연산자를 정렬하는 사용자 정의 함수를 만들고, 내장 텍스트 완성 기능을 향상시키는 부분에서 리스트의 위력을 확대하고 강화하는 예들을 접할 것이다. |
Vim 편집기로 스크립트 작성하기, Part 4: 사전 사전은 목록에서 다양한 최적화 기능과 상충 관계를 제공하는 컨테이너 데이터 구조입니다. 특히, 사전에서는 요소의 저장 순서가 중요하지 않으며 각 요소의 ID가 명시적입니다. Vimscript를 소개하는 이 시리즈의 네 번째 기사에서는 사전을 소개하면서 사전의 기본 구문에 대한 개요와 여러 기능에 대해 설명합니다. 마지막으로 여러 예제를 통해 사전을 사용하여 효과적으로 데이터를 처리하고 정돈된 코드를 작성하는 방법을 보여 줍니다. |
Vim 편집기로 스크립트 작성하기, Part 5: 이벤트 구동 스크립트 및 자동화 왜 직접 반복하고 있습니까? Vim의 종합적인 이벤트 모델을 구성하면 파일을 로드하거나 편집기 모드 간에 전환하는 등의 특정 편집 이벤트가 발생할 때마다 시간을 절약할 수 있는 스크립트를 실행할 수 있습니다. 이 시리즈의 다섯 번째 기사인 이 기사에서는 Vim에서 이벤트가 작동하는 방법을 설명하고 유용한 이벤트 유형을 살펴본 다음 특정 스크립트를 특정 이벤트에 연결합니다. 결과적으로 사용자의 요구에 맞게 구성된 자동화된 워크플로우를 얻을 수 있습니다. |
[ 참고 자료 ] |
|
'Essential Tools > VIM - Vi IMproved' 카테고리의 다른 글
[VIM Plugin] T-Commant (0) | 2011.09.22 |
---|---|
[VIM Plugin] snipMate (0) | 2011.09.22 |
[VIM] 단축키 정리 (0) | 2011.06.27 |
[VIMRC] Personal Vim Initializations (개인 환경 설정) (0) | 2009.12.20 |
토글형식의 주석을 자동으로 달아주는 플러그인 입니다.
여러 파일형식을 지원(html, python, sh, c... 등등)
저같은 경우는 그냥 'Ctrl+//' 만 주로 사용하므로 자세한 내용은 해당 사이트 및 문서 참조.
http://www.vim.org/scripts/script.php?script_id=1173
'Essential Tools > VIM - Vi IMproved' 카테고리의 다른 글
Vim 편집기로 스크립트 작성하기 (0) | 2011.09.23 |
---|---|
[VIM Plugin] snipMate (0) | 2011.09.22 |
[VIM] 단축키 정리 (0) | 2011.06.27 |
[VIMRC] Personal Vim Initializations (개인 환경 설정) (0) | 2009.12.20 |
자주 사용하는 코드 조각을 트리거 단어<tab>을 사용하여 코드를 자동 완성 시켜준다.
snippets 디렉토리에 확장자 별로 기본 정의가 되어있고 입맛대로 추가 하여 사용할수 있다.
특별히 플러그인을 추가하여 셋팅할것은 많치 않다.
.vimrc 추가 :
filetype plugin on
"set paste 주석처리
set paste 설정이 되어있으면 작동하지 않을 수 있으므로 주석처리를 한다.(VIM - Vi IMproved 7.3 버전을 사용)
http://www.vim.org/scripts/script.php?script_id=2540
github : http://github.com/msanders/snipmate.vim
'Essential Tools > VIM - Vi IMproved' 카테고리의 다른 글
Vim 편집기로 스크립트 작성하기 (0) | 2011.09.23 |
---|---|
[VIM Plugin] T-Commant (0) | 2011.09.22 |
[VIM] 단축키 정리 (0) | 2011.06.27 |
[VIMRC] Personal Vim Initializations (개인 환경 설정) (0) | 2009.12.20 |
'Essential Tools' 카테고리의 다른 글
넷캣(Netcat) 간단한 사용방법 (2) | 2011.12.06 |
---|---|
맨페이지 간단한 색상 추가해서 보기 (0) | 2011.10.25 |
[gcc] 옵션 정리 (0) | 2011.06.27 |
DJGPP 설정 (1) | 2011.05.08 |
[Port scanner] Nmap Security Scanner (0) | 2010.09.04 |
[ 저장 및 종료 ]
[ex모드] |
[설명] |
:w |
저장 |
:w file.txt |
file.txt 파일로 저장 |
:w >> file.txt |
file.txt 파일에 덧붙여서 저장 |
:q |
vi 종료 |
:q! |
vi 강제 종료 |
ZZ |
저장 후 종료 |
:wq! |
강제 저장 후 종료 |
:e file.txt |
file.txt 파일을 불러옴 |
:e |
현재 파일을 불러옴 |
[ 입력모드 전환 ]
[명령모드] |
[설명] |
[명령모드] |
[설명] |
a |
커서 윈치 다음 칸부터 입력 |
A |
커서 행의 맨 마지막부터 입력 |
i |
커서의 위치에 입력 |
I |
커서 행의 맨 앞에서부터 입력 |
o |
커서의 다음 행에 입력 |
O |
커서의 이전 행에 입력 |
s |
커서 위치의 한 글자를 지우고 입력 |
S(cc) |
커서 위치의 한 행을 지우고 입력 |
[ 이동 ]
[명령] |
[설명] |
[명령] |
[설명] |
H |
왼쪽으로 이동(←) |
l |
오른쪽으로 이동(→) |
j |
아래 행으로 이동(↓) |
k |
위 행으로 이동(↑) |
w or W |
다음 단어의 첫 글자로 이동 |
b or B |
이전 단어의 첫 글자로 이동 |
e or E |
단어의 마지막 글자로 이동 |
<CR> |
다음 행의 첫 글자로 이동 |
^ |
그 행의 첫 글자로 이동 |
$ |
그 행의 마지막 글자로 이동 |
+ |
다음 행의 첫 글자로 이동 |
- |
위 행의 첫 글자로 이동 |
( |
이전 문장의 첫 글자로 이동 |
) |
다음 문장의 첫 글자로 이동 |
{ |
이전 문단으로 이동 |
} |
다음 문단으로 이동 |
H |
커서를 화면의 맨 위로 이동 |
z<CR> |
현재 행을 화면의 맨 위로 이동 |
M |
커서를 화면의 중앙으로 이동 |
z. |
현재 행을 화면의 중앙으로 이동 |
L |
커서를 화면 최하단으로 이동 |
z- |
현재 행을 화면의 최하단으로 이동 |
[n]H |
커서를 위에서 n행으로 이동 |
[n]L |
커서를 아래에서 n행으로 이동 |
<Ctrl>+u |
반 화면 위로 스크롤 |
<Ctrl>+d |
반 화면 아래로 스크롤 |
<Ctrl>+b |
한 화면 위로 스크롤 |
<Ctrl>+f |
한 화면 아래로 스크롤 |
gg, 1G |
문서의 맨 첫 행으로 이동 |
G |
문서의 맨 마지막 행으로 이동 |
[n]G |
n행으로 이동 |
:[n]<CR> |
n행으로 이동 |
[ 삭제 ]
[명령모드] |
[설명] |
x, dl |
커서 위치의 글자 삭제 |
X, dh |
커서 바로 앞의 글자 삭제 |
dw |
한 단어를 삭제 |
d0 |
커서 위치부터 행의 처음까지 삭제 |
D, d$ |
커서 위치부터 행의 끝까지 삭제 |
dd |
커서가 있는 행을 삭제 |
dj |
커서가 있는 행과 그 다음 행을 삭제 |
dk |
커서가 있는 행과 그 앞 행을 삭제 |
[ 복사 & 붙이기 ]
[명령모드] |
[설명] |
[명령모드] |
[설명] |
yy |
커서가 위치한 한 행 복사 |
p |
붙여넣기 |
[n]yy |
커서가 위치한 이후로 n행 복사 |
[n]p |
n번만큼 붙여넣기 반복 |
[ 블록 지정 관련 ]
[명령] |
[설명] |
[명령] |
[설명] |
v |
블록 지정 |
<Ctrl>+v |
비쥬얼 블록 지정 |
~ |
대소문자 전환 |
d |
삭제 |
y |
복사 |
c |
치환 |
> |
행 앞에 탭 삽입 |
< |
행 앞에 탭 제거 |
: |
선택된 영역에 대하여 ex명령 |
J |
행을 합침 |
U |
대문자로 만듦 |
u |
소문자로 만듦 |
[ 문자열 탐색 및 치환 ]
[ex모드] |
[설명] |
/[문자열] |
문자열을 탐색 |
:s/old/new |
현재 행의 처음 old를 new로 교체 |
:s/old/new/g |
현재 행의 모든 old를 new로 교체 |
:10,20s/old/new/g |
10행부터 20행까지 모든 old를 new로 교체 |
:-3,+4s/old/new/g |
현재 커서 위치에서 3행 위부터 4행 아래까지 old를 new로 교체 |
:%s/old/new/g |
문서 전체에서 old를 new로 교체 |
:%s/old/new/gc |
문서 전체에서 old를 new로 확인하며 교체 |
:g/pattern/s//new/g |
:%s/old/new/g와 동일 |
[ vim 정규 표현식 ]
[메타문자] |
[설명] |
[메타문자] |
[설명] |
^ |
행의 첫 문자([]안에서는 not의 의미) |
$ |
행의 끝 |
. |
아무 문자나 한 문자 의미 |
\| |
or의 의미 |
[ ] |
[]사이의 문자 중 하나 |
\{min,max\} |
min 이상 max 이하 반복됨 |
* |
앞의 내용이 0번 이상 반복됨 |
\+ |
앞의 내용이 1번 이상 반복됨 |
\< |
단어의 시작 |
\> |
단어의 끝 |
\n |
새 행 문자 |
\t |
탭 문자 |
[ vim 확장 정규 표현 문자열 ]
[이스케이프] |
[설명] |
\i (소문자 아이) |
변수 지정에 사용되는 문자들 [_0-9A-Za-z] |
\I (대문자 아이) |
\i와 같지만 숫자는 제외 |
\k |
keyword로 사용하는 문자 [_\.\-0-9A-Za-z] |
\K |
\k와 같지만 숫자는 제외 |
\f |
파일 이름으로 사용하는 문자 |
\F |
\f와 같지만 숫자는 제외 |
\p |
프린트 가능한 문자 |
\P |
\p와 같지만 숫자는 제외 |
\s |
whitespace character(공백과 탭) |
\S |
non-whitespace character |
\d |
숫자 [0-9] |
\D |
숫자가 아닌 문자 [^0-9] |
\x |
16진수 숫자 [0-9A-Fa-f] |
\X |
16진수 숫자가 아닌 문자 [^0-9A-Fa-f] |
\o |
8진수 숫자 [0-7] |
\O |
8진수 숫자가 아닌 문자 [^0-7] |
\w |
영문 단어에서 사용되는 문자 [0-9A-Za-z-] |
\W |
영문 단어에서 사용되지 않는 문자 [^0-9A-Za-z-] |
\h |
영문 단어의 시작에 사용되는 문자 [A-Za-z-] |
\H |
영문 단어의 시작에 사용되지 않는 문자 [^A-Za-z-] |
\a |
모든 알파벳 [A-Za-z] |
\A |
알파벳이 아닌 문자 [^A-Za-z] |
\l (소문자 엘) |
소문자 [a-z] |
\L |
소문자가 아닌 문자 [^a-z] |
\u |
대문자 [A-Z] |
\U |
대문자가 아닌 문자 [^A-Z] |
\e |
<ESC> |
\t |
<TAB> |
\r |
캐리지 리턴 (CR) |
\b |
백스페이스(BS) |
\n |
새 행(LF) |
[ POSIX 문자 클래스 ]
[문자 클래스] |
[내용] |
[:alnum:] |
알파벳과 숫자 [A-Za-z0-9] |
[:alpha:] |
알파벳 [A-Za-z] |
[:cntrl:] |
제어 문자 |
[:blank:] |
탭과 공백 문자 |
[:digit:] |
숫자 [0-9] |
[:graph:] |
제어 문자와 공백 문자를 제외한 문자 |
[:lower:] |
소문자 [a-z] |
[:upper:] |
대문자 [A-Z] |
[:print:] |
제어 문자를 제외한 문자. 즉 프린터 할 수 있는 문자 |
[:punct:] |
[:graph:] 문자 중 [:alnum:]을 제외한 문자. (ex: !, @, #, $, %, ^....) |
[:space:] |
화이트 스페이스 (ex: 공백, 탭, 캐리지 리턴, 새 행, 수직 탭, 폼 필드) |
[:xdigit:] |
16진수 |
[ 파일 버퍼 관련 명령 요약 ]
[ex모드] |
[설명] |
:buffers |
버퍼의 내용을 나열 |
:files or :ls |
버퍼의 내용을 나열 |
:b[n] |
n번 버퍼로 이동 |
:bd[N] |
n 버퍼를 삭제(n이 없으면 현재의 버퍼를 완전 삭제) |
:bw[n] |
n 버퍼를 완전 삭제(n이 없으면 현재의 버퍼를 완전 삭제) |
:bp[n] |
이전 버퍼로 이동. n을 붙이면 n번만큼 이전 버퍼로 이동 |
:bn[n] |
이후 버퍼로 이동. n을 붙이면 n번만큼 이후 버퍼로 이동 |
:sb[n] |
창을 수평 분할하여 n번 버퍼를 로드 |
:bf |
첫 번째 버퍼로 이동 |
:bl |
마지막 버퍼로 이동 |
:al |
현재 열려 있는 모든 버퍼를 수평 분할 창에 로드 |
[ 마킹 및 마킹한 위치로 이동 ]
[명령모드] |
[설명] |
[명령모드] |
[설명] |
ma |
a로 마킹, mb는 b로 마킹... |
|
|
`a |
a로 마킹된 위치로 돌아감 |
'a |
a로 마킹된 행의 처음으로 돌아감 |
' ' |
직전에 커서가 위치하던 행의 처음 |
` ` |
진전의 커서 위치로 이동 |
' " |
이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 행의 처음으로 이동 |
` " |
이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동 |
[ 다중 창 관련 명령 ]
-[ 창 생성 ]- |
||
[명령모드] |
[ex모드] |
[결과] |
<Ctrl>+w s |
:sp[plit] |
현재 파일을 두 개의 수평 창으로 나눔 |
<Ctrl>+w v |
:[n]vs[plit] |
새로운 수직 창 생성, n이 붙으면 n칸 크기의 창 분할 |
<Ctrl>+w n |
:new |
새로운 수평 창 생성 |
<Ctrl>+w ^ |
|
수평 창으로 나누고 이전 파일의 오픈 |
<Ctrl>+w f |
|
창을 수평으로 나누고 커서 위치의 파일을 오픈 |
<Ctrl>+w i |
|
커서 위치의 단어가 정의된 파일을 오픈 |
-[ 창 삭제 ]- |
||
<Ctrl>+w q |
:q[uit]! |
현재 커서의 창을 종료 |
<Ctrl>+w c |
:clo[se] |
현재 커서의 창을 닫음 |
<Ctrl>+w o |
:on[ly] |
현재 커서의 창만 남기고 모든 창 삭제 |
-[ 창 이동 ]- |
||
<Ctrl>+wh |
|
왼쪽 창으로 커서 이동 |
<Ctrl>+wj |
|
아래쪽 창으로 커서 이동 |
<Ctrl>+wk |
|
위쪽 창으로 커서 이동 |
<Ctrl>+wl |
|
오른쪽 창으로 커서 이동 |
<Ctrl>+ww |
|
창을 순차적으로 이동 |
<Ctrl>+wp |
|
가장 최근에 이동한 방향으로 이동 |
<Ctrl>+wt |
|
최상위 창으로 이동 |
<Ctrl>+wb |
|
최하위 창으로 이동 |
-[ 창 위치 바꾸기 ]- |
||
<Ctrl>+wr |
|
순차적으로 창의 위치를 순환 |
<Ctrl>+wx |
|
이전 창과 위치를 바꿈 |
-[ 창 크기 조정 ]- |
||
<Ctrl>+w = |
|
창의 크기를 모두 균등하게 함 |
<Ctrl>+w _ |
|
수평 분할에서 창의 크기를 최대화 |
<Ctrl>+w | |
|
수직 분할에서 창의 크기를 최대화 |
<Ctrl>+w [n]+ |
:res[ize] +n |
창의 크기를 n행만큼 증가 (Ctrl+w +는 1행만큼 증가) |
<Ctrl>+w [n]- |
:res[ize] -n |
창의 크기를 n행만큼 감소 (Ctrl+w -는 1행만큼 증가) |
<Ctrl>+w [n]> |
|
창의 크기를 오른쪽으로 n칸만큼 증가(수직 창에 한함) |
<Ctrl>+w [n]< |
|
창의 크기를 왼쪽으로 n칸만큼 증가(수직 창에 한함) |
[ ctags 관련 명령 ]
[ex모드] |
[설명] |
:ta [tag] or <Ctrl>+] |
[tag]가 정의된 위치를 나열하고 선택한 위치로 점프. 현재 위치는 stack에 push된다. |
:ts [tag] or :서 [tag] |
|
:po or <Ctrl>+t |
stack top에 저장된 위치를 pop하고 그 위치로 점프 |
:sts [tag] |
[tag]가 정의된 위치를 나열하고 선택한 위치로 창을 수평 분할하여 새로 생성된 창에 표시 |
:stj [tag] |
|
:tn |
tj나 ts로 점프했을 때 다음 tag로 점프 |
:tp |
tj나 ts로 점프했을 때 이전 tag로 점프 |
:tr |
tj나 ts로 점프했을 때 처음 tag로 점프 |
:tl |
tj나 ts로 점프했을 때 마지막 tag로 점프 |
:pts [tag] |
[tag]가 정의된 위치를 나열하고 선택한 위치로 창을 수평 분할하여 새로 생성된 창에 표시하지만 커서는 현재 위치에 유지 |
:ptj [tag] |
미리보기 윈도우에 tag가 정의된 형식을 보임 |
:ptn |
ptj나 pts로 점프했을 때 다음 tag로 점프 |
:ptp |
ptj나 pts로 점프했을 때 이전 tag로 점프 |
:ptr |
ptj나 pts로 점프했을 때 처음 tag로 점프 |
:ptl |
ptj나 pts로 점프했을 때 마지막 tag로 점프 |
[ cscope 관련 명령 ]
:cs find {질의 종류} {심볼} |
|
0 or s |
이 C symbol 찾기 |
1 or g |
이 정의 찾기 |
2 or d |
이 함수에 의해 불려지는 함수들 찾기 |
3 or c |
이 함수를 부르는 함수들 찾기 |
4 or t |
Find assignments to |
6 or e |
이 egrep 패턴 찾기 |
7 or f |
이 파일 찾기 |
8 or i |
이 파일을 포함하는 파일들 찾기 |
'Essential Tools > VIM - Vi IMproved' 카테고리의 다른 글
Vim 편집기로 스크립트 작성하기 (0) | 2011.09.23 |
---|---|
[VIM Plugin] T-Commant (0) | 2011.09.22 |
[VIM Plugin] snipMate (0) | 2011.09.22 |
[VIMRC] Personal Vim Initializations (개인 환경 설정) (0) | 2009.12.20 |
[ GCC 전역 옵션]
옵션 |
설명 |
-E |
전처리 과정 화면에 출력 |
-S |
어셈블리 파일 생성 |
-c |
오브젝트 파일 생성 |
-v |
컴파일 과정 화면에 출력 |
--save-tmps |
컴파일 시 생성되는 중간 파일 저장 |
-da |
컴파일 과정에서 생성되는 중간 코드 생성(RTL 파일 등 생성) |
[ 전처리기(cpp0) 옵션]
옵션 |
설명 |
-l[패스] |
헤더 파일을 탐색할 디렉토리 지정 (ex_: -l/opt/include) |
-include[헤더 파일 패스] |
해당 헤더 파일을 모든 소스 내 추가 (ex_: -include /root/my.h) |
-D[매크로] |
외부에서 #define 지정 (ex_: -DDEBUF) |
-D[매크로]=[매크로 값] |
외부에서 해당 매크로를 정의하고 값을 지정 (ex_: -DDEBUG=1) |
-U[매크로] |
외부에서 #endef 지정 (ex_ -UDEBUG) |
-M 또는 -MM |
make 기술 파일을 위한 소스 파일의 종속 항목 출력 |
-nostdinc |
표준 C 헤더 파일을 include하지 않음 |
-C |
전처리 과정에서 주석을 제거하지 않음 |
-Wp,[옵션 리스트] |
옵션 리스트를 전처리기에 바로 전달 |
[ C컴파일러(cc1) 옵션]
- C 언어 옵션 - | |
옵션 |
설명 |
-ansi |
ANSI C 문법으로 문법 검사 |
-std=[c 표준] |
지정한 C 표준으로 문법 검사 (표준:c89, c99, gnu89, gnu99 등) |
-traditional |
K&R C문법으로 문법 검사 |
-fno-asm |
asm, inline, typeof 키워드를 사용하지 않음(gnu89 문법 기준) |
- 경고 옵션 - | |
-Wall -W |
모든 경고 메시지 출력 |
-w |
모든 경고 메시지 제거 |
-Werror |
모든 경고를 오류로 취급하여 컴파일 중단 |
-pedantic |
C89 표준에서 요구하는 모든 경고 메시지를 표시 |
-pedantic-errors |
C89 표준에서 요구하는 모든 오류 메시지를 표시 |
-Wtraditional |
ANSI C와 K&R C 간에 서로 다른 결과를 가져올 수 있는 부분이 있다면 경고 |
- 최적화 옵션 - | |
-O0 |
아무런 최적화를 수행치 않음 |
-O1 또는 -O |
최적화 레벨 1 수행 |
-O2 |
최적화 레벨 2 수행 |
-O3 |
최적화 레벨 3 수행 |
-O4 |
사이즈 최적화 수행 |
- 디버깅 옵션 - | |
-g |
바이너리 파일에 디버깅 정보 삽입 |
-pg |
프로파일을 위한 코드 삽입 |
[ 어셈블리(as) 옵션]
옵션 |
설명 |
-Wa,[옵션 리스트] |
어셈블러에게 옵션 리스트를 바로 전달 |
-Wa,-al |
어셈블된 코드와 인스트럭션을 보임 |
-Wa,-as |
정의된 심볼을 보임 |
[ 링크(ld) 옵션]
옵션 |
설명 |
-L[패스] |
라이브러리 탐색 디렉토리 지정 (ex_: -L/opt/lib) |
-l[라이브러리 이름] |
해당 라이브러리를 링크 (ex_: -lm) |
-shared |
공유 라이브러리를 우선하여 링크 |
-static |
정적 라이브러리를 우선하여 링크 |
-nostdlib |
표준 C 라이브러리를 사용하지 않음 |
-Wl,[옵션 리스트] |
옵션 리스트를 링크에 바로 전달 |
'Essential Tools' 카테고리의 다른 글
맨페이지 간단한 색상 추가해서 보기 (0) | 2011.10.25 |
---|---|
한장으로 보는 정규 표현식(Regular Expression) cheat sheet (0) | 2011.09.10 |
DJGPP 설정 (1) | 2011.05.08 |
[Port scanner] Nmap Security Scanner (0) | 2010.09.04 |
[토탈커맨더] Total Commander 단축키 (0) | 2010.05.09 |