보관함

System Power States

출처 : http://www.jiniya.net/wp/archives/4511

Power state ACPI state Description
Working S0 The system is fully usable. Devices that are not in use can save power by entering a lower power state.
Sleep S1 S2 S3 The system appears to be off. Power consumption is reduced to one of several levels, depending on how the system is to be used. The lower the level of power consumption, the more time it takes the system to return to the working state.
Hibernation S4 The system appears to be off. Power consumption is reduced to the lowest level. The system saves the contents of memory to a hibernation file, preserving the state of the operating system, applications, and open documents.
Soft Off S5 The system appears to be off. Some components remain powered so the computer can wake from input from the keyboard, LAN, or a USB device. The working context can be restored if it is stored on nonvolatile media.
Mechanical Off G3 The system is completely off and consumes no power. The system returns to the working state only after a full reboot.

동작 상태(S0), 수면 상태(S1, S2, S3), 하이버네이션 상태(S4), 소프트 오프 상태(S5), 그리고 완전 오프 상태(G3)

하이버네이션을 시키는 방법

전원을 꺼버릴 권한이요. 그렇다면 당연히 해당 권한을 획득

깨우기
웨이터블 타이머(waitable timer)가 정식 명친인데요, 이 녀석은 하이버네이션 상태가 되더라도 동작

대기 타이머에서 깨어나더라도 운영체제는 시스템을 바로 깨우지 않습니다. 우리가 전원이 필요하다고 운영체제에 알려줄 때 윈도우는 친절히도 시스템에 전원을 넣고 이전 상태로 복구

정규식 샘플

 

 

VIM 유용한 명령

출처 : http://hyok.kr/33

글 수정하기

:12,24j : 12줄부터 24줄까지 합치고 각 줄의 공백은 그대로 두기.
~ : 대소문자 전환하기
r : 현재 커서아래에 있는 글자를 다른 문자로 바꾸기
4rx : 현재 커서 이후 4개의 글자를 “x” 문자로 바꾸기
R : ESC키를 누를때 까지 덮어쓰기
>> : 현재 줄을 오른쪽으로 들여쓰기 하기
3>> : 세 줄을 오른쪽으로 들여쓰기 하기
>% : 괄호등이 있는 곳에서 실행하며, 괄호의 다른 짝이 되는 부분까지를 오른쪽으로 들여쓰기 하기
>} : 한 문단을 오른쪽으로 들여쓰기 하기
>’m : m 문자로 마크된 줄까지 들여쓰기 하기 (마크는 mx 에서 x를 원하는 마크 문자로 지정해서 한다)
<< : 왼쪽으로 내어쓰기 하기(그 외 다른 기능들은 들여쓰기와 같은 조합을 사용할 수 있음)

d^ : 현재 위치부터 줄의 처음까지 삭제하기
d$ : 현재 위치부터 줄의 끝까지 삭제하기
dw : 커서의 현재 위치부터 단어의 끝까지 삭제하기
d3w : 3 단어 삭제하기
3dd : 현재 줄포함 아래로 3 줄 삭제하기
d/word : 현재 위치부터 오른쪽으로 “word” 검색하여 그 직전까지 삭제하기
d?word : 현재 위치부터 왼쪽으로 “word” 검색하여 그것을 포함해서 삭제하기
D : 현재 위치부터 줄 끝까지 삭제하기
u : 삭제 취소하기
U : 방금 수정했던 줄 전체를 원래 상태로 되돌리기
!!cut -c41- : 현재 줄에서 처음 40칸(41 – 1)을 삭제한다.

yw : 한 단어 복사하기
yy : 현재 줄 복사하기
Y : 현재 줄 복사하기(yy와 동일)
nyy : n 줄 복사하기
y$ : 줄 끝까지 복사하기
y) : 문장(구두점 등으로 끝남) 끝까지 복사하기
y’x : 현재 위치부터 마크 x 까지 복사하기 (마크는 mx 에서 x를 원하는 마크 문자로 지정해서 한다)
y/word : 현재 위치부터 “word”라는 단어 직전까지 복사하기

