vi (visual editor)
vi [파일명] 명령을 통해, 문서 파일을 열어 편집을 수행한다. vi 에디터에는 기본 모드 (이동), 입력 모드 (insert), 명령 모드 (command) 3가지의 모드가 존재한다.
1) vi 단독 명령어
파일 지정 없이 단독 사용하는 경우, 이름없는 빈 파일이 생성된다. 문서 편집 완료 후 저장할 때, 파일명을 함께 지정해야 한다.
2) vi [파일명] - 기존 파일
이미 존재하는 파일을 편집하는 경우, 문서 편집 완료 후 별도의 이름 지정 없이 저장한다.
3) vi [파일명] - 미생성 파일
없는 파일을 편집하는 경우, 해당 이름을 가진 빈 파일이 생성된다. 이름이 지정된 파일이므로, 별도의 이름 설정 없이 저장한다.
문서 내 이동 방법
1) 방향키 이동
h (좌), j (하), k (상), l (우)
2) 단어 이동
w (단어의 맨 왼쪽을 기준으로 이동), e (단어의 맨 오른쪽을 기준으로 이동), b (단어의 맨 왼쪽을 기준으로 되돌아감)
w 를 누르면, 단어의 맨 앞글자를 기준으로 이동하는 것을 확인할 수 있다. 여기서 b 를 누르면, 단어의 맨 앞글자를 기준으로 이전 단어로 이동하는 것을 확인할 수 있다. (w 와 b 는 서로 반대로 동작)
e 를 누르면 단어의 맨 마지막 글자를 기준으로 이동하는 것을 확인할 수 있다.
3) 행 이동
0 (행의 맨 첫 글자), $ (행의 맨 마지막 글자)
0 키를 누르면 행의 맨 첫 글자로 이동하는 것을 확인할 수 있다.
$ (shift + 4) 키를 누르면 행의 맨 마지막 글자로 이동하는 것을 확인할 수 있다.
4) 문서 내 이동
gg (문서의 맨 첫 부분), shift + g (문서의 맨 마지막 부분)
gg 를 누르면, 문서의 맨 첫 줄로 이동하는 것을 확인할 수 있다.
shift + g 키를 누르면, 문서의 맨 마지막 줄로 이동하는 것을 확인할 수 있다.
5) 행 번호 출력 및 이동
':set nu' (행 번호 출력), ':행 번호' (지정한 행 번호로 이동), ':set nonu' (행 번호 삭제)
:set nu 명령으로 문서의 첫 단에 행 번호를 붙여 출력된 것을 확인할 수 있다.
:7 명령으로 문서의 7 번째 행으로 이동한 것을 확인할 수 있다.
6) 화면 내 이동
shift + h (high, 화면 상단 이동), shift + m (middle, 화면 중앙 이동), shift + l (low, 화면 하단 이동)
7) 페이지 이동
ctrl + f (forward, 다음 페이지 이동), ctrl + b (back, 이전 페이지 이동)
8) 마크 이동
m? (마크 설정), `? (설정한 마크로 이동)
ms 키를 입력하여, uses 의 s 에 마크를 설정하였다.
문서 내의 다른 행에서 작업을 수행하는 도중, 마크로 이동하고자 할 때 `(backquote)마크 명령을 통해 설정된 마크로 이동할 수 있다.
`s 키를 눌러, 앞서 설정한 uses 의 s 마크로 커서가 이동한 것을 확인할 수 있다.
문서 내용 입력 방법
4가지 종류의 INSERT MODE 진입 키워드가 존재한다.
1) i 입력
커서가 위치한 자리에 입력한다. (커서의 좌측으로 입력)
해당 위치에서, i 키를 누르면 커서의 이동 없이 그 자리에서 INSERT 모드가 시작됨을 확인할 수 있다.
커서 위치의 좌측에 abcd 라는 문자열이 입력된 것을 확인할 수 있다.
2) a 입력
커서의 다음 위치에 입력한다. (커서의 좌측에 입력)
a 키를 입력하면, 커서가 다음 위치로 이동하며 INSERT 모드로 진입한 것을 확인할 수 있다.
왼편으로 이동한 커서의 좌측으로 1234 문자열이 입력된 것을 확인할 수 있다.
3) o 입력
하단에 행을 추가한 후, 입력한다.
커서 위치의 하단에 행이 추가되며, 하단으로 커서가 이동하여 INSERT 모드로 진입한 것을 확인할 수 있다.
추가된 행에 qwer 이라는 문자열이 입력된 것을 확인할 수 있다.
4) shift + o 입력
상단에 행을 추가한 후, 입력한다.
상단에 행이 추가되며 커서가 이동하였고, INSERT 모드로 진입한 것을 확인할 수 있다.
추가된 행에 1234 문자열이 입력된 것을 확인할 수 있다.
문서 내용 삭제
문자, 단어, 행 단위로 삭제 가능하며, 이동 키워드와 함께 사용할 수도 있다.
1) x 삭제
커서 위치를 기준으로 한 문자씩 삭제한다.
2) dd 삭제
커서 위치를 기준으로 해당 행 전체를 삭제한다. 숫자와 조합하여 사용하면, 커서를 기준으로 지정한 행 갯수만큼 삭제한다.
dd 키워드를 단독으로 사용하면 한 줄씩 삭제되는 것을 확인할 수 있다.
4dd 키워드로 행 숫자와 조합하여 사용하면, 지정한 행 갯수인 4줄만큼 삭제되는 것을 확인할 수 있다.
3) dw 삭제
커서 위치를 기준으로 단어 단위로 삭제한다.
4) de 삭제
커서 위치를 기준으로 단어의 끝까지 삭제한다.
5) db 삭제
커서 위치를 기준으로 이전 단어의 첫 글자까지 삭제한다.
6) d0 삭제
커서를 기준으로, 행의 첫 부분까지 삭제한다.
7) d$ 삭제
커서를 기준으로, 행의 마지막 부분까지 삭제한다.
8) dgg 삭제
커서를 기준으로 문서 맨 처음까지 삭제한다.
9) d + shift + g 삭제
커서를 기준으로 문서 맨 마지막까지 삭제한다.
문서 내용 복사
내용 복사 키워드는 삭제 키워드와 유사한 형태로 동작한다. 복사한 내용은 p 키워드를 입력하여 붙여넣기 할 수 있다.
4yy 키워드를 통해, 커서 위치를 기준으로 하위 4개의 행을 복사하였다.
shift + g 키워드로 문서 최하단으로 이동하여, p 키워드를 통해 앞서 복사한 4개의 행을 붙여넣기 하였음을 확인할 수 있다.
문서 내용 되돌리기
u 키워드를 통해 이전 상태로 되돌리기, ctrl + r 키워드를 통해 역으로 되돌리기가 가능하다.
4yy 키워드를 통해 복사한 내용을, 복사 전으로 되돌리고자 한다.
u 키워드를 통해, 복사 전 상태로 되돌린 것을 확인할 수 있다.
ctrl + r 키워드를 통해, 역으로 되돌려진 것을 확인할 수 있다.
문서 내용 저장
파일 저장 단축키로는 shift + zz 를 사용할 수 있다. (:wq 와 동일한 기능 수행)
문서 내용 검색
1) / 검색
문서의 첫 부분부터 검색한다. n 으로 다음 키워드로 이동, shift + n 으로 이전 키워드로 이동한다.
in 키워드로 검색을 수행해보자.
문서의 첫 부분부터 in 키워드를 검색하고 있음을 확인할 수 있다.
n 키워드를 사용하여, 다음 키워드가 있는 위치로 이동하였음을 확인할 수 있다.
2) ? 검색
문서의 마지막 부분부터 검색을 수행한다. n 으로 다음 키워드로 이동, shift + n 으로 이전 키워드로 이동한다.
target 키워드로 검색을 수행해보자.
문서의 마지막 부분부터 target 키워드 검색을 수행하고 있음을 확인할 수 있다.
/ 검색과 달리, n 키워드를 통해 역방향으로 올라가며 검색한다.
문서 내용 치환 방법
':[범위]s / 원본 문자열 / 치환될 문자열 / [g]' 형태의 명령을 통해, 문서 내의 내용을 치환할 수 있다.
현재 커서의 위치를 기준으로, 해당 행의 제일 첫번째로 나오는 t 문자를 @로 치환해보자.
리눅스는 대소문자를 구분하므로 대문자 T 를 제외한 current 의 t 가 @ 로 치환되었음을 확인할 수 있다.
g 옵션까지 함께 사용하면 지정한 범위 전체에 대해 치환을 수행하므로, 해당 행의 t 가 전부 @ 로 치환되는 것을 확인할 수 있다.
s 앞에 숫자를 조합하여 함께 사용하면, 특정 행의 문자를 치환할 수 있다.
10번째 행의 target 키워드 전체를 @#$% 로 치환하였음을 확인할 수 있다.
s 앞에 % 를 함께 조합하여 사용하면, 문서 전체 범위에 대해 치환을 수행할 수 있다.
공부하면서 정리한 내용을 글로 작성하였습니다.
혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다. :)
'Linux > Rocky' 카테고리의 다른 글
[Linux / Rocky] vi 에디터 사용 예제 (0) | 2024.12.30 |
---|---|
[Linux / Rocky] 리눅스 vi 에디터 사용법 (2) (0) | 2024.12.30 |
[Linux / Rocky] 리눅스 텍스트 파일 출력 명령어 (0) | 2024.12.29 |
[Linux / Rocky] 리눅스 Redirection 기능 (0) | 2024.12.29 |
[Linux / Rocky] 리눅스 ifconfig 명령어 (0) | 2024.12.29 |