
この記事ではvimの設定について説明します。vimでは、テキストエディターの「控えめな」理解を共有するため、さまざまなPyCharm IDEで可能なのと同じ方法でコードを書くのが便利/快適/簡単です(下線) 、SublimeTextなど
初心者向けに読んで、Vimの質問をできる限り発生させないように、プロセス全体を可能な限り詳細に説明しようとします。
背景
私自身は非常に長い間vimに精通していませんが、その研究と使用への欲求につながりました。- vimに関する十分な数の記事
- 多数の既存のプラグイン
- ほとんどの場合、Python開発者はLinux用のコードを記述します(vimはクロスプラットフォームですが)
- 自分の好奇心
現在、Pythonのメイン開発ツールとしてvimを頻繁に使用していますが、後悔はしていません。 何かが足りない場合は、数分でグーグルで問題を解決します。 私を信じて、vimはそれを研究するのに費やした努力の価値が本当にあります。 それはすぐにそれ自身の代価を払います。 それはただの欲望と少しの忍耐でしょう。
準備段階
だから。 準備段階に直接進みます。 以下が必要です。- Vimバージョン7.4(リポジトリからダウンロードするか、手動でビルドすることにより、必要なものを取得できます)
- Python 2.7(pipをインストール済み)
- gitを使用するためのクライアント
上記が完了したら、構成と「カスタマイズ」に直接進むことができます。
カスタマイズ
vimを抑制することを決めた初心者にとって最初の問題はvimscriptです。 Vimscriptは、vim用に設計されたスクリプト言語です。 その上で、vimでシンプルで簡単な操作を保証するために、使用するプラグイン、ホットキーなどを説明します。 確認するには、 このサイトとこのサイトをご覧になることをお勧めします。 そこにはすべて、何が、どこで、どのように、そしてなぜ説明されています。
最初に言うことは、vim構成ファイルはユーザーのホームディレクトリ(〜/)にあり、.vimrcと呼ばれることです。 その中で、どのフォント、配色、ホットキーなどに関して瞬間が署名されます。 使用されます。
第二に、テキストエディターをセットアップするとき、.vimディレクトリ(これは隠しディレクトリであり、ユーザーのホームディレクトリにもあります)に移動する必要がある場合があります。このディレクトリには、ディレクトリでソートされた多数の必要なファイルが含まれます。
.vimソースディレクトリにはどのサブディレクトリが含まれていますか? このようなもの:
.vim
| ____後
| ____自動ロード
| ____色
| ____ doc
| ____ ftplugin
| ____インデント
| ____プラグイン
| ____スクリプト
| ____構文
ただし、上記のすべてのディレクトリのうち、必要なものはわずかです。
- カラー-カラースキーム/テーマ用
- インデント-HTML / XMLタグなどで動作するファイルはここにドロップされます。
- スクリプト-スクリプト用
- 構文-構文ファイル
適切なファイルをこれらのディレクトリに配置し、たとえば私から取得します 。
インストールを開始してパッケージマネージャーを使用する前に、コンソールに次のように記述します。
pip install pyflakes pep8 pylint ipython
将来、これらのライブラリはコードの品質を監視するのに役立ちます:エラー、PEP8への準拠など。 このリストの最後のライブラリ/パッケージ-ipythonは、「デバッガ」を設定するのに便利です。
Exuberant ctagsもインストールする必要があります。 ここからダウンロードするか、apt-get / aptitude / rmp / pacman /パッケージマネージャーなどから検索してインストールできます。
プラグインマネージャー
プラグインのインストールと使用を簡単にするために、Vundleを使用します。 VundleはVimのパッケージマネージャーで、次の機能を備えています。
- で指定されたプラグインを構成およびインストールします。 vimrc
- 必要に応じてプラグインを更新する
- 未使用のプラグインを削除する
ただし、構成ファイルで必要なプラグインのセットの説明に進む前に、最初にVundle自体をインストールする必要があります。 これを行うには、次を実行します。
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
このコマンドを実行すると、Vundleは〜/ .vim / bundle / Vundle.vimに設定されます
新しく作成した.vimrcに次の部分がまだない場合は追加します。
set nocompatible " be iMproved, required filetype off " required "===================================================== " Vundle settings "===================================================== " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'gmarik/Vundle.vim' " let Vundle manage Vundle, required "---------=== Code/project navigation ===------------- Plugin 'scrooloose/nerdtree' " Project and file navigation Plugin 'majutsushi/tagbar' " Class/module browser "------------------=== Other ===---------------------- Plugin 'bling/vim-airline' " Lean & mean status/tabline for vim Plugin 'fisadev/FixedTaskList.vim' " Pending tasks list Plugin 'rosenfeld/conque-term' " Consoles as buffers Plugin 'tpope/vim-surround' " Parentheses, brackets, quotes, XML tags, and more "--------------=== Snippets support ===--------------- Plugin 'garbas/vim-snipmate' " Snippets manager Plugin 'MarcWeber/vim-addon-mw-utils' " dependencies #1 Plugin 'tomtom/tlib_vim' " dependencies #2 Plugin 'honza/vim-snippets' " snippets repo "---------------=== Languages support ===------------- " --- Python --- Plugin 'klen/python-mode' " Python mode (docs, refactor, lints, highlighting, run and ipdb and more) Plugin 'davidhalter/jedi-vim' " Jedi-vim autocomplete plugin Plugin 'mitsuhiko/vim-jinja' " Jinja support for vim Plugin 'mitsuhiko/vim-python-combined' " Combined Python 2/3 for Vim call vundle#end() " required filetype on filetype plugin on filetype plugin indent on
ご覧のとおり、
Plugin '__'
指定されている場所
Plugin '__'
、Vundleが後でダウンロードしてインストールするこれらのプラグインのインターネットリンクです。 私自身は、これらのプラグインを「カテゴリー」に分割しましたが、これは好みの問題です。 プラグイン自体:
- NERDTree-ファイル/ディレクトリナビゲーション
- TagBar-クラス/関数/変数によるナビゲーション
- vim-airline-ステータス/ステータスバー
- FixedTaskList-FIXME、TODOファイルなどで検索
- conque-term-デバッガーの呼び出しに使用
- vim-surround-HML / XML /タグなどの自動クローズ
- vim-snipmate-スニペット
- python-mode-リファクタリング、ドキュメント、Pythonデバッガーなど
- jedi-vim-Pythonのオートコンプリート
- vim-jinja-Jinjaテンプレート構文のサポート
Vundleを使用するためのガイド/ガイドとしてここにアクセスできます。 ただし、この目的では、1つのことで十分です。
:PluginInstall
このコマンドは、.vimrcファイルをスキャンして、
Plugin '__'
として記述された
Plugin '__'
リストを
Plugin '__'
ます。
一連のプラグインのインストールを開始するには、vim / gvimに移動して
:PluginInstall
を記述し
:PluginInstall
。 上記の設定で指定された各プラグインはgithubaまたは他の場所からダウンロードされ、デフォルト設定の前に設定されるため、少し待たなければなりません。数分待ちます。 ダウンロードおよび設定された各プラグインには「+」のマークが付いています。 リストのすべてが「+」で強調表示されたら、すぐにすべての準備が整います。 そして、将来の使用のために、vimを再起動する必要があります。 ただし、この記事はそれで終わりではありません。快適なvimで動作するには、すべてを「強化」する必要があります。
一般的なvim設定
これらの設定は基本的なものです。 ここで、いくつかのプラグイン、フォントサイズ、配色、表示される要素などに関する私の好みを示します。これらの行を.vimrcファイルの最後に追加します。
"===================================================== " General settings "===================================================== set backspace=indent,eol,start aunmenu Help. aunmenu Window. let no_buffers_menu=1 set mousemodel=popup set ruler set completeopt-=preview set gcr=a:blinkon0 if has("gui_running") set cursorline endif set ttyfast " syntax on if has("gui_running") " GUI? set lines=50 columns=125 colorscheme molokai " , , NERDTree/TagBar vim " autocmd vimenter * TagbarToggle " autocmd vimenter * NERDTree " autocmd vimenter * if !argc() | NERDTree | endif " vim? if has("mac") set guifont=Consolas:h13 set fuoptions=maxvert,maxhorz else " GUI set guifont=Ubuntu\ Mono\ derivative\ Powerline\ 10 endif else " ? colorscheme myterm endif tab sball set switchbuf=useopen " set visualbell t_vb= set novisualbell set enc=utf-8 " utf-8 set ls=2 " set incsearch " set hlsearch " set nu " set scrolloff=5 " 5 " - set nobackup " no backup files set nowritebackup " only in case you don't want a backup file while editing set noswapfile " no swap files " "set guioptions-=m " set guioptions-=T " "set guioptions-=r " " Tab set smarttab set tabstop=8 " 80 Ruby/Python/js/C/C++ augroup vimrc_autocmds autocmd! autocmd FileType ruby,python,javascript,c,cpp highlight Excess ctermbg=DarkGrey guibg=Black autocmd FileType ruby,python,javascript,c,cpp match Excess /\%80v.*/ autocmd FileType ruby,python,javascript,c,cpp set nowrap augroup END " SnipMate let g:snippets_dir = "~/.vim/vim-snippets/snippets" " Vim-Airline set laststatus=2 let g:airline_theme='badwolf' let g:airline_powerline_fonts = 1 let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#formatter = 'unique_tail' " TagBar map <F4> :TagbarToggle<CR> let g:tagbar_autofocus = 0 " Tagbar " NerdTree " NERDTree F3 map <F3> :NERDTreeToggle<CR> " let NERDTreeIgnore=['\~$', '\.pyc$', '\.pyo$', '\.class$', 'pip-log\.txt$', '\.o$'] " TaskList map <F2> :TaskList<CR> " F2 " map <Cq> :bd<CR> " CTRL+Q -
Pythonモード
私はこのプラグインが本当に好きです 。 コードを操作するときに多くの機会を提供します。- リファクタリング
- 自動補完
- デバッガーで動作する
- 自動修正PEP8エラー
- そして、はるかに...
これらの行を.vimrcファイルの最後に追加します。
"===================================================== " Python-mode settings "===================================================== " ( jedi-vim) let g:pymode_rope = 0 let g:pymode_rope_completion = 0 let g:pymode_rope_complete_on_dot = 0 " let g:pymode_doc = 0 let g:pymode_doc_key = 'K' " let g:pymode_lint = 1 let g:pymode_lint_checker = "pyflakes,pep8" let g:pymode_lint_ignore="E501,W601,C0110" " let g:pymode_lint_write = 1 " virtualenv let g:pymode_virtualenv = 1 " breakpoints let g:pymode_breakpoint = 1 let g:pymode_breakpoint_key = '<leader>b' " let g:pymode_syntax = 1 let g:pymode_syntax_all = 1 let g:pymode_syntax_indent_errors = g:pymode_syntax_all let g:pymode_syntax_space_errors = g:pymode_syntax_all " autofold let g:pymode_folding = 0 " let g:pymode_run = 0
ジェダイ・ヴィム
優れたオートコンプリート機能を提供したり、定義に移動したりする非常に便利なプラグイン設定で、このスニペットを最後に追加します。
" Disable choose first function/method at autocomplete let g:jedi#popup_select_first = 0
この行で、メソッド/ライブラリ/オートコンプリートクラス選択のリストから最初の行の選択をオートコンプリートで切り落とします。 これは、多くの場合、最初の行ではなく最初の行を選択しますが、自動選択は煩わしいためです。
jedi-vimをセットアップすると、関数のドキュメントが表示されます