“ay’m : 현재 위치부터 마크 m까지를 복사하여 버퍼 “a”에 저장하기. “:e filename” 혹은 “:n filename”으로 다른 파일로 이동하여서로 다른 파일간의 복사에 사용될 수 있음.
“ayy : 버퍼 “a”에 현재 줄을 복사하여 저장하기
“a3Y : 버퍼 “a”에 세 줄을 복사하여 저장하기
“A3Y : 버퍼 “a”에 3줄을 복사하여 그 이전 버퍼 내용에 이어 저장하기
“ap : 아래 줄에 버퍼 “a”의 내용을 붙여넣기
@a : 버퍼 “a”에 있는 문자열을 명령으로써 실행한다. VI 모드와 EX 모드 모두에서 작동한다. 즉 @a 와 :@a 둘다 된다.

20I-<ESC> : 줄의 시작부분에 20개의 빼기기호(-) 삽입하기

이동하기

0 : 커서를 줄의 맨 처음으로
$ : 커서를 줄의 끝으로
w : 한 단어 앞으로(현재 위치에서 오른쪽으로, 구두점이 있으면 구두점 앞까지 단어로 간주)
3w : 세 단어 앞으로
b : 한 단어 뒤로(현재 위치에서 왼쪽으로, 구두점이 있으면 구두점 앞까지 단어로 간주)
e : 커서를 단어의 맨 끝으로
G : 커서를 파일의 맨 마지막 줄로
nG : 줄번호 n 의 맨 첫칸으로
1G : 파일의 맨 첫 줄로
n| : n번째 칸으로. | 은 Shift- 를 누르면 나오는 세로 바이다.
f: 현재 줄에서 앞으로로 한 문자 찾아가기
fa : 현재 줄에서 앞쪽으로 문자 “a” 찾아가기
2fa : 현재 줄에서 앞쪽으로 두 번째 문자 “a” 찾아가기
F : 현재 줄에서 뒷쪽으로 문자 찾아가기
Fz : 현재 줄에서 뒷쪽으로 문자 “z” 찾아가기
t : 현재 줄에서 앞쪽으로 지정된 문자의 바로 앞 칸으로
T : 현재 줄에서 뒷쪽으로 지정된 문자의 바로 뒷 칸으로
) : 다음 문장으로(구두점으로 구분)
} : 다음 문단으로(빈 줄로 구분)
] : 다음 섹션으로
% : 괄호 짝 찾아가기
^B : 한 페이지 뒤로 스크롤한다. (^B 는 Ctrl-B를 의미한다)
^F : 한 페이지 앞으로 스크롤한다.
^U : 반 페이지 뒤로 스크롤한다.
^D : 반 페이지 앞으로 스크롤한다.
z<enter>: 현재 줄을 화면 맨 위로 올린다.
z. : 현재 줄을 화면 가운데로 옮긴다.
z- : 현재 줄을 화면 맨 아래로 내린다.

검색 및 치환

:set ic : 대소문자를 무시한다.
/word : word를 앞으로 검색한다.
?word : word를 뒤로 검색한다.
n : 검색한 단어의 앞방향 다음 위치로 이동한다.
* : 현재 커서 위치에 있는 단어를 앞으로 검색한다.(vim)
# : 현재 커서 위치에 있는 단어를 뒤로 검색한다.(단어 단위 일치, 완전한 한 단어로 존재할 경우에만 검색됨) (vim)
g* : 현재 커서 위치에 있는 단어를 앞으로 검색한다.(부분 일치, 다른 단어의 일부라도 검색됨) (vim)
g# : 현재 커서 위치에 있는 단어로 뒤로 검색한다.(부분 일치) (vim)
:s/old/new/ : 현재 줄에서 처음 만난 old 문자열을 때 new로 치환한다.
:s/old/new/g : 현재 줄에 있는 모든 old 문자열을 new로 치환한다.
:%s/old/new/g : 현재 버퍼에 있는 모든 old 문자열을 new로 치환한다.
:s/old/new/gc : 치환시 치환여부를 물어본다.

