cygwin용 vimrc와 내용 설명

송지석의 이미지

전 cygwin에 sshd를 깔고 putty로 접속해서 vim으로 코딩합니다.
이때 사용하는 설정 파일을 올려보겠습니다.
제가 사용하는 기준으로 말씀 드리고 몇몇 세팅은 설명을 하죠.
먼저 .vimrc

"cygwin vimrc
"hangul
set fileencodings=euc-kr
set fileformat=dos
set fileformats=dos,unix
set encoding=cp949

한글 관련입니다. 물론 이 전에 .inputrc등 설정이 잘 돼있어야 할 겁니다.
참고로 제 inputrc는 이렇습니다.
set meta-flag On
set convert-meta Off
set output-meta On

"\e[3~": delete-char
# this is actually equivalent to "\C-?": delete-char

# VT
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# kvt
"\e[H":beginning-of-line
"\e[F":end-of-line

# rxvt and konsole (i.e. the KDE-app...)
"\e[7~":beginning-of-line
"\e[8~":end-of-line

위의 세줄이 중요합니다.

다음 백업설정입니다.

set backup
set backupdir=~/.vim/backup

홈디렉토리 (cygwin이 c:\cygwin 에 깔렸으면 c:\cygwin\home\ 아래에 사용자 이름으로 되어있을 겁니다.) 아래에 .vim 이란 디렉토리를 만들고 그 아래 backup 이란 디렉토리를 만든 다음 저렇게 해두면 백업 파일들이 에디트한 파일이 있는 디렉토리에 생기는 게 아니라 backupdir로 옮겨집니다.

다음은 스크롤

set scrolloff=3

스크롤 할 때 위 아래 세줄을 유지합니다. 무슨 말이냐면 화살표키로 커서를 아래로 내리다보면 아래에서 네번째 줄에 갔을 때부터 스크롤이 되게 하는 겁니다. 코딩할때 자그마하지만 좀 편한 면이 있어서 이렇게 쓰고 있습니다.

syntax on
set bg=dark
set cindent
set autoindent
set tags=./tags,tags,../tags
set shiftwidth=4
set tabstop=4
set noexpandtab
set smarttab

syntax highlighting 켜주고 바탕색을 dark로 하며, indentation을 c용으로 사용합니다.
tags-> ctags를 사용해서 tags 파일을 만들면 소스코드 에디트중에 선언된 곳, 정의된 곳을 찾아갈 수 있는 기능을 제공합니다.
shiftwidth 이하는 탭 설정입니다. 저는 탭을 4칸으로 쓰고 지금 하는 프로젝트는 expandtab(탭을 누르면 탭 대신 스페이스바가 탭 영역만큼 들어감)을 쓰지 않아서 noexpandtab을 사용합니다. 그래서 탭을 입력하면 4칸씩 맞춰서 탭이 들어가죠. smarttab은 앞에 스페이스가 있는 곳에서 탭을 누르면 공백을 지워주고 탭만 들어가게 하는 기능입니다. tabstop과 shiftwidth등을 참고하세요.

set hlsearch
set incsearch

hlsearch - highlight search
/로 찾은 패턴을 하이라이트 해주는 기능입니다.
incsearch - /로 찾을 패턴을 입력할 때 실시간으로 그 패턴을 찾아 커서를 옮겨줍니다.

set autowrite

ctrl+6 등으로 버퍼를 옮길 때나 :make 등 외부 명령 실행할 때 자동으로 현재 파일을 저장합니다.

set nostartofline

커서를 위아래로 움직일 때 컬럼 위치를 유지하도록 합니다.

set backspace=2
set bioskey

backspace는 뭐였는지 잊어버렸습니다. 나중에 알게되면 추가하지요.
bioskey는 dos용인데 ctrl+c를 더 잘 인식하게 한다 고 되어있습니다. 어쨌든 추가.

if &term == "linux"
    set t_kb=^?
endif
if &term == "xterm"
    set t_kb=^?
endif

백스페이스 키 설정입니다.

set showmatch

입력시 괄호를 닫을 때 그와 쌍이 되는 괄호를 잠깐 깜빡이게 해줍니다. 코딩할 때 편합니다.

au BufNewFile,BufReadPost Makefile se noexpandtab

Makefile은 탭이 expandtab으로 되어있으면 make가 제대로 동작이 안되므로 꺼줍니다. expandtab을 사용하는 경우 필요.

" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
autocmd BufReadPost *
  \ if line("'\"") > 0 && line("'\"") <= line("$") |
  \   exe "normal g`\"" |
  \ endif

