###1. 문자열 관련기능

  •  formatting
  • find, search

##1. formatting

#1. 정렬 center, right, left  (width 기준으로 정렬)

    명령창에 :center  (기본값 80)   또는 : center 원하는width값 

:right 50

 

#2.  find

1) 문자 1개 검색

vim 일반모드에서 f+검색할단어  치면 검색됨

명령어 설명
fc 문자 c를 전방 검색 (위로 검색)
Fc 문자 c를 후방 검색 ( 아래로 검색)
; 최근 검색을 재검색
, 최근 검색을 반대방향으로 재검색

 

#3 문자 검색 명령어 

명령어 설명
/string string을 전방탐색(prefix로 \M 혹은 \V로 magic 탐색을 끌 수 있음)
?string : string을 후방탐색
* 현재 커서에 위치한 단어를 전방탐색
# 현재 커서에 위치한 단어를 후방탐색
n 다음 탐색 결과를 찾아냄(전방탐색의 경우 전방으로, 후방탐색의 경우 후방으로 이동)
N n과 반대방향으로 다음 탐색
% 괄호의 짝을 찾아줌

** magic: 특수문자에 대한 해석기능을 의미.

 

#4  case-sensitive searching  대/소문자 구분 안코 검색

1) \c  접두어를 사용 하거나 또는 ignorecase option을 킨다

\c 접두어 사용하는 경우

/\cinter

inter를 검색(대소문자 구별안코)

\C 는 \c의 반대기능==  ignorecase 가 켜진 경우에, case-senbsitive searching이 가능

**ignorecase 키려면  :set ignorecase  //명령창 에 입력하기

 

ignorecase가 켜지면 c는 대소문자 구분하지 않지만 C는 대소문자 구분해 검색한다.

꺼지면 그 반대

원래 default 값을 주려면 :set noignorecase

 

REGEX(정규표현식) 로도 찾음

a~g 로시작 하는 문장중  공통이 re문자가 있는 경우.

 

#5 검색 후 밝게 표시된 단어를 해제하고자 하는 경우

1) :nohl

 =>  일회성 highlightsearch 해제

2):set nohls

=> hightlightsearch 옵션 해제 (기본값으로 off인 경우도 있다)

 

man man > manpage.txt

man파일을 txt형태로 만들어 vim으로 열자.

 

그냥 /찾을단어(문장)  해도 된다

 

: set hls    // 하이라이트 표시 
/section    // section 찾기

 

 

/\csection     //       /\c찾을문장  입력시 대소문자 구분하지 않코 찾음

 

 

[section]  을 찾아봐라(조건: 정규표현식 단어가 들어간 문자형태)

/[section] 은 잘못된 결과값들을 찾게 됨.

/\M[section]   // magic 해석을 금지하는 \M prefix 를 붙이면 해결된다.

 

 

###2. 문자열 관련기능

  • 교체(substitue)
  • 특수문자 교체
  • file format: DOS, UNIX의 new line 문자 차이

##1. 교체 : sed 기능이 import 되어 문법이 동일

 #1. :[range]s/<찾는 문자열>/<교체할 문자열>/<옵션>

명령어 옵션 설명
g (global) 검색된 문자열 모두를 교체
* g옵션 생략 시 처음 1개만 교체함
i (ignore case) 대소문자 무시
c (confirm) 교체할 때마다 Yes/No 확인
e 교체 과정 중 에러무시

**  seperator로 slash(/) 가 주로 사용되지만 다른 문자를 사용해도 무방( 예: 콤마)

** range 생략 시 현재 행만 적용

**range 사용법

[1,50]  : 1번행~50번행

[%] : 문서전체

s: seperator 약자

찾는문자열만 있고, 교체할 문자열 안넣고 빈칸이면 삭제 의미를 지님.

 

#2 separator 의 escape

seperator 대신 comma를 사용하는 경우

1) /home/linuxer 를 home/unixer 로 교체하면

 

backslash \ 사용은 escape한다는 의미.

  1 /home/li/
  2 im error t/home/linuxe:esting , I didnt saving but be attacked

여기서  /home/linuxe 를 /home/unixer 로바꿔주자.

:%s//home/linuxe//home/unixer/g   // 안됨
:%s/\/home\/linuxe/\/home\/unixer/g //되지만, 복잡   seperator를 통해 / 를 표시
:%s,/home/linuxe,/home/unixer,g   // separator를  comma 로 바꾸면 복잡하지않코 해결됨

 

#3 특수문자(NewLine 개행문자)의 교체

 

1) CR의 입력 : ^V^M

형식 개행 문자
DOS/Windows CR + LF
UNIX LF

 => CTRL-V 대신에 CTRL-Q를 사용해도 됨.

2) 그러나 NewLine 문자 바꾸기 위해 위 방법 사용하진 않음.

=> 실전에서는 :set ff=dos  혹은 : set ff=unix 로 설정 후 저장하는 방법을 사용.

 

**윈도우즈에서 작성된 텍스트파일을 리눅스/유닉스에 가지고오면 문자들이 깨진다.(맨끝에 이상한 값이 붙음)

반대로 리눅스/유닉스에서 작성된 텍스트파일을 윈도우즈로 가지고오면 개행문자가 구분되지 않고 붙어있다.

**CR: Carriage Return

 

위 문제 해결방법은 윈도우즈 -> UNIX 로 가면 개행문자 요소 중 CR삭제 . 

 UNIX -> 윈도우즈로 가면 CR을 추가시킨다.

 

 

#4 CR 삭제하는 subst 명령

:%s//^M//g   //방식 1    ^M:(ctrl v)+(ctrl m)   ctrl 누른상태에서 연달아치기.

:%s/\r//g    // 방식 2  \r로도 특수키 입력가능.

위 방법은 교육목적이다, 실제로는 다음을 사용한다.

set ff=dos    // 리눅스에서 dos 로 파일을 가지고 왔다면 파일 format 을 dos로 바꿔야함

set ff=unix   // win에서 파일을 리눅스에 가지고 왔으면 파일 열어서 해당 명령어 입력.  파일 format을 unix로 변경

 

#5 ASCII 를 코드값으로 입력하는 경우

입력 방법 설명
<CTRL-V> ### ###에 10진수를 사용하여 ASCII 입력
<CTRL-V> o### ###에 8진수를 사용하여 ASCII 입력
<CTRL-V> x## ##에 16진수를 사용하여 ASCII 입력

man ascii 통해 아스키값 참조.

 

#숫자증감

 ctrl -A  :1 증가

 ctrl -X : 1감소

 

 

해당 내용은  프로그래머스 리눅스 강의 김선영 선생님의 강의를 들으며 기록했습니다.

+ Recent posts