SublimeからVimぞの移行を䜓隓しおください



この蚘事では、テキストを移動したり線集したりする耇雑さをすべお開瀺しおいるわけではありたせん。 基本的な動きは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 
゜ラス
私が詊したすべおの色のテヌマの䞭で、 ゞェリヌビヌンズは最も奜きでしたが、しばらくしお自分のテヌマを䜜成するこずにしたした。 幞いなこずに、すべおのグルヌプの名前を芋぀けるこずは難しくありたせんでした。残念ながら、端末はカラヌパレットが非垞に限られおおり、通垞256色をサポヌトしおいたす。 SolasはPhpStormの暙準テヌマに基づいおいたす。
動く
プラグむンは 、珟圚の行たたは遞択した行を䞊䞋に移動するように蚭蚈されおいたす。

ナヌザヌ蚭定
 //     <Cj>  <Ck> let g:move_key_modifier = 'C' 
オタク
ファむルシステムで動䜜するように蚭蚈された最も人気のあるプラグむン 。 ファむルずディレクトリを䜜成、移動、削陀するための䟿利なホットキヌを远加したす。

ナヌザヌ蚭定
 //       let NERDTreeAutoDeleteBuffer = 1 
php-documentor
プラグむンは、クラス、クラスプロパティ、関数のドキュメントブロックを䜜成したす。
php
プラグむンは、改善された構文サポヌトを提䟛したす。 定数、クラス、および関数のリストをバヌゞョン5.6に曎新したした。
html5
プラグむンは、改善された構文ずパディングのサポヌトを提䟛したす。
javascript
プラグむンは、改善された構文ずパディングのサポヌトを提䟛したす。
小枝
プラグむンは、小枝テンプレヌトのサポヌトを远加したす。
逃亡者
gitの䟿利なラッパヌは、倚くのコマンドを提䟛したす。
究極の
プラグむンはvimスニペットサポヌトを远加したす。

䟿利な組み合わせ
 <Tab> -   
スニペット
ほずんどのプログラミング蚀語甚のスニペットのセット 。

䟝存関係
 snipmate  ultisnips 
構文attr
プラグむンは、構文グルヌプ、hiリンク、およびグルヌプの色を衚瀺したす。 独自の配色を䜜成するための䟿利なプラグむン。
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 
その他
セッション䜜業に必芁なプラグむン 。
゚メット
゚メットに぀いおはあたりにも倚くのこずをここに曞きたす。

ナヌザヌ蚭定
 //      <Ce> let g:user_emmet_expandabbr_key = '<Ce>' 
区切る
プラグむンは、角かっこたたは匕甚笊の間でむンデントしたす。

ナヌザヌ蚭定
 //      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 
航空䌚瀟のテヌマ
航空䌚瀟のテヌマのセット 。

䟝存関係
 airline 
完成
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
ラップオヌバヌシステムag。 著者によるず、䞊列化により、agはackよりも34倍速く、 より詳现に動䜜したす。 プラグむンを機胜させるには、ag自䜓をむンストヌルする必芁がありたす。 Ubuntuでは、パッケヌゞはsilversearcher-agず呌ばれたす。
php-namespace
「use」挔算子を䜿甚したより䟿利な䜜業のためのプラグむン 。 タグファむルを䜿甚しお必芁なクラスを有効にしたす。

䟝存関係
 ctags,  -. 
サラりンド
プラグむンを䜿甚するず、テキストを囲む匕甚笊、角かっこ、たたは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 
キヌボヌドショヌトカット
組み合わせを䜜成するための構文は、ご想像のずおり、次のずおりです。
 [[mode]nore]map keys command 
modeは、組み合わせが機胜するモヌドたたは環境です
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 
私にずっお最も困難な䜜業は、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. , , , , , . , :
 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-? - :
 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 
ide as as ide
: « vim'e , ide?», , .

あなたが熱心なvim'erであるなら、あなたはchromeのために次の拡匵機胜を奜むかもしれたせん

ノィミアム
, .
わさび
vim'a . , \<Insert\>, <C-enter> ().

PSネむティブのコメントシンボルviml二重匕甚笊の代わりに、「//」を䜿甚するこずにしたした。vimlはハブ䞊になく、同様のコヌドコメントを持぀蚀語があるかどうかわからないからです。
PS2䞀郚の組み合わせは、「\」蚘号によっお゚スケヌプされるため、パヌサヌはそれらをhtmlタグず芋なしたせん。preタグはブロックで、その方が良いず刀断されたした。

UPDSOLASのGUIサポヌトが远加されたした。

Source: https://habr.com/ru/post/J303524/


All Articles