この記事では、テキストを移動したり編集したりする複雑さをすべて開示しているわけではありません。 基本的な動きはvimtutorで学ぶことができ、他の組み合わせはその過程で研究されます。 プログラミングプロセスで特に重要なそれらのいくつかについては、後で説明します。
長い間、私は崇高な(約4年)を主な開発環境として使用していましたが、最近何かが変わりました。ブラインド9本指印刷方法をマスターしました。 その瞬間、私は不快なマウスや矢印に手を伸ばす人々を理解し始めました。 「ホーム」ポジションから指を離すことは不自然で非生産的になりました。 それからヴィンテージをオンにしました。 問題は無関係になったようですが、何かが欠けていました。 なぜvimに移行したのかは覚えていませんが、中括弧(MatchParen)が目立ち、カーソルがどのように見えるかはいつも好きでした。 サーバーの設定ルールが真である前にVimを試しましたが、すべての「魔法」は挿入モードへの切り替えとエディターの保存/終了に限定されていました。
最初に理解する必要があるのは、vimがそのまま使用できるのは構成の編集にのみ適していることです。コードを快適に操作するには、いくつかのプラグインをインストールする必要があります。 私は33を十分に持っていました。vimでの作業を単純で直感的なものにするために、崇高な振る舞いを完全にコピーするという目標を設定しませんでした。 このガイドでは、インストールされているすべてのプラグインと設定について説明します。設定により、プラグインとvim自体の操作がより便利になります。 必要なプラグインは公式ウェブサイトで見つけることができますが、私はvimawesomeが好きです 。 環境はUbuntu 16.04およびコンソールvim 7.4です。
すべてのプラグインはgithubにあり、特定のプラグインのインストールまたは使用に関する簡単なガイドを見ることができます。詳細な説明は参考になります。 プラグインの説明から、その使用方法が明確でない場合は、確実に、ホットキーセクションに目的の組み合わせが表示されます。 〜/ .vimrcまたは〜/ .vim / vimrcにすべての設定を設定します。ファイルが存在しない場合は作成します。 始めましょう。
くるくる
プラグインを手動でインストールするのは良いことではありません。 Vundleはパッケージマネージャーとして機能し、その中には病原体 、 vim-plugなどもあります。 Vundleのみを使用したため、どちらが便利かはわかりません。 あなたの裁量で選択してください。
インストールされたプラグイン
インストールされたプラグイン
// set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() // let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim' // common Plugin 'scrooloose/nerdtree' Plugin 'valloric/youcompleteme' Plugin 'xolox/vim-easytags' Plugin 'majutsushi/tagbar' Plugin 'tpope/vim-fugitive' Plugin 'easymotion/vim-easymotion' Plugin 'ctrlpvim/ctrlp.vim' Plugin 'terryma/vim-multiple-cursors' Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'scrooloose/nerdcommenter' Plugin 'matze/vim-move' Plugin 'raimondi/delimitmate' Plugin 'mattn/emmet-vim' Plugin 'scrooloose/syntastic' Plugin 'tpope/vim-surround' Plugin 'sirver/ultisnips' Plugin 'honza/vim-snippets' Plugin 'xolox/vim-session' Plugin 'xolox/vim-misc' Plugin 'SyntaxAttr.vim' Plugin 'dyng/ctrlsf.vim' Plugin 'rking/ag.vim' Plugin 'godlygeek/tabular' // php Plugin 'stanangeloff/php.vim' Plugin 'sumpygump/php-documentor-vim' Plugin 'arnaud-lb/vim-php-namespace' // javascript Plugin 'pangloss/vim-javascript' // html Plugin 'othree/html5.vim' // twig Plugin 'evidens/vim-twig' // css Plugin 'mtscout6/vim-tagbar-css' // colors Plugin 'damage220/solas.vim' Plugin 'nanotech/jellybeans.vim' Plugin 'mhartington/oceanic-next' call vundle#end()
チーム
// :PluginList // :PluginInstall // :PluginClean // :PluginSearch foo
設置
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
依存関係
git curl
ソラス
動く
オタク
ファイルシステムで動作するように設計された最も人気のあるプラグイン 。 ファイルとディレクトリを作成、移動、削除するための便利なホットキーを追加します。
ユーザー設定
ユーザー設定
// let NERDTreeAutoDeleteBuffer = 1
php-documentor
php
html5
javascript
小枝
逃亡者
究極の
スニペット
構文attr
ctrlp
3年間、私はあいまい検索に非常に慣れてきたので、この機会がない開発はほとんど想像できません。 私の記憶では、これは私がインストールした最初のプラグインでした。 Ctrlpは、タグ、ファイル、バッファー、および最後のアクティブなファイルを検索します。
チーム
チーム
// ( Ctrl + R sublime) :CtrlPBufTag
便利な組み合わせ
ユーザー設定<Cj> <Ck> - <Enter> - <Ct> - <Cv> - / ( ) <Cx> - / ( ) <Cd> -
// , CtrlP , , "repo", : // project/src/Repository/Repository.php // project/src/Repository/Foo.php // CtrlP Foo.php. , CtrlP, vim'a, . let g:ctrlp_by_filename = 1 // . w - , CVS (.git, .svn). r - (pwd). let g:ctrlp_working_path_mode = 'wr' // , , <Cp>, .. ( ), . let g:ctrlp_map = '' // let g:ctrlp_buftag_types = { \'php': '--php-kinds=icdf' \}
依存関係
ctags
タグバー
私は崇高なミニマップが好きで、それを見ればすぐにファイル構造を理解できます。 当然、vimでも同じものが欲しかったのですが、プラグインはvim-minimapと呼ばれています。 残念ながら、プラグインはまったく好きではありませんでした 。 代替手段が必要でしたが、見つかりました-tagbar 。 プラグインは、現在のファイル内のタグのリストを表示し、それらをグループ化し、必要な順序で並べ替えます。
ユーザー設定
ユーザー設定
// , , let g:tagbar_sort = 0 // / let g:tagbar_iconchars = ['+', '-'] // let g:tagbar_map_close = '<Cm>' // let g:tagbar_type_php = { \'ctagstype': 'php', \'kinds': [ \'i:interfaces', \'c:classes', \'d:constants', \'f:functions' \] \}
依存関係
ctags
tagbar-css
このプラグインは、タグバーにcss、less、およびscssのサポートを追加します。 プラグイン自体をインストールすることに加えて、次の行を〜/ .ctagsに記述します
--langdef=css --langmap=css:.css.less.scss --regex-css=/^[ \t]*@([A-Za-z0-9_-]+)/@\1/v,var,variables/ --regex-css=/^[ \t]*\.([A-Za-z0-9_-]+)/.\1/c,class,classes/ --regex-css=/^[ \t]*#([A-Za-z0-9_-]+)/#\1/i,id,ids/ --regex-css=/^[ \t]*(([A-Za-z0-9_-]+[ \t\n,]+)+)\{/\1/t,tag,tags/ --regex-css=/^[ \t]*@media\s+([A-Za-z0-9_-]+)/\1/m,media,medias/
依存関係
tagbar
イージーモーション
私の意見では最高のプラグインの一つ 。 ほんの数文字を入力するだけで、コードを瞬時にナビゲートできます。
ユーザー設定
ユーザー設定
// let g:EasyMotion_smartcase = 1 // ( ) let g:EasyMotion_do_shade = 0 // hi link EasyMotionTarget Search
ご注意
easymotion , , , . Vim , , , .
セッション
このプラグインは、標準コマンドmksessionのラッパーを提供することにより、セッションの操作をより便利にします。
チーム
チーム
// . <Cz>, "!" , , "OpenSession! name" :OpenSession name // :SaveSession name
ユーザー設定
// . , vim let g:session_autoload = 'yes' // let g:session_autosave = 'yes' // 5 let g:session_autosave_periodic = 5 // let g:session_autosave_silent = 1 // let g:session_default_to_last = 1
依存関係
misc
その他
セッション作業に必要なプラグイン 。
エメット
区切る
プラグインは、角かっこまたは引用符の間でインデントします。
ユーザー設定
ユーザー設定
// enter let delimitMate_expand_cr = 1 // . " |" " | " let delimitMate_expand_space = 1 // html, >:<, au FileType vim,html let b:delimitMate_matchpairs = "(:),[:],{:},<:>,>:<"
シンタスティック
構文をチェックするためのプラグイン 。 次の設定を行うことをお勧めするreadmeでは、議論しないでください。
ユーザー設定
ユーザー設定
let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0
NERDCommenter
コードにコメントするためのプラグインから、次の動作を実現したいと考えました:コードのセクションをコメントアウトするには、<C-?>を使用します。 私が覚えている限りでは、インストールしたすべてのプラグイン(約4)のうち、どれも正確にこのタスクを実行しませんでした。 コードのコメントを解除するには、標準の組み合わせ-\ <Leader \> cu、ここで\ <Leader \>-"、"を使用する必要があります。 これは標準キーではなく、デフォルトは「\」です。 それ以外の場合、崇高と同じ動作。
ユーザー設定
ユーザー設定
// () let g:NERDSpaceDelims = 1
航空会社
プラグインは、ニーズに合わせて簡単にカスタマイズできる便利なステータスバーを表示します。 プラグインにタブの外観を制御させることもできます。 正しく動作させるには、パッチを適用したフォントが必要です 。これはこちらから入手できます 。
ユーザー設定
ユーザー設定
// solarized , let g:airline_theme='solarized' // let g:airline_powerline_fonts = 1 // let g:airline#extensions#tabline#enabled = 1 // tabline let g:airline#extensions#tabline#tab_min_count = 0 // , sublime: - , , let g:airline#extensions#tabline#formatter = 'unique_tail' // let g:airline#extensions#tabline#show_buffers = 0 // + :help filename-modifiers let g:airline#extensions#tabline#fnamemod = ':t' // . , , , trailing-spaces : ( phpDoc). . , . let g:airline_section_warning = '' let g:airline_section_error = '' // "X" (!?) let g:airline#extensions#tabline#show_close_button = 0 // let g:airline#extensions#tabline#left_alt_sep = '' // tagbar let g:airline#extensions#tagbar#enabled = 0 // let g:airline#extensions#tabline#show_tab_nr = 1 // let g:airline#extensions#tabline#tab_nr_type = 1
航空会社のテーマ
完成
YCMは、ファジー検索を使用した高速なコード補完を提供します。 すべての中で最も「重い」プラグインであり、インストールするのが最も不快です。 重量は275.9 mbで、エディターの起動が大幅に遅くなります。 比較のために、他のすべてのプラグインは合わせて15.1 MBを占有します。 プラグインが機能するためには、pythonサポートでコンパイルされたvimが必要です。 確認するには、vim --version | 端末でgrep "+ python"を実行します。 ソースからコンパイルしたくないのですが、幸いなことに私のリポジトリには、スクリプト言語をサポートするパッケージ「vim-nox」があります。
ユーザー設定
ユーザー設定
// ycm , , -, 3 - . let g:ycm_server_python_interpreter='python' // , , ")" let g:ycm_autoclose_preview_window_after_completion = 1 // ultisnips tab let g:ycm_key_list_select_completion = ['<Down>']
設置
, "install.py" , help.
複数のカーソル
名前はそれ自体を物語っています- プラグインを使用すると、同時に複数のカーソルを操作できます。
チーム
チーム
// :MultipleCursorsFind pattern
便利な組み合わせ
<Cn> - <Cp> - <Cx> - // , , : c - I - A -
ctrlsf
長い間、私はプロジェクト全体で行の置換を実装する方法の考えに怖がっていました。 そして無駄に-vimには、必要な機能を提供する素晴らしいプラグインが(そしてほとんどすぐに)見つかりました。 次のコマンドを入力するだけです:CtrlSF pattern [filemask]と、すべてのエントリを含むウィンドウが開きます。 通常のファイルとして編集し、保存します(:w)。 その後、プラグインは確認を求め、変更されるファイルの数を示します。 \ <Esc \>を押すと、データがコミットされることに注意してください。 ただし、変更をいつでも元に戻して(u)、バッファーを再度保存できます。 複数のカーソル、特にコマンド:MultipleCursorsFindに適しています。 CtrlSFはack / agを抽象化したものなので、これらのプラグインの1つをインストールする必要があります。 agをインストールするには、以下をお読みください。
チーム
チーム
便利な組み合わせ:CtrlSF foo *.php
ユーザー設定<Cj> <-k> -
// let g:ctrlsf_position = 'right'
依存関係
ack ag
ag
php-namespace
サラウンド
プラグインを使用すると、テキストを囲む引用符、角かっこ、またはxmlタグを追加、置換、または削除できます。 ys、cs、ds-フレーミング文字の挿入、置換、削除にそれぞれ使用されます。
便利な組み合わせ
便利な組み合わせ
ds' - dst - cs'" - ysiw" - ysiw<a> - <a>
表
プラグインは、テキストを特定のパターン(たとえば、「=」または「|」)に揃えます。 私は美容コードのファンではありませんが、最近、英語で時々チートシートを作成したとき、プラグインは非常に便利でした。
チーム
チーム
// "|" :Tabularize /|
ctags
CtrlP、TagBar、php-namespaceなどのプラグインを使用するには、プログラムのソースコードを分析するための強力なユーティリティであるctagsが必要です。 Ctagsは、クラス、関数、変数などの名前とその位置を含むタグファイルを作成します。 Ctags 5.9はそのままで43言語をサポートしていますが、正規表現で拡張できます(tagbar-cssを参照)。
便利なキー
便利なキー
// --list-languages // --list-kinds=lang
設置
ご注意. , ubuntu - exuberant-ctags
- "tags.vendor" "tags"
イージータグ
タグファイルは多くの情報を提供しますが、手作業で作成するのは楽しい仕事ではありません。 Easytagsを使用すると、ルーチンを省くことができます。一度登録するだけで、UpdateTags -Rが新しいプロジェクトに追加され、プラグインはその後のすべての変更にインデックスを付けます。
ユーザー設定
ユーザー設定
// , ~/.vimtags let g:easytags_file = './tags' // let g:easytags_auto_highlight = 0 // (:help autocmd-events), easytags let g:easytags_events = ['BufWritePost'] // vim - let g:easytags_async = 1
依存関係
ctags
各プラグインを詳細に説明するのは非常に難しく、おそらく理由はありません。 すべてのチームをリストするのは意味がありません。使用したチームについてだけ説明しましたが、それなしでは記事は非常に膨大でした。 次に、エディター自体の機能を見てみましょう。
設定
詳細については、 ヘルプ設定を参照してください。
// , , tabstop shiftwidth set tabstop=4 set shiftwidth=4 set softtabstop=4 // set autoread // set autoindent set smartindent // . , 10j, set rnu // set laststatus=2 // , vim . // , vim'e "df", "d" , // "f", "d". set timeoutlen=500 // . , , // , . , , <Esc> // , , . set ttimeoutlen=0 // . <C-6> , vim "Insert" "Insert (lang)", // . , . set keymap=russian-jcukenwin set iminsert=0 set imsearch=0 // set encoding=utf-8 set termencoding=utf-8 // swap-. , set noswapfile // , , vim swap-, // CursorHold. , tagbar, . // swap- , ( - 4000). set updatetime=500 // :vsplit set splitright // :split set splitbelow // vi set nocompatible // - set tags=./tags; // . , ctrlsf, CtrlSF. // , \C set ignorecase // , , vim , , hidden set hidden // set hlsearch // set incsearch // , set cursorline // c set pumheight=10 // . set fillchars+=vert:\ // mapleader ",", - "\" let mapleader="," // Vundle filetype off filetype plugin on filetype plugin indent on // syntax enable // set background=dark // colorscheme solas
キーボードショートカット
組み合わせを作成するための構文は、ご想像のとおり、次のとおりです。
nore(非再帰的)-組み合わせを「開かない」が、デフォルト値を使用する
、youcompletemeをインストールし、タブ切り替え<Alt-n>を設定することでした 。これには5時間かかりました(5、Karl!)。 書きませんでした:<Alt-1>、<A-1>、<M-1>、^ [1-エスケープシーケンス(<Cv>、Alt + 1)。 :help :map-alt-keys, ~/.inputrc set convert-meta on. , xterm . Gnome-terminal , SO. , , , , , . , :
modeは、組み合わせが機能するモードまたは環境です[[mode]nore]map keys command
nore(非再帰的)-組み合わせを「開かない」が、デフォルト値を使用する
:map j gg // j = gg :map Q j // Q = gg :noremap W j // W = j <CR> - enter <C> - Ctrl
組み合わせの割り当ての詳細をご覧ください。
// "" df. "d" , "j" // , "jj" , , imap df <Esc>l // , , return nnoremap 2o o<CR> // , , nnoremap 2O O<Esc>O // nnoremap tm :tabm +1<CR> // nnoremap tM :tabm -1<CR> // nnoremap <Ch> :noh<CR> // map <C-?> <plug>NERDCommenterComment // , map <C-_> <plug>NERDCommenterToggle // phpDoc , , nnoremap <Cd> :call PhpDoc()<CR> // nnoremap <Cm> :TagbarToggle<CR> // nnoremap <Cp> :NERDTreeToggle<CR> // syntax group , . nnoremap <Cg> :call SyntaxAttr()<CR> // <Cj> <Ck> , <Cn> <Cp> inoremap <Cj> <Cn> inoremap <Ck> <Cp> cnoremap <Cj> <Cn> cnoremap <Ck> <Cp> // use autocmd FileType php noremap <Cu> :call PhpInsertUse()<CR> // ~/.vimrc nnoremap <F4> :tabe ~/.vimrc<CR>:tabm 0<CR> // ~/.vimrc nnoremap <F5> :w<CR>:so $MYVIMRC<CR>
キーの標準的な動作を変更するというアイデアは好きではありませんが、次の組み合わせが自分にとって非常に便利であることがわかりました。 文字列(fおよびF)で検索文字を使用することはめったになく、JやKなどのコマンドを使用したことはありません。
// nnoremap KH // nnoremap JL // nnoremap H gT // nnoremap L gt // nnoremap F :CtrlP<CR> nnoremap ff :CtrlP<CR> // find tag - nnoremap ft :CtrlPBufTag<CR> // find buffer - nnoremap fb :CtrlPBuffer<CR> // find symbol - nmap fs <Plug>(easymotion-s) // find line - nmap fl <Plug>(easymotion-sl) // find current - nnoremap fc :NERDTreeFind<CR> // find pattern - nnoremap fp :CtrlSF
私にとって最も困難な作業は for c in range(1, 9) exec "set <A-".c.">=\e".c exec "map \e".c." <A-".c.">" let n = c - '0' exec "map <M-". n ."> ". n ."gt" endfor
- , , - ( , , ), .
いくつかの標準的な組み合わせ
// . vim, "clipboard". , vim --version | grep "+clipboard" <Cr> * // zz // ( -) <C-]> // <C-]> <Ct> // (d) (y) . <Cr> "
略語
Vim , .vimrc «abbr help tab help» «help», , vim «tab help». «», <Cv>.
おわりに:vimは、他に類を見ない自由を与えます。 Emacsは競争できるかもしれませんが、まだ動作していません。崇高からvimへの移行は、4本の指(覚えている限り)から9本の指への再トレーニングを思い出させます。誤解しないでください、崇高は素晴らしいエディターです。つまり、最初は通常の速度を失います。時間が経過すると、生産性は以前のレベルに戻り、この瞬間から速度が上がります。私が崇高に使用した主な機能はすべて、何らかの形でvimに移行しました。 vimlを使用して、組み合わせを解決し、エディターの標準機能を拡張します。メインOSをWindowsからUbuntuに変更することを思い出させる別の機能があります。 Windowsでは、おそらく10回、おそらく端末を使用しました。言えない私にとって何かが足りなかった、すべてが私と一緒にうまくいった。しかし、Linuxに切り替えると、コンソールコマンドを自由に使用できるようになります。意識的ではなく(これは重要です)、特定の問題を解決するためのツール(bash)を入手します。 vimでは、特定の問題の解決策を探すために何かを絶えずグーグルする必要があります。非常に頻繁に、key:valueのスタイルで、崇高なエディタまたは同様のエディタの通常のセットアップとは異なるソリューションがあります。文字通り、エディターをプログラムします。ほとんどすぐに、変数を初期化する方法、少し後で-この設定を特定の種類のファイルに適用する方法、さらに後で-イベントをリッスンする方法またはループを作成する方法がわかります。少しずつ情報を取得すると、vimlについてのアイデアを得ることができ、すぐに最初のプラグインを作成できます。もちろん、これはすべて、その言語のドキュメントを開くだけで学習できますが、私は言わなければならない、私はPythonまたはAPIの崇高さを学びたいという欲求を持っていなかった。個人的には、vimは私にとって嬉しい驚きをたくさん救ってくれたと確信しており、私の.vimrcは、このエディターで作業している間、常に変化するようです。
いくつかの質問
1. , airline , , , . - , , , . , , ?
2. readme nerdtree , / g:NERDTreeDirArrowExpandable g:NERDTreeDirArrowCollapsible. , "+" "-", nerdtree . - ?
3. youcompleteme omnicompletion? , <Cx><Co>.
4. php- "<?php", "<", vim ">". php-? - :
2. readme nerdtree , / g:NERDTreeDirArrowExpandable g:NERDTreeDirArrowCollapsible. , "+" "-", nerdtree . - ?
3. youcompleteme omnicompletion? , <Cx><Co>.
4. php- "<?php", "<", vim ">". php-? - :
au FileType php set matchparen-=<
.vimrc全体
" set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim' " common Plugin 'scrooloose/nerdtree' Plugin 'valloric/youcompleteme' Plugin 'xolox/vim-easytags' Plugin 'majutsushi/tagbar' Plugin 'tpope/vim-fugitive' Plugin 'easymotion/vim-easymotion' Plugin 'ctrlpvim/ctrlp.vim' Plugin 'terryma/vim-multiple-cursors' Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'scrooloose/nerdcommenter' Plugin 'matze/vim-move' Plugin 'raimondi/delimitmate' Plugin 'mattn/emmet-vim' Plugin 'scrooloose/syntastic' Plugin 'tpope/vim-surround' Plugin 'sirver/ultisnips' Plugin 'honza/vim-snippets' Plugin 'xolox/vim-session' Plugin 'xolox/vim-misc' Plugin 'SyntaxAttr.vim' Plugin 'dyng/ctrlsf.vim' Plugin 'rking/ag.vim' Plugin 'godlygeek/tabular' " php Plugin 'stanangeloff/php.vim' Plugin 'sumpygump/php-documentor-vim' Plugin 'arnaud-lb/vim-php-namespace' " javascript Plugin 'pangloss/vim-javascript' " html Plugin 'othree/html5.vim' " twig Plugin 'evidens/vim-twig' " css Plugin 'mtscout6/vim-tagbar-css' " colors Plugin 'damage220/solas.vim' Plugin 'nanotech/jellybeans.vim' Plugin 'mhartington/oceanic-next' call vundle#end() " settings set tabstop=4 set softtabstop=4 set shiftwidth=4 set autoread set autoindent set smartindent set rnu set laststatus=2 set timeoutlen=500 set ttimeoutlen=0 set keymap=russian-jcukenwin set iminsert=0 set imsearch=0 set encoding=utf-8 set termencoding=utf-8 set updatetime=500 set noswapfile set splitright set splitbelow set nocompatible set tags=./tags; set ignorecase set hidden set hlsearch set incsearch set cursorline set pumheight=10 set fillchars+=vert:\ let mapleader="," filetype off filetype plugin on filetype plugin indent on " autocmd CompleteDone * pclose " color syntax enable set background=dark colorscheme solas " abbreviations abbr help tab help " mappings imap df <Esc>l nnoremap 2o o<CR> nnoremap 2O O<Esc>O nnoremap tm :tabm +1<CR> nnoremap tM :tabm -1<CR> nnoremap KH nnoremap JL nnoremap H gT nnoremap L gt nnoremap F :CtrlP<CR> nnoremap ff :CtrlP<CR> nnoremap ft :CtrlPBufTag<CR> nnoremap fb :CtrlPBuffer<CR> nmap fs <Plug>(easymotion-s) nmap fl <Plug>(easymotion-sl) nnoremap fc :NERDTreeFind<CR> nnoremap fp :CtrlSF nnoremap <Ch> :noh<CR> map <C-?> <plug>NERDCommenterComment map <C-_> <plug>NERDCommenterToggle nnoremap <Cd> :call PhpDoc()<CR> nnoremap <Cm> :TagbarToggle<CR> nnoremap <Cp> :NERDTreeToggle<CR> nnoremap <Cg> :call SyntaxAttr()<CR> inoremap <Cj> <Cn> inoremap <Ck> <Cp> cnoremap <Cj> <Cn> cnoremap <Ck> <Cp> autocmd FileType php noremap <Cu> :call PhpInsertUse()<CR> nnoremap <F4> :tabe ~/.vimrc<CR>:tabm 0<CR> nnoremap <F5> :w<CR>:so $MYVIMRC<CR> " map <alt+n> to navigate through tabs for c in range(1, 9) exec "set <A-".c.">=\e".c exec "map \e".c." <A-".c.">" let n = c - '0' exec "map <M-". n ."> ". n ."gt" endfor " nerdtree let NERDTreeAutoDeleteBuffer = 1 " move let g:move_key_modifier = 'C' " youcompleteme let g:ycm_server_python_interpreter='python' let g:ycm_autoclose_preview_window_after_completion = 1 let g:ycm_key_list_select_completion = ['<Down>'] " emmet let g:user_emmet_expandabbr_key = '<Ce>' " airline let g:airline_theme='solarized' let g:airline_powerline_fonts = 1 let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#tab_min_count = 0 let g:airline#extensions#tabline#formatter = 'unique_tail' let g:airline#extensions#tabline#show_buffers = 0 let g:airline#extensions#tabline#fnamemod = ':t' let g:airline_section_warning = '' let g:airline_section_error = '' let g:airline#extensions#tabline#show_close_button = 0 let g:airline#extensions#tabline#left_alt_sep = '' let g:airline#extensions#tagbar#enabled = 0 let g:airline#extensions#tabline#show_tab_nr = 1 let g:airline#extensions#tabline#tab_nr_type = 1 " easymotion let g:EasyMotion_smartcase = 1 let g:EasyMotion_do_shade = 0 hi link EasyMotionTarget Search hi EasyMotionTarget2First ctermfg=202 ctermbg=None cterm=None hi EasyMotionTarget2Second ctermfg=202 ctermbg=None cterm=None " session let g:session_autoload = 'yes' let g:session_autosave = 'yes' let g:session_autosave_periodic = 5 let g:session_autosave_silent = 1 let g:session_default_to_last = 1 " NERDCommenter let g:NERDSpaceDelims = 1 " html au BufNewFile,BufRead *.tpl set filetype=html syntax=php " syntastic let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 " tagbar let g:tagbar_sort = 0 let g:tagbar_width = 35 let g:tagbar_iconchars = ['+', '-'] let g:tagbar_map_close = '<Cm>' let g:tagbar_type_php = { \'ctagstype': 'php', \'kinds': [ \'i:interfaces', \'c:classes', \'d:constants', \'f:functions' \] \} let g:tagbar_type_javascript = { \'ctagstype':'JavaScript', \'kinds' : [ \'f:functions', \'c:classes', \'m:methods', \'p:properties' \] \} " delimitmate let delimitMate_expand_cr = 1 let delimitMate_expand_space = 1 au FileType vim,html let b:delimitMate_matchpairs = "(:),[:],{:},<:>,>:<" " NERDTree " let g:NERDTreeDirArrowExpandable = '+' " let g:NERDTreeDirArrowCollapsible = '-' " ctrlp let g:ctrlp_by_filename = 1 let g:ctrlp_working_path_mode = 'wr' let g:ctrlp_map = '' let g:ctrlp_buftag_types = { \'php': '--php-kinds=icdf' \} " ctrlsf let g:ctrlsf_position = 'right' " easytags let g:easytags_file = './tags' let g:easytags_auto_highlight = 0 let g:easytags_events = ['BufWritePost'] let g:easytags_async = 1
あなたが熱心なvim'erであるなら、あなたはchromeのために次の拡張機能を好むかもしれません:
わさび
vim'a . , \<Insert\>, <C-enter> ().
PS:ネイティブのコメントシンボルviml(二重引用符)の代わりに、「//」を使用することにしました。vimlはハブ上になく、同様のコードコメントを持つ言語があるかどうかわからないからです。
PS2:一部の組み合わせは、「\」記号によってエスケープされるため、パーサーはそれらをhtmlタグと見なしません。preタグはブロックで、その方が良いと判断されました。
UPD:SOLASのGUIサポートが追加されました。