python을 위한...

Vim/Plug-Ins 2016. 4. 6. 00:38 |

'Vim > Plug-Ins' 카테고리의 다른 글

[EXAMPLE] YouCompleteMe - .ycm_extra_conf.py  (0) 2016.03.03
vim 유용한 플러그인 셋팅  (0) 2016.02.25
Vundle for Linux  (0) 2013.03.21
Vundle for Windows  (0) 2013.02.20
Plug-in 모음  (0) 2013.02.05
Posted by scii
:
~/Desktop/tmp.py.html
  1 # This file is NOT licensed under the GPLv3, which is the license for the rest
  2 # of YouCompleteMe.
  3 #
  4 # Here's the license text for this file:
  5 #
  6 # This is free and unencumbered software released into the public domain.
  7 #
  8 # Anyone is free to copy, modify, publish, use, compile, sell, or
  9 # distribute this software, either in source code form or as a compiled
 10 # binary, for any purpose, commercial or non-commercial, and by any
 11 # means.
 12 #
 13 # In jurisdictions that recognize copyright laws, the author or authors
 14 # of this software dedicate any and all copyright interest in the
 15 # software to the public domain. We make this dedication for the benefit
 16 # of the public at large and to the detriment of our heirs and
 17 # successors. We intend this dedication to be an overt act of
 18 # relinquishment in perpetuity of all present and future rights to this
 19 # software under copyright law.
 20 #
 21 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 22 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 23 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 24 # IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
 25 # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 26 # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 27 # OTHER DEALINGS IN THE SOFTWARE.
 28 #
 29 # For more information, please refer to <http://unlicense.org/>
 30 import os
 31 import ycm_core
 32 # These are the compilation flags that will be used in case there's no
 33 # compilation database set (by default, one is not set).
 34 # CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR.
 35 flags = [
 36 '-x', 'c++',
 37 '-Wall',
 38 '-Wextra',
 39 '-fPIE',
 40 '-D_REENTRANT',
 41 '-std=c++1y',
 42 '-stdlib=libc++',
 43 '-ftemplate-depth=8192',
 44 '-fconstexpr-depth=8192',
 45 '-lc++abi',
 46 '-isystem', '/usr/include/c++/v1',
 47 '-isystem', '/usr/local/include',
 48 '-isystem', '/usr/include/x86_64-linux-gnu',
 49 '-isystem', '/usr/include',
 50 '-I', '/usr/local/src/yeppp/1.0.0/library/headers',
 51 '-I', '/usr/local/src/string_view/include/experimental',
 52 '-I', '/usr/local/src/scoped_resource',
 53 '-I', '/usr/local/include/hpx/external',
 54 '-I', '/opt/qt/5.2.2/linux/mkspecs/linux-clang-libc++',
 55 '-I', '/opt/qt/5.2.2/linux/include',
 56 '-I', '/opt/qt/5.2.2/linux/include/QtBluetooth',
 57 '-I', '/opt/qt/5.2.2/linux/include/QtCLucene',
 58 '-I', '/opt/qt/5.2.2/linux/include/QtConcurrent',
 59 '-I', '/opt/qt/5.2.2/linux/include/QtCore',
 60 '-I', '/opt/qt/5.2.2/linux/include/QtDBus',
 61 '-I', '/opt/qt/5.2.2/linux/include/QtDeclarative',
 62 '-I', '/opt/qt/5.2.2/linux/include/QtDesigner',
 63 '-I', '/opt/qt/5.2.2/linux/include/QtDesignerComponents',
 64 '-I', '/opt/qt/5.2.2/linux/include/QtGui',
 65 '-I', '/opt/qt/5.2.2/linux/include/QtHelp',
 66 '-I', '/opt/qt/5.2.2/linux/include/QtMultimedia',
 67 '-I', '/opt/qt/5.2.2/linux/include/QtMultimediaQuick_p',
 68 '-I', '/opt/qt/5.2.2/linux/include/QtMultimediaWidgets',
 69 '-I', '/opt/qt/5.2.2/linux/include/QtNetwork',
 70 '-I', '/opt/qt/5.2.2/linux/include/QtNfc',
 71 '-I', '/opt/qt/5.2.2/linux/include/QtOpenGL',
 72 '-I', '/opt/qt/5.2.2/linux/include/QtOpenGLExtensions',
 73 '-I', '/opt/qt/5.2.2/linux/include/QtPlatformSupport',
 74 '-I', '/opt/qt/5.2.2/linux/include/QtPositioning',
 75 '-I', '/opt/qt/5.2.2/linux/include/QtPrintSupport',
 76 '-I', '/opt/qt/5.2.2/linux/include/QtQml',
 77 '-I', '/opt/qt/5.2.2/linux/include/QtQuick',
 78 '-I', '/opt/qt/5.2.2/linux/include/QtQuickParticles',
 79 '-I', '/opt/qt/5.2.2/linux/include/QtQuickTest',
 80 '-I', '/opt/qt/5.2.2/linux/include/QtScript',
 81 '-I', '/opt/qt/5.2.2/linux/include/QtScriptTools',
 82 '-I', '/opt/qt/5.2.2/linux/include/QtSensors',
 83 '-I', '/opt/qt/5.2.2/linux/include/QtSerialPort',
 84 '-I', '/opt/qt/5.2.2/linux/include/QtSql',
 85 '-I', '/opt/qt/5.2.2/linux/include/QtSvg',
 86 '-I', '/opt/qt/5.2.2/linux/include/QtTest',
 87 '-I', '/opt/qt/5.2.2/linux/include/QtUiTools',
 88 '-I', '/opt/qt/5.2.2/linux/include/QtWebKit',
 89 '-I', '/opt/qt/5.2.2/linux/include/QtWebKitWidgets',
 90 '-I', '/opt/qt/5.2.2/linux/include/QtWidgets',
 91 '-I', '/opt/qt/5.2.2/linux/include/QtX11Extras',
 92 '-I', '/opt/qt/5.2.2/linux/include/QtXml',
 93 '-I', '/opt/qt/5.2.2/linux/include/QtXmlPatterns',
 94 ]
 95 # Set this to the absolute path to the folder (NOT the file!) containing the
 96 # compile_commands.json file to use that instead of 'flags'. See here for
 97 # more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
 98 #
 99 # Most projects will NOT need to set this to anything; you can just change the
