vi 에디터 자주쓰는 명령어 


학교 다닐때는 리눅스를 쓸일이 없었는데... 회사를 다니면서 쑬 일이 부쩍 많아졌다. 


정리중.... 


vi의 종료

먼저 <ESC>키로 명령모드로 전환 한후 종료 명령

<ZZ> 버퍼를 파일에 기록하고 종료

:wq 버퍼를 파일에 기록하고 종료

:q! 버퍼의 내용을 파일에 기록하지 않고 무조건 종료

:q 버퍼의 내용과 파일의 내용이 일치하는 경우 종료

 

텍스트 편집 명령

a 커서 뒤에 삽입

A 줄의 마지막에 삽입

i 커서 앞에 삽입

I 줄의 시작에 삽입

o 현재 커서의 다음에 빈 라인을 생성

O 현재 커서의 앞에 빈 라인을 생성

 

파일에 관한 명령

:r [파일명] 파일의 내용을 읽어와서 현재의 커서 아래에 삽입

:e! [파일명] 편집중인 파일을 무시하고 새로운 파일을 작성, 편집

:e [파일명] 새로운 파일을 작성, 편집

:n 파일 목록의 다음 파일로 이동

:w 현재 편집중인 파일을 저장

:w [파일명] 현재 편집중인 파일을 새로운 파일명으로 저장

w! [파일명] 현재 편집중인 파일을 현존하는 파일명으로 저장


커서의 이동 명령

1. 문자 단위 이동

h 한 문자 왼쪽으로

j 한 문자 아래로

k 한 문자 위로

l 한문자 오른쪽으로

→←↑↓ 화살표 발향으로 이동

[BackSpace] 한 문자 왼쪽으로

[Enter] 다음 라인의 시작으로


2. 라인에서의 이동

^ 또는 0 라인의 시작위치로

$ 라인의 끝 위치로

 

3. 페이지 단위 이동

[Ctrl]-f 한 페이지 위로

[Ctrl]-b 한 페이지 아래로

[Ctrl]-u 반 페이지 위로

[Ctrl]-d 반 페이지 아래로


4. 단어 단위 이동

w 한 단어 오른쪽으로 이동, 새 단어의 시작 문자에 위치,구두점을 한 단어로 인식

W 한 단어 오른쪽으로 이동, 새 단어의 시작 문자에 위치

b 한 단어 왼쪽으로 이동, 새 단어의 시작 문자에 위치,구두점을 한 단어로 인식

B 한 단어 왼쪽으로 이동, 새 단어의 시작 문자에 위치

e 한 단어 오른쪽으로 이동, 새 단어의 마지막 문자에 위치,구두점을 한 단어로 인식

E 한 단어 오른쪽으로 이동, 새 단어의 마지막 문자에 위치


5. 파일에서의 이동

G 파일의 끝으로 이동

nG 또는 :n n번째 라인으로 이동


6. 화면에서의 이동

H 화면의 첫줄로 이동

L 화면의 끝으로 이동

M 화면의 중간으로 이동

 

삭제 명령

1) 문자 단위 삭제

x 커서가 위치한 곳의 한 문자 삭제

nx n 개의 문자 삭제

X 커서가 위치한 곳 앞의 한 문자 삭제

nX n 개의 문자 삭제

2) 라인 단위 삭제

dd 한 라인 삭제

ndd n개의 라인 삭제

d0 또는 d^ 커서 위치부터 라인의 처음 까지 삭제

d$, D 커서 위치부터 라인의 끝 까지 삭제

3) 단어 단위 삭제

dw 커서 위치에서 오른쪽 한 단어 삭제

db 커서 위치에서 왼쪽 한 단어 삭제

4) d+이동명령

dh,dj,dk,dl,d0,d$

 

5) 파일에서의 삭제

dG 커서 위치부터 파일의 끝 까지 삭제

dnG 커서 위치부터 n번째 라인까지 삭제

   

복사 명령

1) 라인 단위 복사

yy 한 라인 복사

nyy n개의 라인 복사

y0 또는 y^ 커서 위치부터 라인의 처음 까지 복사

y$, Y 커서 위치부터 라인의 끝 까지 복사

2) 단어 단위 복사

yw 커서 위치에서 오른쪽 한 단어 복사

yb 커서 위치에서 왼쪽 한 단어 복사

3) 붙여 넣기

p 커서 위치에서 오른쪽에 붙여 넣기

P 커서 위치위 윗 줄에 붙여 넣기

 

수정 명령

(1) 문자 단위 수정

r 한 문자 수정후 명령 모드

nr n개의 문자를 수정후 명령 모드

R 한 문자 수정후 편집 모드

nR n개의 문자를 수정후 편집 모드

(2) 한 문자를 여러 문자로 수정

s 커서 위치에서 한문자 삭제 후 편집 모드

(3) 여러 문자를 수정

명령 수행 후 [ESC] 키로 마감

cw 현재 커서위치에서 오른쪽 단어 수정

cb 현재 커서위치에서 왼쪽 단어 수정

