vimをどうやって私達の神器にしますか?

10383 ワード

Vimは上古神器で、接触したばかりの学生は扱いにくいかもしれません。この文章は主にみんなを率いて素早く入門し、現在流行しているvim-pluginを共有し続けます。興味がある学生はto-vim-tmux-zsh倉庫を参考にしてTmuxとZshを研究し続けます。
Vimの強み
  • Vimは完全にプラットフォームにまたがるエディタです。
  • Vimは、カスタマイズ可能で拡張可能なエディタです。
  • Vimは良好な生態環境を持っています。
  • 初心者ガイド
    
    $ vimtutor // vim   
    Vimモード
  • 通常モード:デフォルトモードは、テキストの削除、置換、復元、貼り付けなどの動作に使用できます。
  • 挿入モード:入力iは挿入モードに入り、通常のエディタの編集モードに相当する。
  • テレビモード:vを入力してテレビモードに入り、テキストを選択し、コピーなどの操作を行う。
  • コマンドモード:入力:コマンドモードに入り、内部および外部コマンドを実行できます。
  • カーソルを移動
  • hjkl:上下左右;
  • w:前へ2つの単語を移動します。
  • e:3番目の単語の末尾まで前へ移動します。
  • :行頭に移動する。
  • \$現在の行の最後。
  • H:カーソルが上に移動します。
  • M:カーソルが中央に移動します。
  • L:カーソルが最後まで移動します。
  • gf:パスから指定ファイルにジャンプします。
  • gg:第一行;
  • G:最後の行;
  • 行番号+G:指定行;
  • ():前の文と次の文に移動します。
  • {}:前の段と次の段に移動します。
  • ctrl+o:前の位置にジャンプします。
  • ctrl+i:ジャンプ前の位置に戻ります。
  • ctrl+d:下へ半ページ移動します。
  • ctrl+u:上に半ページ移動します。
  • ctrl+f:下に全ページ移動します。
  • ctrl+b:全ページを上に移動する。
  • 終了
  • esc:普通モードに入る。
  • :q終了を保存しない;
  • :wq:保存して終了します。
  • 削除
  • x:現在の文字を削除します。
  • dw:現在の単語の末尾に削除する。
  • de:現在の単語の末尾に削除し、現在の文字を含みます。
  • d\$は現在の行末に削除されます。
  • dd:行全体を削除する。
  • dd:2行を削除する。
  • 変更
  • i:テキストを挿入する。
  • a:現在の文字の後に挿入モードに入る。
  • A:現在の行の末尾に追加します。
  • r:現在の文字を置換します。
  • o:新しい行を開いて挿入モードに入ります。
  • s:文字を削除して挿入モードに入ります。
  • cc:行全体を修正する。
  • 取り消す
  • u:キャンセル
  • ctrl+r:キャンセル
  • コピーして切り取りを貼り付けます
  • y:コピー
  • p:貼り付け
  • yy:現在行をコピーする
  • dd:現在の行を切り取る
  • ファイル
  • :e強制更新
  • ctrl+gは現在の行とファイル情報
  • を表示します。
    検索
  • /:順方向検索(n:継続検索、N:逆方向検索)
  • 逆方向検索
  • %:ペアの{、(
  • )を検索します。
    置換
  • :s/old/new:行の最初のマッチ列
  • を置換します。
  • :s/old/new/g:全行のマッチする列
  • を置換します。
  • :%s/old/new/g:ファイル全体のマッチング列
  • を置換します。
    基本設定
    Vimのプロファイルを作成します。vimrc
    
    touch ~/.vimrc
    
    ファイル・コード
    
    set enc=utf-8
    viと互換性がない
    
    set noswapfile
    
    ファイルのバックアップと削除
    
    set nobackup
    set noswapfile
    
    if has('persistent_undo')
     set undofile
     set undodir=~/.vim/undodir
     if !isdirectory(&undodir)
      call mkdir(&undodir, 'p', 0700)
     endif
    endif
    
    中国語
    
    set fileencodings=ucs-bom,utf-8,gb18030,latin1
    
    マウスサポート
    
    if has('mouse')
     if has('gui_running') || (&term =~ 'xterm' && !has('mac'))
      set mouse=a
     else
      set mouse=nvi
     endif
    endif
    
    set clipboard=unnamed
    
    
    テキストメニューの設定
    
    if has('gui_running')
     let do_syntax_sel_menu = 1
     let do_no_lazyload_menus = 1
    endif
    
    if !has('gui_running')
     if has('wildmenu')
      set wildmenu
      set cpoptions-=<
      set wildcharm=<C-Z>
      nnoremap <F10>   :emenu <C-Z>
      inoremap <F10> <C-O>:emenu <C-Z>
     endif
    endif
    
    
    検索
    
    set ignorecase
    set smartcase
    set hlsearch
    set incsearch
    
    nnoremap <silent> <F2>   :nohlsearch<CR>
    inoremap <silent> <F2> <C-O>:nohlsearch<CR>
    
    
    行番号を表示
    
    set number
    
    インデントを設定
    
    set shiftwidth=2
    set tabstop=2
    
    現在の行を強調表示する
    
    set cursorline
    
    vimを起動するときは、コードの折り畳みをオフにします。
    
    set nofoldenable
    
    テーマ
    
    syntax enable
    colorscheme one
    set background=dark
    
    背景が透明です
    
    hi Normal ctermfg=252 ctermbg=none
    
    プラグインの設定
    vim-plugを使ってプラグインを管理します。
    ツリーディレクトリ
    
    Plug 'scrooloose/nerdtree'              " https://github.com/preservim/nerdtree
    Plug 'jistr/vim-nerdtree-tabs'            " https://github.com/jistr/vim-nerdtree-tabs
    Plug 'Xuyuanp/nerdtree-git-plugin'          " https://github.com/Xuyuanp/nerdtree-git-plugin
    Plug 'ryanoasis/vim-devicons'             " https://github.com/ryanoasis/vim-devicons
    Plug 'tiagofumo/vim-nerdtree-syntax-highlight'    " https://github.com/tiagofumo/vim-nerdtree-syntax-highlight
    Plug 'tpope/vim-eunuch'                " https://github.com/tpope/vim-eunuch
    
    map <C-n> :NERDTreeToggle<CR>
    
    let NERDTreeMinimalUI = 1
    let NERDTreeShowHidden = 1
    
    let g:nerdtree_tabs_open_on_console_startup = 1
    
    nnoremap <F5> :UndotreeToggle<cr>
    
    " i              
    " s              
    " t        
    " go     
    " r          
    " R        
    " I       
    " m         
    " C               
    " u           
    " gT     tab
    " gt     tab
    " <C-W>     (h、j、k、l、<Left>  )         
    " <C-W> + w         
    " <C-W> + s   :split     ,           
    " <C-W> + v   :vsplit     ,           
    " <C-W> + o   :only        ,        
    
    
    ラベル
    
    Plug 'majutsushi/tagbar'             " https://github.com/majutsushi/tagbar
    
    nnoremap <F9>   :TagbarToggle<CR>
    inoremap <F9> <C-O>:TagbarToggle<CR>
    
    
    自動補完
    
    Plug 'Valloric/YouCompleteMe'             " https://github.com/ycm-core/YouCompleteMe
    Plug 'Raimondi/delimitMate'              " https://github.com/Raimondi/delimitMate
    
    nnoremap <Leader>fi :YcmCompleter FixIt<CR>
    nnoremap <Leader>gd :YcmCompleter GoToDefinition<CR>
    
    
    文法ハイライト
    
    Plug 'sheerun/vim-polyglot'              " https://github.com/sheerun/vim-polyglot
    Plug 'w0rp/ale'                    " https://github.com/w0rp/ale
    
    let g:ale_fix_on_save = 1
    let g:ale_sign_column_always = 1
    let g:ale_sign_error = '●'
    let g:ale_sign_warning = '▶'
    
    nmap <silent> <C-k> <Plug>(ale_previous_wrap)
    nmap <silent> <C-j> <Plug>(ale_next_wrap)
    
    
    グローバル検索、ファイルを早く開く
    
    Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }  " https://github.com/junegunn/fzf
    Plug 'junegunn/fzf.vim'                " https://github.com/junegunn/fzf.vim
    Plug 'ctrlpvim/ctrlp.vim'               " https://github.com/ctrlpvim/ctrlp.vim
    
    let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files -co --exclude-standard']
    let g:ctrlp_regexp = 1
    
    " <c-r>:       
    " <c-t>:    tab    
    " :Rg
    
    
    ステータスバー
    
    Plug 'vim-airline/vim-airline'            " https://github.com/vim-airline/vim-airline
    Plug 'vim-airline/vim-airline-themes'         " https://github.com/vim-airline/vim-airline-themes
    
    let g:airline_theme='onedark'
    let g:airline_powerline_fonts = 1
    
    let g:airline#extensions#tabline#enabled = 1
    let g:airline#extensions#tabline#formatter = 'unique_tail'
    let g:airline#extensions#ale#enabled = 1
    let g:airline#extensions#tabline#buffer_nr_show = 1
    let g:airline#extensions#nerdtree_statusline = 0
    let g:airline_section_c = ''
    
    
    コメント
    
    Plug 'scrooloose/nerdcommenter'            " https://github.com/preservim/nerdcommenter
    
    let g:NERDSpaceDelims = 1
    let g:NERDDefaultAlign = 'left'
    
    " <leader>c<space>   /    
    " <leader>ca    //   /* */
    " <leader>cs /*     */
    " <leader>cm         
    " <leader>cA        
    
    
    git
    
    Plug 'airblade/vim-gitgutter'             " https://github.com/airblade/vim-gitgutter
    Plug 'tpope/vim-fugitive'               " https://github.com/tpope/vim-fugitive
    Plug 'tpope/vim-rhubarb'               " https://github.com/tpope/vim-rhubarb
    
    set updatetime=100
    let g:gitgutter_max_signs = -1
    
    " jump to next hunk: ]c
    " jump to previous hunk: [c
    " stage the hunk: <Leader>hs
    " undo the hunk: <Leader>hu
    " preview the hunk: <Leader>hp
    
    " :G
    " :Gvdiffsplit
    " :GBrowse
    "
    " s:       
    " u:           
    " =:    diff   
    " cc:            
    
    
    Markdown
    
    Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install' }   " https://github.com/iamcco/markdown-preview.nvim
    
    " :MarkdownPreview
    " :MarkdownPreviewStop
    
    
    Emmet
    
    Plug 'mattn/emmet-vim'                " https://github.com/mattn/emmet-vim
    
    let g:user_emmet_leader_key='<C-Z>'
    
    " <C-Z>,
    
    
    Pretier
    
    Plug 'prettier/vim-prettier', { 'do': 'npm install' }   " https://github.com/prettier/vim-prettier
    
    autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.yaml,*.html PrettierAsync
    
    " :PrettierAsync
    
    Wakatime
    
    Plug 'wakatime/vim-wakatime'               " https://github.com/wakatime/vim-wakatime "
    
    ホワイトパス
    
    Plug 'ntpeters/vim-better-whitespace'           " https://github.com/ntpeters/vim-better-whitespace
    
    let g:better_whitespace_enabled=1
    
    " :StripWhitespace
    
    
    
    締め括りをつける
    最後に、to-vim-tmux-zsh倉庫を提出して参考にすることができます。名前の通り、vim以外にtmuxとzshの関連内容があります。
    ここで、vimを私達の神器(結び目)にする方法について紹介します。もっと多くの関連vimは入門内容を使っています。私達の以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。