100 # 'flags' list of compilation flags. Notice that YCM itself uses that approach.
101 compilation_database_folder = ''
102 if os.path.exists( compilation_database_folder ):
103   database = ycm_core.CompilationDatabase( compilation_database_folder )
104 else:
105   database = None
106 SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ]
107 def DirectoryOfThisScript():
108   return os.path.dirname( os.path.abspath( __file__ ) )
109 def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
110   if not working_directory:
111     return list( flags )
112   new_flags = []
113   make_next_absolute = False
114   path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
115   for flag in flags:
116     new_flag = flag
117     if make_next_absolute:
118       make_next_absolute = False
119       if not flag.startswith( '/' ):
120         new_flag = os.path.join( working_directory, flag )
121     for path_flag in path_flags:
122       if flag == path_flag:
123         make_next_absolute = True
124         break
125       if flag.startswith( path_flag ):
126         path = flag[ len( path_flag ): ]
127         new_flag = path_flag + os.path.join( working_directory, path )
128         break
129     if new_flag:
130       new_flags.append( new_flag )
131   return new_flags
132 def IsHeaderFile( filename ):
133   extension = os.path.splitext( filename )[ 1 ]
134   return extension in [ '.h', '.hxx', '.hpp', '.hh' ]
135 def GetCompilationInfoForFile( filename ):
136   # The compilation_commands.json file generated by CMake does not have entries
137   # for header files. So we do our best by asking the db for flags for a
138   # corresponding source file, if any. If one exists, the flags for that file
139   # should be good enough.
140   if IsHeaderFile( filename ):
141     basename = os.path.splitext( filename )[ 0 ]
142     for extension in SOURCE_EXTENSIONS:
143       replacement_file = basename + extension
144       if os.path.exists( replacement_file ):
145         compilation_info = database.GetCompilationInfoForFile(
146           replacement_file )
147         if compilation_info.compiler_flags_:
148           return compilation_info
149     return None
150   return database.GetCompilationInfoForFile( filename )
151 def FlagsForFile( filename, **kwargs ):
152   if database:
153     # Bear in mind that compilation_info.compiler_flags_ does NOT return a
154     # python list, but a "list-like" StringVec object
155     compilation_info = GetCompilationInfoForFile( filename )
156     if not compilation_info:
157       return None
158     final_flags = MakeRelativePathsInFlagsAbsolute(
159       compilation_info.compiler_flags_,
160       compilation_info.compiler_working_dir_ )
161   else:
162     relative_to = DirectoryOfThisScript()
163     final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )
164   return {
165     'flags': final_flags,
166     'do_cache': True
167   }

'Vim > Plug-Ins' 카테고리의 다른 글

python을 위한...  (0) 2016.04.06
vim 유용한 플러그인 셋팅  (0) 2016.02.25
Vundle for Linux  (0) 2013.03.21
Vundle for Windows  (0) 2013.02.20
Plug-in 모음  (0) 2013.02.05
Posted by scii
:

'Vim > Plug-Ins' 카테고리의 다른 글

