vim 단축키 이어서 수업
f
- 현재 커서가 위치한 라인 한 줄에서 오른쪽으로 검색 (프로그래밍에 자주 쓰임)
- ex fa => a를 찾음
- 검색후 , 왼쪽 ; 오른쪽 이동
- F는 반대로 왼쪽으로 검색( ,는 오른쪽 ;는 왼쪽)
- 하이라이팅은 유지되지 않음
*
- 전체 문서에서 단어를 찾을 때 사용
- 단어 앞에서 * 사용시, 하이라이팅 되면서 찾음
- 이전N, 다음n
문자열 치환 (ex 모드에서 사용)
:% 전체문서
:1,5 1~5번 라인까지
:%s/old/new/g : 전체문서에서 old 문자열을 모두 new로 치환
:%s/old/new : 처음 만나는 old -> new로 치환
:s/old/new : 현재 라인의 첫 old -> new로 치환
:-,+3s/old/new/g : 현재 커서기준 위1줄 아래3줄 범위내 치환
~/gc라고 쓰면 치환 여부를 물어봄
(TERM-RE(으)로 바꿈 (y/n/a/q/l/^E/^Y)? a는 모두 네, q는 치환중지, l은 하나 치환후 종료, ^E는 화면이동(아래), ^Y는 화면이동(위))
멀티창
F1 도움말 help.txt 열림
:new filename (새 창으로 열기/가로로(위쪽에 새창))
:vs filename (새 창으로 열기/세로로(왼쪽에 새창))
^ww (Ctrl+ww) : 다음 창으로 이동
^ww (Ctrl+ww) : 다음 창으로 이동
^wt (Ctrl+wt) : 최상단 창으로 이동
^w_ (Ctrl+w_) : 현재 커서가 위치한 창을 활성화(크게)(가로창)
Ctrl + w + | : 최대활성화(세로창)
^w= (Ctrl+w=) : 모든 창 크기를 균일하게
:qa or :qa! 전부 닫기
:q or :q! 현재 창 닫기
Ctrl + w +( H왼쪽 K위 J아래 L오른쪽) 창 이동
vim 옵션 : ex 모드에서 설정한다
전역 : /etc/vimrc (root만 가능)
개인사용자 : $HOME/.vimrc
:set all 모든 옵션 표시
:set nu 라인 번호 표시
:set ruler 현재 커서 위치 표시
값이 여러 개 있는 경우 표기
- scroll=15
토클(on/off)로 있는 경우
- number : On 또는 number : Off
vim을 IDE 환경으로 만들기
단축키 설정
<cr> 엔터키
% 현재문서
%:t 현재문서(상대경로)
%< 현재문서에서 확장자를 버린 이름
%:t:r 현재문서에서 확장자를 버린 이름(상대경로)
F1 도움말
F2 쉘스크립트 실행
F3 파이썬 실행
F4 C 실행
F5 C++ 실행
F6 JAVA 실행
F7 Rust 실행
(vim 재설치 : yum -y reinstall vim-commom )
" vimrc 기본설정파일
" (vimrc 설정하다가 기존 설정을 지워버리는 바람에, 꼬이게 되어 재설치하고 난리난 관계로...
백업느낌으로 포스팅...)
" vimrc에서 "는 주석으로 인식된다
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
set fileencodings=ucs-bom,utf-8,latin1
endif
set nocompatible " Use Vim defaults (much better!)
set bs=indent,eol,start " allow backspacing over everything in insert mode
"set ai " always set autoindenting on
"set backup " keep a backup file
set viminfo='20,\"50 " read/write a .viminfo file, don't store more
" than 50 lines of registers
set history=50 " keep 50 lines of command line history
set ruler " show the cursor position all the time
" Only do this part when compiled with support for autocommands
if has("autocmd")
augroup redhat
autocmd!
" In text files, always limit the width of text to 78 characters
" autocmd BufRead *.txt set tw=78
" When editing a file, always jump to the last cursor position
autocmd BufReadPost *
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
\ exe "normal! g'\"" |
\ endif
" don't write swapfile on most commonly used directories for NFS mounts or USB sticks
autocmd BufNewFile,BufReadPre /media/*,/run/media/*,/mnt/* set directory=~/tmp,/var/tmp,/tmp
" start with spec file template
autocmd BufNewFile *.spec 0r /usr/share/vim/vimfiles/template.spec
augroup END
endif
if has("cscope") && filereadable("/usr/bin/cscope")
set csprg=/usr/bin/cscope
set csto=0
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add $PWD/cscope.out
" else add database pointed to by environment
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set csverb
endif
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
syntax on
set hlsearch
endif
filetype plugin on
if &term=="xterm"
set t_Co=8
set t_Sb=m
set t_Sf=m
endif
" Don't wake up system with blinking cursor:
" http://www.linuxpowertop.org/known.php
let &guicursor = &guicursor . ",a:blinkon0"
++ 추가설정
set nu " 라인 번호
set bg=dark " 백그라운드
set ai " 자동 들여쓰기
set ci " C언어 자동 들여쓰기
set sw=4 " 들여쓰기, 내어쓰기 4칸
set ts=4 " 탭크기 4칸
set expandtab " 탭을 공백으로 변경
set cursorline " 커서라인 출력
set fileencodings=utf8,euckr " 언어셋 인식
" 아래는 단축키로 각 쉘 스크립트, 파이썬, c언어, c++, java, rust 실행 키 설정이다
map <F2> :w<cr>:!clear;chmod 755 % && ./%:t<cr>
map <F3> :w<cr>:!clear;python3 %<cr>
map <F4> :w<cr>:!clear;gcc -Wall %:t -o %:t:r && ./%:t:r<cr>
map <F5> :w<cr>:!clear;g++ -Wall %:t -o ./%:t:r<cr>:!./%:t:r<cr>
map <F6> :w<cr>:!clear;javac %:t && java %:t:r<cr>
map <F7> :w<cr>:!clear;rustc % && ./%:t:r<cr>
gcc c++과 java 설치
=> yum -y install gcc gcc-c++ java-1.8.0-openjdk java-1.8.0-openjdk-devel
파이썬 3.8 설치 (centos7은 2버전이므로)
=> yum -y install centos-release-scl
yum -y install rh-python38
scl enable rh-python38 bash <- 새로 로그인 할 때마다 리로드 해줘야 함 (불편... )
rust 설치
curl https://sh.rustup.rs -sSf | sh
source "$HOME/.cargo/env" (바로 사용하기 위해 리로드)
$ vi
=> vi 기본 설명창이 뜨는데 이 때 :20vs. 입력하면 멀티창으로 열 수 있음
쉘 스크립트 실행
1. chmod 755 파일명; ./파일명
2. /bin/sh ./파일명
파이썬 실행
1. ptyhon 파일명
2. chmod 755 파일명; ./파일명
c언어와 c++은 gcc로 컴파일 한 후 실행한다
java 실행
javac 소스파일; java ./실행파일
(ex javac ./HH.java; java HH)
rust 실행
rustc 소스파일; ./실행파일
리눅스의 패키지 설치
1. rpm(Redhat Package Manager) 패키지 파일로 설치/삭제
- 1) 명령어로 설치
- 2) yum이나 dnf로 설치
2. (소스) 여러 파일을 압축파일로 묶어서 배포하는 것을 가지고 설치/삭제
패키지란
여러 명령어와 문서들이 하나의 패키지로 묶여진 파일
레드햇사에서 만든 패키징 방식
rpm의 구조 : 패키지명-버전-릴리즈번호.OS.아키텍처.rpm
~.tar.gz : tar + gzip (소스, 컴파일 (압축))
~.tar.bz2 : tar + bzip2 (소스, 컴파일 (압축))
~.tar.xz : tar + xz (소스, 컴파일 (압축))
~.src.rpm : 소스파일
~.x86_64.rpm : 컴파일 된 64bit 파일
yum, dnf : 레드햇 계열에서 네트워크를 통한 패키지 설치
apt-get, apt : 데비안 계열에서 네트워크를 통한 패키지 설치
rpm
장점 : 설치가 쉽다
단점 : 패키지 의존성이 존재하면 설치가 어려움
(의존성 : 패키지끼리 서로 연관된 형태. A패키지를 실행하려면 B패키지가 필요하는 등.)
yum
이미 컴파일 되어있는 패키지를 인터넷으로 다운로드 받아서 설치
(짤막지식 : 리눅스민트가 우분투보다 가볍고 빠르다 !
저사양 노트북에 리눅스를 설치한다면 민트 추천)
rpm 명령어 옵션
-i : 설치
-e : 삭제
-U : 업그레이드
-q : 검색
-a : 모든 패키지 검색
-f [파일]: [파일]을 포함하는 패키지 검색
gzip 압축 명령어 (여러 파일을 하나로 묶을 수 없다)
옵션
-d (--decompress) 압축해제 또는 gunzip 으로도 압축해제 가능
~.gz 로 변경됨 (원본 파일은 없어진다)
bzip2 압축 명령어 (gzip보다 압축률이 조금 더 좋음. 여러 파일을 하나로 묶을 수 없다)
옵션
-d (--decompress) 압축해제 또는 bunzip2 으로도 압축해제 가능
~.bz2
(centos7에는 없어서 yum -y install bzip2 설치해야함)
xz 압축 명령어
~.xz
-d 압축해제 또는 unxz 으로도 압축해제 가능
압축해제 실습
아파치 웹서버
https://dlcdn.apache.org/httpd/httpd-2.4.58.tar.bz2
톰캣 (WAS 왓스)
https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.19/bin/apache-tomcat-10.1.19.tar.gz
커널
https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.1.tar.xz
* https로 접근하려면 wget 필요
( 설치 : # yum -y install wget )
파일 다운로드
# wget --no-check-certificate https://dlcdn.apache.org/httpd/httpd-2.4.58.tar.bz2
# wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.19/bin/apache-tomcat-10.1.19.tar.gz
# wget --no-check-certificate https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.1.tar.xz
tar (=tarball)
하나의 아카이브 파일로 묶어주는 역할만 하고 압축하지 않는다.
파일 압축시 원본파일은 그대로 남는다
퍼미션, 소유권 등의 정보를 유지함
ex
tar -cf test.tar dir1 dir2 file
=> 명령어 옵션 압축파일명(압축방법에 따른 파일확장자명 주의) 묶을파일들
tar -xf test.tar
=> 압축하지 않은 파일 풀기
tar -xfz test.tar.gz
tar -xfj test.tar.bz2
tar -xfJ test.tar.xz
=> 압축한 파일 풀기
압축하지 않을시 ~.tar 형식으로 파일명을 짓는다
옵션
x : 파일 추출
z : gzip으로 압축 (선택시 ~.tar.gz)
j : bzip2로 압축 (선택시 ~.tar.bz2)
J : xz으로 압축 (선택시 ~.tar.xz)
c : 새 아카이브 생성
f : 읽거나 기록할 tar 파일 정의
과제
리눅스 민트 설치해보기
'리눅스' 카테고리의 다른 글
리눅스 수업 2 2차시 (0) | 2024.04.07 |
---|---|
리눅스 수업 2 1차시 (0) | 2024.04.06 |
리눅스 수업 7차시 (0) | 2024.03.16 |
리눅스 수업 6차시 (셀프실습) (0) | 2024.03.14 |
리눅스 수업 5차시 (0) | 2024.03.09 |