:%s/문자열/_&_/g : 문자열 > _문자열_
:%s/foo/bar/gc : 바꿔도 좋은지 아닌지 확인
:%norm A추가할문자열 : 특정문자열 이후 스트링을 추가
:%s/문자열.*//g : 특정문자열 이후 스트링을 모두 삭제
:g/특정문자열/d : LOG 문자열이 있는 라인 삭제
:%v/\(LOGSTRING1\|LOGSTRING2\).*\n\{0,\}.*—-/d : LOG 문자열만 남기고 삭제
:%s/LOG\.*//g : LOG 문자열 이후 삭제

:%s/^V^M//g : DOS의 Carrage Return(^M)을 모두 제거한다. (^V^M 은 Ctrl-V, Ctrl-M을 의미한다)
:%s/,/^V^M/g : 버퍼 전체에서 쉼표를 새줄로 바꾼다. (DOS Carrage Return 이 추가될 것 같겠지만, UNIX에서는 실제로는 newline만 추가된다)
:%s/s*$// : 줄 끝에서 공백을 제거한다.
:%s/[ ^I]*$/!d : 줄 끝에서 공백을 제거한다.(^I는 Tab키이다)
:%s/.*/L&/ : 버퍼 전체를 소문자로 변경한다.(U는 대문자로)
:s/.*/u&/ : 줄의 첫번재 문자를 대문자로 변경한다.
:%s/<./u&/g : 현재 버퍼의 모든 단어의 첫번째 문자를 대문자로 변경한다.

< 단어의 시작을 의미한다.
. 위와 합쳐져서 단어의 첫번째 문자를 의미한다.
u VI에게 치환할 문자열의 다음 문자를 대문자로 바꾸라고 지시한다.
& 일치한 나머지 문자열들을 의미한다.

