Memo/Linux/vim

https://dexlab.net:443/pukiwiki/index.php?Memo/Linux/vim
 

vim


複数行の行頭/行末に文字を挿入

  • 行頭に「#」を挿入
  1. 「Ctrl + V」でビジュアル矩形モード。挿入したい複数行を選択
  2. 「Shift + i」で挿入モード
  3. 行頭に挿入したい文字「#」を入力
  4. ESCでノーマルモード。挿入される
  • 行末に「,」を挿入
  1. 「Ctrl + V」でビジュアル矩形モード。挿入したい複数行を選択
  2. 「$」で行末まで選択
  3. 「A」で挿入モード
  4. 行末に挿入したい文字「,」を入力
  5. ESCでノーマルモード。挿入される

自動インデント無効でペースト

  1. コマンド入力
    • appendモード ":a!"
    • insertモード ":i!"
  2. ペースト
  3. ESC

文字コードと改行コード

" vim内部エンコードの表示
:set enc?

" 〃                 設定
:set encoding=utf-8

" ファイルエンコードの表示
:set fenc?

" 〃                  設定
:fileencoding=utf-8

" 改行コードの表示
:set ff?

" 〃          設定
:set fileformat=unix

Error detected while processing

  • vimプラグインを入れた状態でcrontabで編修しようとすると出る
    crontab -e
    Error detected while processing /home/user1/.vimrc:
    line    8:
    E492: Not an editor command: Bundle 'gmarik/vundle'
    line   18:
    E492: Not an editor command: Bundle 'L9'
    line   19:
    E492: Not an editor command: Bundle 'FuzzyFinder'
    line   23:
    E492: Not an editor command: Bundle 'https://github.com/uguu-org/vim-matrix-screensaver'
    Press ENTER or type command to continue
  • デフォルトのエディタをvimに変更する
    vim ~/.bash_profile
    ----
    export EDITOR=/usr/bin/vim
    ----
    source ~/.bash_profile

プラグイン

  • crontab等でエラーが出ないように、デフォルトのエディタをvimに変更する
    vim ~/.bash_profile
    ----
    export EDITOR=/usr/bin/vim
    ----
    source ~/.bash_profile
  • インストール(例:Matrixプラグイン)
    mkdir -p ~/.vim/{doc,plugin}
    
    wget -O ~/.vim/plugin/matrix.vim "http://www.vim.org/scripts/download_script.php?src_id=18650"
    
    vim
    :Matrix
    qで終了

matrix:マトリックス風スクリーンセーバー


FuzzyFinder:ディレクトリからファイル検索

  • FuzzyFinder
    • カレントディレクトリのファイルを検索して表示、選択、インクリメンタル検索。"**/"を付けるとサブディレクトリ中のファイルも表示してくれる。
    • インストール
      vim ~/.vimrc
      ----
      NeoBundle 'L9'
      NeoBundle 'FuzzyFinder'
      ----
      :NeoBundleInstall
    • 使い方
      :FufFile **/

NeoBundle:プラグイン管理

  • NeoBundle Vundleの改良版。プラグインの管理
    • Vim - NeoBundleの導入 - Qiita [キータ]
    • インストール
      mkdir -p ~/.vim/bundle
      git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
      
      # .vimrcの編集。以下を先頭に追加
      set nocompatible
      filetype off
      
      if has('vim_starting')
        set runtimepath+=~/.vim/bundle/neobundle.vim
        call neobundle#rc(expand('~/.vim/bundle'))
      endif
      
      " My Bundles here:
      "
      " original repos on github
      
      
      " vim-scripts repos
      NeoBundle 'L9'
      NeoBundle 'FuzzyFinder'
      
      " non github repos
      
      filetype plugin on
      " 自動インデントされるのが嫌なので無効
      "filetype plugin indent on
    • プラグインインストール。NeoBundle行を追加してから
      :NeoBundleInstall
    • プラグインアップデート
      :NeoBundleUpdate
    • プラグインアンインストール。NeoBundle行を削除してから
      :NeoBundleClean

