vim(2)

정승균·2020년 12월 11일
0

리눅스

목록 보기
13/29
post-thumbnail

1. X window 환경에서 vim과 클립보드 공유


1. vim enhanced, vim with X 설치

  • $ sudo apt -y install vim-gnome
  • $ sudo apt -y install vim-gnome

2. clipboard / xterm_clipboard 설정이 켜져있는지(+) 확인

jsg@jsg-ubuntu:~/testdir$ vim --version | grep clip
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

3. ~/.vimrc 작성

" Use the system clipboard for yank / delete / paste operations 
if has('unnamedplus')
   set clipboard=unnamed,unnamedplus
endif

2. Color Scheme


  • :colorscheme item : 탭이나 Ctrl-D를 누르면 가능한 colorscheme을 볼 수 있음
bluepeachpuffmurfyzellner

3. ~/.vimrc로 사용자설정


  • .vimrc 에서 설정값들을 지정할 수 있음
set ai cindent hls
set ts=4 sw=4
set fencs=ucs.bom,utf-8,korea,latin-1
colo peachpuff

4. File open시 에러가 나는 경우


  • process ID 가 still running 일 경우 :
    문서가 다른 곳에서 열려 있는 상태이므로 읽기(O)만 하거나 종료(Q) 하는 것이 좋음
E325: ATTENTION
Found a swap file by the name "testdir/.hello.py.swp"
          owned by: jsg   dated: Sat Dec 12 07:08:18 2020
         file name: ~jsg/testdir/hello.py
          modified: no
         user name: jsg   host name: jsg-ubuntu
        process ID: 5797 (still running)
While opening file "testdir/hello.py"
             dated: Sat Dec 12 07:05:48 2020

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r testdir/hello.py"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file "testdir/.hello.py.swp"
    to avoid this message.

Swap file "testdir/.hello.py.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort: 
  • process ID 가 still running 이 아닌 경우 :
    작업을 하다 프로세스가 비정상적으로 종료된 경우이므로 복구(R)을 하는 것이 좋음
    이후 복구가 잘 되었으면 다음 실행시 스왑파일을 삭제(D)를 해줘야 함
E325: ATTENTION
Found a swap file by the name "testdir/.hello.py.swp"
          owned by: jsg   dated: Sat Dec 12 07:08:18 2020
         file name: ~jsg/testdir/hello.py
          modified: no
         user name: jsg   host name: jsg-ubuntu
        process ID: 5797
While opening file "testdir/hello.py"
             dated: Sat Dec 12 07:05:48 2020

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r testdir/hello.py"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file "testdir/.hello.py.swp"
    to avoid this message.

Swap file "testdir/.hello.py.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort: 

5. DOS / UNIX 텍스트 변경


  • DOS 에서는 newline을 CR+LF을 쓰지만 UNIX는 LF를 씀
  • 이 설정은 :set ff=dos / :set ff=unix 을 통해 할 수 있음
jsg@jsg-ubuntu:~$ file dos.txt; file unix.txt
dos.txt: ASCII text, with CRLF line terminators
unix.txt: ASCII text

6. 여러 문서 작업하기


a. vim을 열때 여러개 지정

  • $ vim file1 file2 file3 ...
명령어설명
:n다음 파일
:N이전 파일

b. 구식 방식

명령어설명
:e [filename]filename을 편집모드로 오픈, fimename 생략하면 현재 파일
:find expressionexpression과 매치되는 file을 오픈, 2개 이상이면 에러
:e #[숫자]open한 file중 [숫자]번째 file로 이동, [숫자] 생략하면 이전 파일
Ctrl-^:e # 과 동일

c. 창 분할 방식

  • vim 실행시 -o / -O 옵션으로 창 분할 가능
  • 명령어 앞에 숫자를 넣으면 창 크기 지정 가능
명령어설명
:sp filename / Ctrl-W s수평 창 분할
:vs filename / Ctrl-W v수직 창 분할
:new / :vnew새로운 창 생성
Ctrl-W Ctrl-w다음 창 이동
Ctrl-W h/j/k/l원하는 방향으로 창 이동
Ctrl-W p이전 창으로 이동
Ctrl-W =모든 창 사이즈 동일화
Ctrl-W +현재 창 사이즈 키우기
Ctrl-W -현재 창 사이즈 줄이기
Ctrl-W q현재 창 닫기
Ctrl-W o현재 창을 제외한 모든 창 닫기