python을 위한...  (0) 2016.04.06
[EXAMPLE] YouCompleteMe - .ycm_extra_conf.py  (0) 2016.03.03
Vundle for Linux  (0) 2013.03.21
Vundle for Windows  (0) 2013.02.20
Plug-in 모음  (0) 2013.02.05
Posted by scii
:

Vundle for Linux

Vim/Plug-Ins 2013. 3. 21. 15:53 |


리눅스에 번들을 설치하는 것은 윈도우에서 설치하는 것보다 간단하다!!


1. 번들을 사용하기 위해서는 git 을 설치해야 한다.


2. 번들을 다운받는다.


3. .vimrc 파일을 수정한다. My Bundles here: 부분은 내가 쓰려는 것들을 넣은 것이기 때문에 생략해도 된다.


원문 : https://github.com/gmarik/vundle

'Vim > Plug-Ins' 카테고리의 다른 글

[EXAMPLE] YouCompleteMe - .ycm_extra_conf.py  (0) 2016.03.03
vim 유용한 플러그인 셋팅  (0) 2016.02.25
Vundle for Windows  (0) 2013.02.20
Plug-in 모음  (0) 2013.02.05
VIM 자세한 설정  (0) 2013.01.15
Posted by scii
:

Vundle for Windows

Vim/Plug-Ins 2013. 2. 20. 03:19 |

Vundle for Windows 원문

https://github.com/gmarik/vundle/wiki/Vundle-for-Windows


vundle은 플러그인을 관리하는 플러그인이다. 이건 정말 대박이다!!!

vundle을 소개하는 글: http://kldp.org/node/125263



1. windows용 vim에 vundle을 설치하기 위해서는 먼저 windows용 Git 설치가 필요하다.

http://code.google.com/p/msysgit/downloads/list

사진보다 최신것이 있다면, 가장 최신것을 받으면 된다.

다운받고 설치를 한다.


정상적으로 설치가 되었는지 확인하려면 cmd창을 열고 다음과 같이 입력해서 결과를 확인하면 된다.


2. Git를 설치하면 Curl이 기본적으로 설치가 된다. 이를 vundle에서 이용하기 위해서는 curl.cmd라는 이름의 script 파일을 생성해야 한다.

@rem Do not use "echo off" to not affect any child calls.
@setlocal

@rem Get the abolute path to the parent directory, which is assumed to be the
@rem Git installation root.
@for /F "delims=" %%I in ("%~dp0..") do @set git_install_root=%%~fI
@set PATH=%git_install_root%\bin;%git_install_root%\mingw\bin;%PATH%

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%

@curl.exe %*

이것을 코딩하기 귀찮은 분은 이 파일을 다운받으면 된다.

gist912993-c64d4a0ec01a11522b5bf0e444d996277ec46185.tar.gz

아니면 여기서 다운받아도 된다. 

https://github.com/gmarik/vundle/wiki/Vundle-for-Windows


생성했거나 다운받은 파일을 C:\Program Files (x86)\Git\cmd 에다가 저장한다. 그리고는 정상적으로 동작하는지 테스트한다.


3. Git을 이용해 vundle plugin을 다운받고 설치한다. 

> cd %USERPROFILE%

> git clone http://github.com/gmarik/vundle.git .vim/bundle/vundle
> gvim _vimrc


4. vundle plugin을 사용하기 위해서 _vimrc 에 다음과 같이 설정한다.

set nocompatible               " be iMproved
 filetype off                   " required!

 set rtp+=~/.vim/bundle/vundle/
 call vundle#rc()

 " let Vundle manage Vundle
 " required! 
 Bundle 'gmarik/vundle'

 " My Bundles here:
 "
 " original repos on github
 Bundle 'tpope/vim-fugitive'
 Bundle 'Lokaltog/vim-easymotion'
 Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
 Bundle 'tpope/vim-rails.git'
 " vim-scripts repos
 Bundle 'L9'
 Bundle 'FuzzyFinder'
 " non github repos
 Bundle 'git://git.wincent.com/command-t.git'
 " ...

 filetype plugin indent on     " required!
 "
 " Brief help
 " :BundleList          - list configured bundles
 " :BundleInstall(!)    - install(update) bundles
 " :BundleSearch(!) foo - search(or refresh cache first) for foo
 " :BundleClean(!)      - confirm(or auto-approve) removal of unused bundles
 "
 " see :h vundle for more details or wiki for FAQ
 " NOTE: comments after Bundle command are not allowed..


5. 설정이 완료된 후 vim을 재시작 한 후, :BundleInstall 을 실행한다. 그러면 필요한 Bundle이 설치된다.


6. 이제부터는 :BundleSearch 를 입력하면 다음과 같이 설치가 가능한 plugin list가 출력된다.



7. 설치하고 싶은 plugin을 복사해서 _vimrc에 저장한 후, 재시작한다. 그 다음 :BundleInstall을 입력하면 해당 plugin이 설치가 된다.