Vundle:プラグイン管理

  • Vundle
    • pluginを.vimrcで管理し、:BundleInstall コマンドでインストールできる
    • pluginは ~/.vim/bundle/ にインストールされる
    • 記事
    • インストール
      git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
      
      # .vimrcの編集。以下を先頭に追加
      vim ~/.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
      ----
    • プラグインのインストールを実行。~/.vimrcを編集してから
      vim
      ----
      :BundleInstall
      ----
    • インストール済みプラグインのアップグレード
      vim
      ----
      :BundleInstall!
      ----
    • vim-scripts リポジトリからプラグイン検索
      vim
      ----
      :BundleSearch plugin_name
      # または
      :Bundles plugin_name
      ----
    • プラグインの削除
      # .vimrcの該当行を削除して保存し、:BundleCleanを実行
      vim ~/.vimrc
      ----
      Bundle 'plugin_name'
      
      :BundleClean
      Continue? [Y/n]: y
      ----
      
      # もしくは直接削除
      rm -rf ~/.vim/bundle/plugin_name

読み込み専用viewコマンド

  • view : 読み込み専用で開く。「vim -R ファイル名」と同じ

任意の場所に.vimrcを置く

vim -u [.vimrc] editfile

alias vi='vim -u $HOME/sample/.vimrc'

.vimrcのコメントアウト

  • 行頭に「"」を使う

カラースキーマ

  • デフォルトでは/matchで探した場合の文字の色がよく見えない
  • 設定
    mkdir -p ~/.vim/colors
    cp sample_color.vim ~/.vim/colors/
    vi ~/.vimrc
    ----
    syntax enable
    set background=dark
    colorscheme sample_color
    ----

.vimrcでモードラインの設定

シェルスクリプト毎にTAB4で開きたい等の設定ができる

  • モードラインを有効にする必要がある
    cat >> ~/.vimrc << 'EOS'
    " ファイルの上下端からn行までモードラインを探す(デフォルト5行)
    "set modelines=5
    " ファイルごとにエディタの設定を変更
    set modeline
    " バックアップを取らない
    set nobackup
    " 行番号を表示(コピペしにくいためオフ)
    "set number
    " TAB 4桁
    set tabstop=4
    " 80カラム(ウィンドウサイズによって変わった方が便利なのでオフ)
    "set columns=80
    " インクリメンタル検索
    set incsearch
    " 検索結果をハイライト表示
    set hlsearch
    " 小文字のみで検索:大文字小文字無視、大文字小文字で検索:区別して検索
    set smartcase
    " 対応する括弧やブレースを表示
    set showmatch
    " vim内部エンコード
    set encoding=utf-8
    " バッファの保存時に用いるエンコーディング
    set fileencoding=utf-8
    " バッファの改行コード
    set fileformat=unix
    " 改行コードの自動認識
    set fileformats=unix,dos,mac
    " 文字コードの自動認識
    set fileencodings=ucs-bom,utf-8,iso-2022-jp,sjis,cp932,euc-jp,cp20932
    " 構文ハイライト
    syntax enable
    " 背景色に合わせたカラー設定
    set background=dark
    " カラースキーマ
    colorscheme koehler
    " タブ、空白の可視化。改行(eol:)
    set list
    set listchars=tab:>\ ,trail:-,extends:>,precedes:<
    " 自動改行の無効化
    set tw=0
    " コメント文字自動挿入の無効化~
    autocmd FileType * setlocal formatoptions-=ro~
    " 自動インデントの無効化
    set nosmartindent
    set noautoindent
    EOS
  • 例:hoge.sh ファイルの上下端から5行以内に書く
    #!/bin/bash
    # vim: ts=4 sw=4

vimでlocaleが無視される場合。

.vimrcの「set encoding=Japan」を削除したらOKだった。

vim ~/.vimrc
---- 
set encoding=Japan

rootでviで編集する場合に色が変わらない場合

一般ユーザで編集した場合色付けされるが、rootで編集した場合色づけされない。
一般ユーザの場合、vimにaliasが貼られている。rootでも色づけしたい場合は、aliasを貼ってやれば良い。

vi .bashrc
alias vi='vim'
  • root
    which vi
    /bin/vi
  • 一般
    which vi
    alias vi='vim'
       /usr/bin/vim
    改行コードの表示
    :set ff?

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38 (91d)