d. 탭 방식

  • vim 실행시 $ vim -p file1 file2 ... 으로 여러 탭으로 실행 가능

명령어설명
:[num]tabe filefile을 새로운 탭을 num번째에 생성, num 생략되면 현재 탭 다음으로
:[num]tabnew file새 탭에서 새로운 파일을 염
:[num]tabc탭 닫기
:[#]tabn / :[#]tabpCommand로 탭 이동
:tabm [#]Command로 #번째 탭 이동, #생략시 맨 오른쪽
gt / gT일반 모드로 탭 이동
Ctrl-PgUp / Ctrl-PgDngt / gT 와 동일

e. 파일 링크

명령어설명
gf커서에 있는 파일 열기
Ctrl-W f커서에 있는 파일을 분할된 창에 열기
Ctrl-W gf커서에 있는 파일을 새로운 탭에 열기
Ctrl-^이전 파일로 이동

f. buffer 리스트 보기

  • :files or :buffers

명령어설명
%현재 작업중인 buffer
#이전 buffer (Ctrl-^ 누르면 이동하는 buffer)
a현재 화면에 보이는 buffer
+변경된 buffer

7. vim 파일 비교


  • vim 실행시 $ vim -d file1 file2 혹은 vim 실행후 :diff
명령어설명
do변경 가져오기
dp변경 내보내기
space여러줄이 같으때 [+]모양으로 숨겨진 행들 펼치기

8. 파일 브라우저 기능 (newtr)


  • vim에서 :e . 으로 열 수 있음
명령어설명
-상위 디렉토리 이동
i파일 표기 방식 변경
s정렬 방식 변경
o커서 위치의 파일을 수평분할
v커서 위치의 파일을 수직분할
p파일 미리보기 창
t파일 탭 분할

9. Encoding


  • :set fenc=enconding_type 을 이용하여 작성한 파일을 인코딩 할수 있음

  • 인코딩된 파일을 열 경우 ~/.vimrc 에 :set fencs=... 를 작성해야 볼 수 있음

  • ~/.vimrc 설정 후 파일을 연 모습. 보통 set fencs=ucs-bom,utf-8,korea,latin-1로 설정


10. Abbreviation(약어)


명령어설명
:ab [lhs]lhs에 약어 정보, :ab는 전체 정보
:ab lhs rhslhs를 -> rhs
:unab lhslhs 약어 삭제
:abclear전체 약어 삭제
:iaab와 같은 기능이지만 Insert mode에서만 작동
:caab와 같은 기능이지만 Commnad mode에서만 작동
  • .vimrc 예
ab mymail jsg@gmail.com
ia time0 <C-R>=strftime("%Y.%m.%d-%H:%M:%S")<CR>
ca ㅈ w

11. Keymap(단축키)


명령어설명
:nmap key commandNormal 모드에서 적용되는 키맵
:imap key commandInsert 모드에서 적용되는 키맵
:cmap key commandCommand 모드에서 적용되는 키맵
:vmap key commandVisaul 모드에서 적용되는 키맵
  • .vimrc 예
nmap <F2> :up<CR>
nmap <F3> :tabnext<Enter>
nmap <F4> :tabprev<Enter>

12. 프로그래머를 위한 기능


a. 들여쓰기

  • >> / << : 행 들여쓰기 / 들여쓰기 취소
  • Visual Mode로 블럭 지정 후 < / > : 하이라이트된 코드 들여쓰기/들여쓰기 취소
  • Visual Mode로 블럭지정 후 = : 자동 들여쓰기

b. 자동완성

  • Ctrl-N / Ctrl-P : 변수 및 import한 라이브러리 검색
  • Ctrl-N+Ctrl-X+Ctrl-N : 특수문자가 포함된 단어일 때
  • Ctrl-X+Ctrl-F : 파일 검색 / 자동 완성

c. tab <=> spaces

  • :set et ts=4ret : 탭을 스페이스로
  • :set noet ts=4ret!: 스페이스를 탭으로

d. ~/.vimrc 받는 곳

0개의 댓글