Vundle 사용 방법


:BundleSearch         왼쪽 창에 설치 가능한 list들을 확인할 수 있다. 

:BundleInstall           리스트에서 확인한 것을 _vimrc에 복사한 후 이 명령을 내리면 설치를 한다.

:BundleInstall!          설치된 것들을 업데이트한다.

:BundleClean           _vimrc에 적어두었던 plugin(Bundle)의 라인을 삭제한다. 그 다음 이 명령을 내리면 해당 plugin이 삭제된다.

:BundleList              설치된 플러그인들의 목록을 왼쪽창에 나타내준다.

'Vim > Plug-Ins' 카테고리의 다른 글

vim 유용한 플러그인 셋팅  (0) 2016.02.25
Vundle for Linux  (0) 2013.03.21
Plug-in 모음  (0) 2013.02.05
VIM 자세한 설정  (0) 2013.01.15
autocomplpop (vim 자동완성 플러그인)  (0) 2012.05.09
Posted by scii
:

Plug-in 모음

Vim/Plug-Ins 2013. 2. 5. 19:29 |

vim Color Scheme Site

http://vimcolorschemetest.googlecode.com/svn/html/index-html.html

http://ethanschoonover.com/solarized




vim 사용자를 위한 플러그인 매니저 vundle 설정 Tip


http://kldp.org/node/125263

http://www.morenice.kr/118





L9 library must be installed! 해결 방법



여기로 가서 다운받아 설치하면 해결된다.


CTags   

http://ctags.sourceforge.net/

윈도우의 gvim이면  ctags.exe 파일만 windows 디렉토리에 갖다두면 끝!


리눅스:

$ sudo apt-get install ctags 로 설치.

$ ctags --version 으로 잘 설치되었는 지 확인.





Tlist    : 창 좌측으로 현재 파일에 있는 변수/함수명을 출력해주는 플러그인

taglist는 소스코드를 분석하여 변수, 매크로, 함수의 목록을 만들어준다. 따라서 소스코드의 구조를 쉽게 파악할 수 있다.


http://www.vim.org/scripts/script.php?script_id=273

CTags 플러그인이 기본적으로 있어야 이 플러그인을 쓸 수 있다.


단축키 설정

map <F7> :Tlist<CR>

let g:Tlist_WinWidth=24 이걸로 창의 너비를 조절할 수 있다.


현재 디렉토리에 있는 *.c 파일을 분석하려면 다음 명령을 순서대로 입력하면 된다.

:TlistAddFiles *.c

:TlistToggle


태그에서 엔터를 치면 즉시 해당 태그로 이동하여 편집할 수 있다.

태그에서 스페이스바를 누르면 변수나 함수의 선언 부분을 볼 수 있다.




The NERD tree    : 창 좌측으로 디렉토리와 파일들을 트리로 출력해주는 플러그인(디렉토리 탐색기)

http://www.vim.org/scripts/script.php?script_id=1658

편하게 하기위한 단축키 설정

map <F8> :NERDTreeToggle 경로<CR>


NERD tree 의 주요 브라우징 단축키

<CR>, o                    디렉토리의 경우 이동, 파일인 경우 열어준다.

t                                 파일을 새로운 탭에 열어준다.

T                                파일을 새로운 탭에 백그라운드로 열어준다.

x                                현재 선택된 노드를 닫고 상위 노드로 이동한다.

X                               현재 선택된 노드를 포함하여 하위 노드를 모두 닫는다.

e                               선택된 노드를 새 창에서 열어 준다.


자세한 설명

? : 도움말창 토글

q : NERDTree 종료


- 디렉토리 이동

u : 상위 디렉토리로 이동

U : 상위 디렉토리로 이동, 모든 디렉토리리스트를 접음.

c : 선택된 디렉토의 하위 리스트를 새창을 열어서 보여줍니다.

C : 현재 선택된 디렉토리를 ROOT디렉토리로 두기(chroot)

cd : 현재 디렉토리명을 보여줌 (pwd)

P : 최상위 디렉토리(ROOT)로 이동

p : 부모 디렉토리로 이동

K : 첫번째 자식디렉토리로 이동

J : 마지막 자식디렉토리로 이동


- 새로고침

r : 현재 위치한 디렉토리를 새로고침

R : 전체 새로 고침


- 현재 선택된것이 디렉토리라면

o : 디렉토리 노드를 열기(보여주기)/접기

O : 모든 하위 디렉토리를 열기(보여주기) 

X : 열린 모든 하위 디렉토리를 닫기(O와 반대)


- 현재 선택된것이 파일이라면

o : 미리보기 윈도우를 띄워서 미리보기

go : 미리보기

t : 새탭으로 열기