전에 작업하던 파일은 .viminfo로부터 커서 위치를 읽어와서 문서를 열면 거기로 점프합니다.

" CVS stuff
cmap UP !cvs update %<CR>:e! %<CR>
cmap CI !cvs commit %<CR>

:UP 하면 수정하던 파일이 cvs update가 되고
:CI 하면 cvs commit이 됩니다.

" Comment formatting
"set formatoptions=tcroq
set formatoptions=croql

주석문의 형식입니다. 제가 왜 이렇게 세팅했는 지 잘 기억 안나는데 궁금하시면 :help formatoptions 하시면 됩니다.

set textwidth=80

주석문 입력시 80칸이 넘어가면 단어 단위로 잘라서 다음 행으로 넘어갑니다.

" status bar.
set laststatus=2

status 바가 항상 켜 있게 합니다.

"--------------maps
map <F1> K
" ANSI/POSIX 표준함수의 이름위에 커서를두고 F1 을 누르면 그 함수의 man 페이지를
"보여줍니다.
"map <F2> :w!<CR>
"현재 편집중인 파일을 저장합니다.
map <F2> mk[[?^[A-Za-z_].*(<CR>V"ky`k:echo "<C-R>k"<CR>
" 현재 커서가 어느 함수 내에 있는 지 보여줍니다.
map <F3> v]}zf
"< 소스코드 이쁘게 보기 >
map <F4> zo
"폴드된 내용을 복구시켜줍니다.
"파일 브라우징
map <F5> :25vs./<CR>:set nonumber<CR>^Ww
"화면을 양분해서 프레임을 나눠주고, 왼쪽 프>레임에 현 디렉토리의 파일 목록을 보>
"여줍니다.
map <F6> ^Ww
"커서를 좌우프레임으로 왔다갔다 할때
map <F7> O
"어떤 파일을 열고싶을때에는 열고싶은 파일에 커서를 두고 F7 을 누르면 됩니다
map <F8> [i
"어떤 함수의 이름에 커서를 두고 F8 을 누르면, 화면 하단에 그 함수의 prototype 을
" 보여줍니다.
map <F9> gd
"변수가 선언된 문장으로 찾아가줍니다
map <F10> ''
"다시 원래의 위치로 되돌아가고 싶을때
map <F11> ^]
"전역변수/구조체/정의상수/함수정의를 추적해줍니다.
map <F12> ^T
"추적에 들어간 상태에서 이전위치로 되돌아오려면 F12 를 누르면 됩니다.
"http://list.kldp.org/pipermail/tip/2002Apr/0411.html

c 코딩때 유용한 단축키입니다.

"syntax highlited source code to html. wow!
com -nargs=0 Html :so $VIMRUNTIME/syntax/2html.vim

에디트 하던 파일에서 :Html 입력하면 현재 syntax hilight 설정대로 보여지는 html 파일이 만들어집니다. http://mimosa.snu.ac.kr/~rommance/finfo.c.html 이 그렇게 만들어진 겁니다.

set statusline=\(%n\)%<%f\ %h%m%r%=0x%B\ \ \ \ %-14.(%l,%c%V%)\ %P status 바에 나올 내용을 정합니다. \(%n\) = 버퍼 번호 %f = 현재 파일 이름 %B = 현재 커서 아래 문자의 헥스 코드 (%l,%c%V%) = 행 번호, 컬럼 번호 등. %P = 현재 위치 % 이정도쯤 되고 나머지는 포매팅 문자일 겁니다. 잘 기억 안나니 나머지는 :help statusline으로 확인하세요.

vm ^[c ^[`>a */^[`<i/* ^[`<         " block comment
nm ^[c ^i/* ^[$a */^[^          " line commentify

주석 처리 매크로입니다.
v로 블럭 설정한 경우 alt-c를 누르면 블럭의 앞 뒤에 /* */을 붙여주고
그냥 ex-mode에서 alt-c를 누르면 현재 커서의 행 앞 뒤에 /* */를 붙여줍니다. ^[ 는 ctrl+v를 입력 후 esc를 누르면 입력되는 한 문자입니다.
Forums: 
zienie의 이미지

cygWin으로 C/C++ 작업을 좀 해보려 하는데..... .vimrc 파일을 만들기 귀찮아서 찾아보니 역시나 있군요 ^^
감사합니다.~

##########################################################
넘어지는건 아직 괜찮다.
하지만 넘어질때마다 무언가를 주워서 일어나자.

##########################################################
넘어지는건 아직 괜찮다.
하지만 넘어질때마다 무언가를 주워서 일어나자.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.