c0 또는 c^ 커서가 위치한 라인의 시작에서 커서 위치까지 수정

c$또는 C 커서의 위치에서 라인의 끝까지 수정

cc 한 줄을 모두 수정


라인의 결합

J 커서의 다음 줄을 커서가 있는 줄에 결합

 

명령 실행 취소 명령

u 직전의 한 명령 실행 취소(undo), 일부 시스템에서는 여러 명령 취소 가능

U 현재 라인에서의 명령들의 실행 취소

[Ctrl]-r 취소명령의 취소(redo), 일부 시스템에서만 지원


검색

/[패턴] 앞으로 이동하면서 [패턴]을 검색

?[패턴] 뒤로 이동하면서 [패턴]을 검색

n 반복 해서 이전에 지정된 [패턴]을 검색(next search)

 

기타 명령

:!command - 쉘로 나가지 않고 쉘명령을 수행

:sh - 쉘로 잠시 나감, 복귀하려면 exit

. - 직전 명령어 재수행

[CTRL]-g : 전체 줄수와 현재 커서가 위치한 줄 번호

~ - 대소문자 변경

vi 편집기의 환경 설정

:set nu - 라인번호 표시 설정

:set nonu - 라인번호 표시 설정 해제




반응형

[MyBatis] 동적 쿼리 생성시 삽질 주의

 

 

MyBatis로 동적 쿼리 생성시 주의 해야 할 점. 
MyBatis 문법은 RDBMS 별로 쿼리가 조금 씩 달라지며, 
자신이 사용하는 디비에 맞지 않게 사용하면 하루종일 삽질하고 자신의 있는 모습을 볼 수 있을거다. 
 
다 같은 구문을 사용할 줄 알았는데. 이거 때문에 몇시간을 날려 먹었는지.. 
 
 

 

LIKE 문 

 

# SQL 에서 LIKE 문 은 아래와 같이 사용된다.

 

SELECT * FROM TABLE_NAME

WHERE COLUMN_NAME LIKE PATTERN 

 

 

SELECT FROM SAMPLE

 

WHERE TAG LIKE 'Sa%' 

 

OR WHERE TAG LIKE '%am' 

OR WHERE TAG LIKE '%am%'  

 

 

# Mybatis에서는 DBMS 종류 별로 차이가 있다.

 

# MySql

 

SELECT FROM TABLE_NAME

WHERE COLUMN_NAME LIKE CONCAT(‘%’, #{searchKeyword}, ‘%’)

 

# ORACLE

 

SELECT FROM TABLE_NAME

WHERE COLUMN_NAME LIKE '%'||#searchKeyword#||'%' 

 

 

# Ms-Sql

 

SELECT FROM TABLE_NAME

WHERE COLUMN_NAME LIKE '%' + #searchKeyword# + '%'

 

이 처럼 미묘하게 다르니깐, 꼭 확인후 사용 하자.  

 

 

 

 

추가 

 

# # 대신 $ 를 붙여서 SQL 에서 쓰던식으로 써도 된다고는 하는데 해보지는 않았다. 

 

SELECT FROM TABLE_NAME

WHERE COLUMN_NAME LIKE 

'%${

searchKeyword

}%' 

 

반응형

 

[MyBatis] 동적 쿼리  

 

 

쿼리를 짜다보면 동적 쿼리를 만들어야 할 때 가 있다. 싫다 

 

마이바티스에서는 동적 쿼리를 처리하는 방법이 존재한다.

 

 

1. if 문

 

# keyword 가 null 이 아니면  AND KEYWORD LIKE #{keyword} 

 

<select id="dynamicSql" resultType="EgovMap">

    SELECT * FROM MAP

    WHERE POIX = '100'

    <if test="keyword != null">

        AND KEYWORD LIKE #{keyword}

    </if>

</select>

 

# if문 안에서 문자열 비교 

# 파라미터.equals('keyword')# (파라미터 eq 'A'.toString())

 

# 파라미터 == 'A'

 

 <if test="keyword != null and keyword.equals('서울') ">

        AND KEYWORD LIKE #{keyword}

 </if>

 

 

 

2. choose, when, otherwise

 

# if - else 구문 처럼 쓸 수 있다 

 

<select id="dynamicSql" resultType="EgovMap">

  SELECT * FROM MAP

  WHERE POIX = '100'

  <choose>

    <when test="keyword != null and keyword.equals('서울')">

      AND KEYWORD LIKE #{keyword}

    </when>

    <when test="keyword != null and keyword.equals('부산')">

      AND KEYWORD LIKE #{keyword}

    </when>

    <otherwise>

      AND KEYWORD = '경기'

    </otherwise>

  </choose>

</select>

 

 

3. foreach

 

# 마이바티스는 반복문도 가능하다

foreach 를 사용하여 collection 에 대해 반복처리와 IN 조건에 사용한다 

 

<select id="dynamicSql" resultType="EgovMap">

SELECT * FROM MAP

WHERE KEYWORD IN

<foreach item="item" index="index" collection="list" open="(" separator="," close=")">

        #{item}

</foreach>

</select>

 

반응형

+ Recent posts