i : 수평분할해서 보여줍니다.

gi : 미리보기 윈도우를 사용하여 수평분할해서 보여줍니다.

s : 수직분할해서 보여줍니다.

gs : 미리보기 윈도루르 사용하여 수직분할해서 보여줍니다.


:NERDTreeFromBookmark "Bookmarkname" "북마크된걸 최상위 루트로 해서 엽니다

:NERDTreeToggle "Tagbar과 비슷한거죠머.. 토글기능. 없으면 나오게 하고, 이미 있으면 없애고..

:NERDTreeMirror "다른탭에 있는 NERDTree를 현재 탭과 공유하는 기능이라고 하는데... 사용하지 않아서 전 잘 모르겠어용

:NERDTreeClose 

:NERDTreeFind "현재 열려있는 파일의 디렉토리의 트리를 봅니다. 그러니까, 현재디렉토리가 /tmp라면 새로띄우는 NERDTree의 Root는 /tmp 가 된다... 이말이죠.


~/.vimrc

let g:NERDChristmasTree = 1 "colorful 효과
let g:NERDTreeAutoCenter = 1 
let g:NERDTreeChDirMode = 1
let g:NERDTreeHighlightCursorline = 1 "현재 커서 위치를 하일라이팅합니다. 기본값은 1

let g:NERDTreeSortOrder=['\.c$', '\.h$', '*'] "*.c, *.h, 기타파일 순으로 정렬합니다.

let g:NERDTreeBookmarksFile = ~/.NERDTreeBookmarks "북마크 파일을 지정합니다. 이값은 디폴트 값이에요.

let g:NERDTreeIgnore = ['\.vim$', '\~$'] "*.vim파일과 끝이'~'로 끝나는 파일들은 보여주지 않습니다.

let g:lNERDTreeWinSize = 20 "NERDTree의 폭을 설정합니다.

let g:NERDTreeMinimalUI = 1 "NERDTree에서 (위에뜨는) help/bookmark 메세지를 보여주지 않습니다.


" let g:NERDTreeShowHidden = 1 "숨김파일을 보여준다고 합니다.

" let g:NERDTreeShowLineNumbers=1 "라인을 보여줍니다

" let g:NERDTreeShowFiles = 0 "0이면 파일을 보여주지 않고, 디렉토리만 보여줍니다.

" let g:NERDTreeWinPos = right "이렇게 설정하면 오른쪽에 NERDTree가 나타납니다.

" 이외에 더 자세한건 :help NERDTree




SrcExpl    : 윈도우 하단에 현재 커서 부분의 함수나 변수에 대한 선언부를 보여주는 플러그인

http://www.vim.org/scripts/script.php?script_id=2179




AutoComplPop    : 키워드 자동완성 플러그인

http://www.vim.org/scripts/script.php?script_id=1879






Python Plug-ins


많이 사용하는 파이썬 플러그인들 목록

http://www.vim.org/scripts/script_search_results.php?keywords=python&script_type=&order_by=rating&direction=descending&search=search




Python Syntax 파일. 

이것을 적용해야 vim에서 제대로 된 파이썬 syntax가 나온다. 나의 컴퓨터에서 윈도우랑 리눅스랑 똑같은 컬러스키마를 적용시켰는데 왜 틀리나했더니 syntax 파일의 버전이 달라서 그랬던거구나~!!

python-syntax.vim-master.zip




Pydiction    : Python AutoComplete 플러그인

http://www.vim.org/scripts/script.php?script_id=850

윈도우 gvim 기준으로 설명한다.

다운받아서 압축푼 후, 개발자의 설치 예와 같이 Vim\vimfiles\ftplugin에 python_pydiction.vim 파일을 넣어준다.

그 다음, ftplugin 디렉토리에 pydiction 디렉토리를 만든 후 나머지 파일들을 넣어준다.


vimrc 파일을 열어서 다음과 같이 두 줄을 넣어준 후 저장한다.

filetype plugin on

let g:pydiction_location='C:\Program Files (x86)\Vim\vimfiles\ftplugin\pydiction\complete-dict'


이렇게 하면 설치가 완료된다.

이 플러그인은 Tab키를 눌러서 자동완성을 실행한다. 즉, impo까지만 타이핑한 다음 Tab키를 누르면 목록이 쫘르륵~ 뜬다.

목록이 뜨면 Tab키를 눌러서 밑으로 옮겨다닐 수 있다. Shift + Tab 키는 위로 올라간다.




pyflakes.vim : PyFlakes on-the-fly Python code checking 

코딩 시 자동으로 문법오류를 잡아줌. 화면에 틀린 부분 나오도록하는 파이썬 플러그인

http://www.vim.org/scripts/script.php?script_id=2441

https://github.com/vim-scripts/pyflakes.vim