および関数の引数の固体オートコンプリート

ホットキー
何もアドバイスすることは困難です。 どのホットキーが必要か、どのホットキーが必要でないかについて、誰もが異なる理解を持っています。 言いたいのは、標準的なホットキーの動作をオーバーライドする必要なvimscriptの一部を見つけて書くことです。このフラグメントを構成の最後に追加します。
"===================================================== " User hotkeys "===================================================== " ConqueTerm " F5 nnoremap <F5> :ConqueTermSplit ipython<CR> " debug-mode <F6> nnoremap <F6> :exe "ConqueTermSplit ipython " . expand("%")<CR> let g:ConqueTerm_StartMessages = 0 let g:ConqueTerm_CloseOnEnd = 0 " PEP8 <leader>8 autocmd FileType python map <buffer> <leader>8 :PymodeLint<CR> " <Ctrl+Space> inoremap <C-space> <Cx><Co> " nnoremap <leader>Th :set ft=htmljinja<CR> nnoremap <leader>Tp :set ft=python<CR> nnoremap <leader>Tj :set ft=javascript<CR> nnoremap <leader>Tc :set ft=css<CR> nnoremap <leader>Td :set ft=django<CR>
インデント、タブ、異なる言語のスペース
これは、同じPythonタブでの使用が推奨されていないためです。 したがって、それらをスペースに置き換えます。 1つのタブ= 4スペース。 さらに、/ if / while /演算子などに一致するように、常に次の行+インデントにジャンプする必要があることを覚えておく必要があります。他の言語の場合、タブのサイズを指定し、それらをスペースに置き換えるだけで十分です。
このスニペットを構成の最後に追加します。
"===================================================== " Languages support "===================================================== " --- Python --- "autocmd FileType python set completeopt-=preview " , , , jedi-vim / autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=8 \ formatoptions+=croq softtabstop=4 smartindent \ cinwords=if,elif,else,for,while,try,except,finally,def,class,with autocmd FileType pyrex setlocal expandtab shiftwidth=4 tabstop=8 softtabstop=4 smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class,with " --- JavaScript --- let javascript_enable_domhtmlcss=1 autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS autocmd BufNewFile,BufRead *.json setlocal ft=javascript " --- HTML --- autocmd FileType html set omnifunc=htmlcomplete#CompleteTags " --- template language support (SGML / XML too) --- autocmd FileType html,xhtml,xml,htmldjango,htmljinja,eruby,mako setlocal expandtab shiftwidth=2 tabstop=2 softtabstop=2 autocmd bufnewfile,bufread *.rhtml setlocal ft=eruby autocmd BufNewFile,BufRead *.mako setlocal ft=mako autocmd BufNewFile,BufRead *.tmpl setlocal ft=htmljinja autocmd BufNewFile,BufRead *.py_tmpl setlocal ft=python let html_no_rendering=1 let g:closetag_default_xml=1 let g:sparkupNextMapping='<cl>' autocmd FileType html,htmldjango,htmljinja,eruby,mako let b:closetag_html_style=1 autocmd FileType html,xhtml,xml,htmldjango,htmljinja,eruby,mako source ~/.vim/scripts/closetag.vim " --- CSS --- autocmd FileType css set omnifunc=csscomplete#CompleteCSS autocmd FileType css setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4
まとめ
このような長いセットアッププロセスを経て、Pythonを操作するためのかなり柔軟なツールが手に入りました。 この場合、他のPCでの後続のインストールは、必要なライブラリの事前インストール、対応する構成の転送、およびプラグインのインストールのみを表します。設定後、次のようなvimが得られます。

HTML / JavaScript / XMLモードでは、すべてが次のようになります。

誰かが他の機能(たとえば、他の言語のオートコンプリートサポート)を必要とする場合、GitHubまたはvimのWebサイトの公式Webサイトで必要なプラグインを探すことだけをお勧めします。
便利なリンク:
vim.orgのスクリプトセクションはこちらwikia by vim- ここに
OpenVim:vimチュートリアルはこちら
vim-airlineのフォント- ここ
githubの vimの私の設定