:s/book{./l&/ : book을 포함해서, { 직후의 첫번째 문자까지 소문자로 변경한다.
:’x,.s/([a-z])=/1 =/ : 마크 x 부터 현재 줄까지, 알파벳소문자와= 기호인 문자열을 같은 문자에 한 칸 공백에 = 기호로 바꾼다. 예) book= >> book =
::%s/(That) or (this)/2 or 1/ : “That or this”를 “this or That”으로 바꾼다.
::%s/(^\foilhead{(.*)})/%1^M\section{2}/ : “foilhead”로 시작하는 줄에서 “foilhead”를 주석처리(주석기호는 %)하고, 그 아래줄에 “foilhead”를 “section”으로 바꾼 줄을 생성해 넣는다. 아래와 같은 예제가 있을 때,
foilhead{haha} 이런저런…
foilhead{hihi} 그럭저럭…

아래처럼 바뀐다.
%foilhead{haha}
section{haha} 이런저런…
%foilhead{hihi}
section{hihi} 그럭저럭…

::%s/(.*)/<a href=”1″>1</a>/ : 모든 줄에 있는 문자열을 HTML <a>로 감싼다.
:s/ (d{1,2}).(d{1,2})(.*)/<a href=”1-2.sh”>1.23</a> : 현재 커서가 위치한 아래와 같은 줄을
1.1 Accessing Substring

다음처럼 바꾼다.
<a href=”1-1.sh”>1.1 Accessing Substrings</a>

:’x,.s/^/#/ : 마크 x 부터 현재줄까지 줄 시작 부분에 # 기호를 넣는다.
:s/edu/edu/ : edu로 끝나는 줄들을 다음줄과 합친다.(새줄 삭제)
:& : 직전 치환 명령을 다시 실행한다.
:g/.c/+|s/^/.cc/ : 모든 “.c” 명령을 찾아서, 그 다음 줄로 가서, 줄 처음에 “.cc”를 삽입한다.look for all “.c” commands, jump to next line, substitute the beginning of line with “.cc”.
:g/^..*/|s//U&/ : “.”으로 시작하는 줄의 모든 문자를 대문자로 바꾼다.
:v/string/d : string을 포함하지 않은 모든 줄을 삭제한다.
:g/.*/m0 : 현재 파일의 모든 줄의 순서를 바꾼다. m0 는 현재 줄을 0번째 줄로 이동하는 ex 명령이다.
“zyy 그 후에 @z : “zyy 는 현재 줄을 버퍼 z 에 넣는다. 그리고 @z 는 z 버퍼의 내용을 실행한다. 이것을 이용해서 긴 문자열 검색 패턴등이 문서에 있을때 버퍼에 그 패턴을 저장하고, 바로 검색하는 등의 일을 할 수 있다.
:v/./d or :g/^$/d : 빈줄을 삭제한다.
:g/^s*$/d : 공백만 있는 모든 줄을 삭제한다.

창 분할 명령어

Ctrl+w 3+ : 현재 창의 크기를 3줄 넓히기
Ctrl+w 3- : 현재 창으 크기를 3줄 줄이기

Ctrl+w s ( :sp[plit] ) 현재 파일 수평 창으로 분할
Ctrl+w v ( :[n]vs[plit] ) 현재 파일 수직 창 분할 (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+w = 현재 열린 모든 창 크기 동일하게 분할
Ctrl+w _ 현재 커서 창 크기 최대화
Ctrl+w – 현재 커서 창 크기 줄이기 (한줄씩)
Ctrl+w + 현재 커서 창 크기 늘이기

Ctrl+w w 다음 창으로 커서 이동(순차적으로)
Ctrl+w [방향키 or h/j/k/l] 방향에 창으로 이동
Ctrl+w t/b t:top 창으로 이동 b:bottom 창으로 이동

소스 정렬

3!!sort : 현재 줄 부터 3줄을 sort의 입력으로 제공하고, 그 실행 결과로 대체한다.
!Grev : 현재 줄 부터 끝까지 “rev” 명령의 입력으로 보내고 그 결과로 대체한다. rev 명령은 각 줄의 문자들을 뒤집는다. ( 예) apple -> elppa)
!}sort : 현재 줄 부터 문단 끝(첫번째 빈 줄 나오는 부분)을 정렬한다.
:’x,.!sort : mx 명령으로 마크된 줄부터 현재 줄까지를 정렬한다.

정렬을 원하는 부분의 소스를 비주얼 블럭으로 지정하고 = 키를 누르면 자동으로 정렬된다. 전체 는 gg=G 키를 순서대로 누르면 된다.

여러줄을 주석으로 처리할때

10줄을 주석기호 #을 사용하여 주석처리하려면 다음과 같이 하면 된다.
v 명령으로 영역을 선택 후 다음을 입력합니다.
:'<,’>norm i#

주석을 해제할 때는 다음과 같이 합니다.
v 명령으로 영역을 선택 후 다음을 입력합니다.
:'<,’>norm x
x 개수 만큼 삭제됩니다.

입력했던 단어 자동 채우기

Ctrl + p
프로그래밍 할 때 사용하면 마치 함수/변수명 자동 완성 같은 효과

여러 줄 폴더화 시키기

v 명령으로 영역을 선택 후 zf를 입력하면 해당 줄이 접힙니다.
펼칠 때는 zo
접을 때는 zc

영역 선택

v 일반 선택
shift + v 줄 단위 선택
ctrl + v (또는 q) 컬럼 선택

기타

:’t,. !awk ‘{print $3 ” ” $2 ” ” $1}’ : 마크 t 부터 현재 줄까지 3 컬럼을 역순으로 배열한다.
:%! sed G : 전체 문서의 각 줄에 빈 줄을 삽입한다.
:1,5! sed G : 1 – 5 줄에 각각 빈 줄을 삽입한다.
:’x,.!sed ‘/^$/d’ : 마크 x 줄부터 현재 줄까지 빈 줄을 삭제한다.