어디다 설치하는지 모를 경우 이 명령어로 현재 vim이 실행되고있는 경로를 알 수 있다.


echo $VIMRUNTIME


설치 방법도 간단하다. 리눅스를 쓰고 있다면, 그냥 ~/.vim/ftplugin에 넣어주기만 하면 자동으로 실행된다.

gvim 에서의 설치는 잘 모르겠다. 



문법이나 논리적인 오류가 나면 저렇게 붉은색으로 표시가 된다. 그리고 그 부분에 커서를 가져가면 밑에 어떤 오류인지가 나온다. 

와우~ 좋다!!



'Vim > Plug-Ins' 카테고리의 다른 글

Vundle for Linux  (0) 2013.03.21
Vundle for Windows  (0) 2013.02.20
VIM 자세한 설정  (0) 2013.01.15
autocomplpop (vim 자동완성 플러그인)  (0) 2012.05.09
c.vim 플러그인 설치  (0) 2012.05.09
Posted by scii
:

VIM 자세한 설정

Vim/Plug-Ins 2013. 1. 15. 16:35 |

초보 개발자의 Vim 개인 설정


그동안 미루고 미루어 오다가 드디어 Vim 개인 설정을 마쳤습니다. 웹에 퍼져있는 여러 vimrc 파일들을 참조하고 Vim 영문매뉴얼도 뒤져 보았네요. 그리고 제 영어 실력이 어느 정도인지를 뼈져리게 깨달았습니다. OTL

플러그인

사용하는 플러그인은 아래와 같습니다.

  • a.vim : C/C++ 헤더파일 생성/스위치 플러그인.
  • c.vim : C/C++ 지원 플러그인.
  • taglist : 함수, 메소드, 클래스 등의 목록을 별도의 창에 보여주는 플러그인. ctags 필요.
  • NERD_tree.vim : 향상된 익스플로러 플러그인.
  • dic : 터미널용 야후/네이버 사전 프로그램. Vim의 Shift+k 키로도 사용 가능.

vimrc

scripte utf-8
" vim: set fenc=utf-8 tw=0: "
" 파일의 첫부분에 위의 2줄을 꼭 남겨 두십시오. "

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 6l4ck3y3(까막눈)의 Vim 설정 파일 "
" 마지막 수정: 2010-06-14 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 프로그램 기본 설정 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 오리지널 Vi 와의 호환성을 없애고, Vim 만의 기능들을 쓸 수 있게 함. "
set nocp

" 모든 옵션을 원래대로 복원 "
set all&

" 명령어 기록을 남길 갯수 지정 "
set hi=100

" 오류음 대신 비주얼벨 사용 "
set vb

" 매크로 실행중에 화면을 다시 그리지 않음 "
set lz

" 프로그램 시작시 플러그인 로드 "
set lpl

" 인코딩 설정 "
" 문서를 읽을 때 BOM 을 자동으로 제거하려면, fencs 맨 앞에 ucs-bom 를 추가하세요. "
"let &tenc=&enc "
set enc=utf-8
set fenc=utf-8
set fencs=utf-8,cp949,cp932,euc-jp,shift-jis,big5,ucs-2le,latin1

" 인쇄 옵션 설정 "
" set printencoding=utf8 "
" set printmbcharset=ISO10646 "
" set printmbfont=r:나눔고딕코딩,c:yes,a:yes "
" set printfont=나눔고딕코딩\ 10 "

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 모양 설정 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

if has("gui_running")

" gVim의 기본폰트 설정 "
   
if has("win32")
       
set gfn=Fixedsys:h10:cHANGEUL
    elseif has
("unix")
       
set gfn=나눔고딕코딩\ 10
    endif

" gVim의 배경테마 설정 "
    colorscheme desert

" gVim 시작시 크기지정 "
   
set lines=30
   
set co=150

endif

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 편집 기능 설정 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" ESC키를 누르면 한글 모드가 해제 "
" 입력모드에서 이전 언어 설정 모드 유지 "
inoremap
<ESC> <ESC>:set imdisable<CR>
nnoremap i
:set noimd<CR>i
nnoremap I
:set noimd<CR>I
nnoremap a
:set noimd<CR>a
nnoremap A
:set noimd<CR>A
nnoremap o
:set noimd<CR>o
nnoremap O
:set noimd<CR>O    

" 입력모드에서 Ctrl+d로 백스페이스 기능 "
map
! <C-d> <BS>

" Shift+Enter로 아래줄로 커서 넘기기 기능 "
map
<S-CR> <ESC>o
map
! <S-CR> <ESC>o

" 괄호 자동 완성 후 입력모드로 전환 "
map
! () ()<ESC>i
map
! (); ();<ESC>hi
map
! [] []<ESC>i
map
! {} {}<ESC>i
map
! {}; {};<BS><ESC>i<CR><ESC>O<BS>
map
! <> <><ESC>i
map
! '' ''<ESC>i
map
! "" ""<ESC>i

" 현재 줄의 마지막에 이어 쓰기 "
map
! <C-TAB> <S-CR><ESC>i<BACKSPACE>

" 파일의 종류를 자동으로 인식 "
filetype on

" 자동 문법 강조 "
syntax on

set nocompatible         " Vim 디폴트 기능들을 사용함 "
set number                " 줄 번호를 붙임  "
set backspace=2         " 삽입 모드에서 백스페이스를 계속 허용 "
set autoindent             " 자동 들여쓰기 "
set cindent             " C 언어 자동 들여쓰기 "
set smartindent         " 역시 자동 들여쓰기 "
set nowrap                 " 자동 줄바꿈 안함  "
set nowrapscan             " 찾기에서 파일의 맨 끝에 이르면 계속하여 찾지 않음 "
set ignorecase             " 찾기에서 대/소문자를 구별하지 않음 "
set incsearch             " 점진적으로 찾기  "
set nobackup             " 백업파일을 만들지 않음 "
set nojoinspaces         " J 명령어로 줄을 붙일 때 마침표 뒤에 한칸만 띔 "
set ruler                 " 상태표시줄에 커서 위치를 보여줌 "
set tabstop=4             " 간격 "
set shiftwidth=4         " 자동 들여쓰기 간격 "
set keywordprg=ydic        " K를 눌렀을 때 실행할 명령어 "
set showcmd             " (부분적인)명령어를 상태라인에 보여줌 "
set showmatch             " 매치되는 괄호의 반대쪽을 보여줌 "
set autowrite             " :next나  :make 같은 명령를 입력하면 자동으로 저장 "
set linespace=3         " 줄간격 "
set title                 " 타이틀바에 현재 편집중인 파일을 표시 "
set statusline=\ %<%l:%v\ [%P]%=%a\ %h%m%r\ %F\     " 다중 문서 작업을 위한 Status 줄 "
set tags+=./tags        " add current directory's generated tags file to available tags "

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 플러그인 설정 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" c.vim 플러그인의 C_InsertTemplate() 함수 맵핑 설정. "
noremap <unique> <script> <Plug>CommentFuncDes :call C_InsertTemplate("comment.function")<CR>
noremap <unique> <script> <Plug>CommentFrame :call C_InsertTemplate("comment.frame")<CR>

" omnicppcomplete.vim 플러그인 설정. "
" autocmd CursorMovedI * if pumvisible() == 0|pclose|endif "
" autocmd InsertLeave * if pumvisible() == 0|pclose|endif "

" let OmniCpp_MayCompleteDot = 1         autocomplete with . "  
" let OmniCpp_MayCompleteArrow = 1          autocomplete with -> "
" let OmniCpp_MayCompleteScope = 1          autocomplete with :: "
" let OmniCpp_SelectFirstItem = 2          select first item (but don't insert) "
" let OmniCpp_NamespaceSearch = 2          search namespaces in this and included files "
" let OmniCpp_ShowPrototypeInAbbr = 1    show function prototype (i.e. parameters) in popup window "
" let OmniCpp_DisplayMode = 1 "
" let OmniCpp_LocalSearchDecl = 1 "

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 단축키 설정 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" F1은 프레임 형식의 주석 달기, Ctrl+F1은 함수에 대한 설명 달기 "
map <F1> <Plug>CommentFrame
map! <F1> <ESC><F1><ESC>a
map <C-F1> <Plug>CommentFuncDes
map! <C-F1> <ESC><C-F1><ESC>a

" F2는 탭 열기, Ctrl+h,l로 탭 이동 "
map <F2> :tabnew<CR>            
map <C-h> gT
map <C-l> gt

" F3은 저장 "
map <F3> :w!<CR>                  
map! <F3> <ESC><F3>

" F4는 현재창 닫기 "
map <F4> :q!<CR>

" F5는 TagList 열기 "
map <F5> :TlistToggle<CR>

" F6은 파일 비교하기, Ctrl+F6로 파일 비교하기 해제 "
map <F6> :diffthis<CR><C-w><C-w>:diffthis<CR>
map <C-F6> :diffoff<CR><C-w><C-w>:diffoff<CR>

" F7은 Hex 모드 "
map <F7> :%!xxd<CR>

" F8은 ctags 생성 "
map <F8> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR>

" Ctrl+k는 폴딩 접기, Ctrl+j로 폴딩 열기 "
map <C-k> v]}zf<CR>
map <C-j> zo<CR>

" Ctrl+s는 소스파일과 헤더파일 전환 "
map <C-s> :A<CR>

" Ctrl+e는 디렉토리 목록 열기, Ctrl+Enter로 파일 선택 후 디렉토리 목록 닫기 "
map <C-e> :NERDTree<CR>

" Ctrl+y 사전 검색, 단어 위에서 Shift+k를 눌러도 동작 "
map <C-y> :!ydic

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim 개인 설정 완료  "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""


코딩 습관

전 코딩할 때 괄호나 따옴표가 있으면 미리 닫고나서 그 내부를 작성합니다. 그래서 ( ) 이 다음에 방향키로 왼쪽으로 이동해야 하죠. 이런 제 습관 때문에 "+Space 조합으로 괄호 자동 완성 후 입력모드로 전환" 이라는 것을 설정하였습니다. 이 설정 덕분에 상당히 편하게 코딩할 수 있게 되었죠.

Vim에서 인쇄는?

vimrc 파일을 보시면 알겠지만, 인쇄와 관련하여 몇몇의 설정이 주석으로 처리되어 있습니다. Vim에서 한글을 프린터로 인쇄하려고 노력한 흔적입니다. ㅜㅜ 몇 날 몇 일동안 새벽까지 잠을 안 자면서까지 관련 문서를 뒤져봐도 뾰족한 수가 안 나오네요. 

분명 Vim에서는 한국어, 중국어, 일본어를 지원하고 있습니다. 그리고 인쇄에 관해서는 별도로 printmbfcharset와 printencoding 설정을 해주아야 하죠. 그런데 설정을 하고나서 아무것도 없는 빈 백지만 인쇄되는 기이한 현상이 발생하는 것입니다. 이 문제를 해겨하려고 수 십장의 A4 용지와 많은 시간을 허비했죠. 결국은 치솟는 스트레스를 진정시키고 GG 선언했습니다. (어쩌면 나눔고딕코딩 폰트의 문제일지도...)

저 주석은 그걸 잊지 않겠다는 의미로 남겨 두었습니다.

출처: http://hisjournal.net/blog/176

'Vim > Plug-Ins' 카테고리의 다른 글

Vundle for Windows  (0) 2013.02.20
Plug-in 모음  (0) 2013.02.05
autocomplpop (vim 자동완성 플러그인)  (0) 2012.05.09
c.vim 플러그인 설치  (0) 2012.05.09
Taglist 플러그인 설치법  (0) 2012.05.09
Posted by scii
:



대박 플러그인이다... 내가 찾던 바로 그것이야!!!! 


자동완성 플러그인 중에 검색의 검색으로 선택한 것이 이 플러그인이다. 


이 플러그인은 기존의 플러그인들과 다르게 입력을 하고 있으면 자동으로 추천 단어를 보여준단다.


단어 선택 및 적용 키


Tab, Enter, Ctrl+p, Ctrl+n


다운 : http://www.vim.org/scripts/script.php?script_id=1879


압축푼 후 각각맞게 ~/.vim/plugin에 넣어주고 ~/.vim/doc에 넣어주고 나머진 ~/.vim/에 넣어주면 됨. 압축풀어보면 어떻게 넣어야하는지 알게됨.


그리고  ~/.vimrc에 추가하면 더 좋아지는 것이 있다. 개인차가 있겠지만


출처는 : http://hacker.golbin.net/wp/archives/1354




"autocomplpop에서부터 추가하면 된다.


이 코드를 사용하면 탭과 엔터로 자동완성이 된다. 


터미널에서 사용하면 ctermbg를 사용하면되고, gui를 사용하면 guibg와 guifg 를 사용하면 된다.


"========== AutoCompletePop ==========

function! InsertTabWrapper()

    let col=col('.')-1

    if !col||getline('.')[col-1]!~'\k'

    return "\<TAB>"

    else

    if pumvisible()

       return "\<C-N>"

    else

       return "\<C-N>\<C-P>"

    end 

    endif

endfunction


inoremap <TAB> <c-r>=InsertTabWrapper()<cr>


hi Pmenu ctermbg=blue

hi PmenuSel ctermbg=yellow ctermbg=black

hi PmenuSbar ctermbg=blue



플러그인이 7.1에 맞춰져 있어서 vim 7.0버전은 설치가 안된단다. 만약 vim 7.0 버전을 사용한다면 autocomplpop.vim 파일 191번째 줄의 if v:version < 701 부분을


if v:version < 700 으로 바꿔주면 됨.


'Vim > Plug-Ins' 카테고리의 다른 글

Plug-in 모음  (0) 2013.02.05
VIM 자세한 설정  (0) 2013.01.15
c.vim 플러그인 설치  (0) 2012.05.09
Taglist 플러그인 설치법  (0) 2012.05.09
vim 플러그인 인스톨  (0) 2012.05.08
Posted by scii
: