CentOS7 に Vim を github 経由でインストールする& .vimrc の設定

やること

vi をもっと使いやすくするために Vim をインストールして、
Vim を vi コマンドで使えるようにする。
あと行番号表示したりハイライトしたかったのでその設定もする。

公式の DL ページでは github 推奨と書いてあったので、
yum などではなく github からインストールすることにした。

インストールは下記。ほぼコピペ。

どうでもいいけど Vim は Vi IMproved の略らしい。

既に Vim の Huge 版がある場合はアンインストール

$ vim -v

yum

$ sudo yum remove -y vim-enhanced

Vim をインストール

Vim に必要なパッケージのインストール

$ sudo yum install -y make gcc ncurses-devel

github 経由でのインストール

  • clone する場所は /usr/local/vim にする
$ cd /usr/local
$ sudo mkdir vim
# 必要があれば作業ユーザーに権限を渡す
$ sudo chown user:user vim
$ cd vim
# ここからほぼコピペ
$ git clone https://github.com/vim/vim.git .
$ cd src
# $ make distclean はスキップした
# $ make distclean  # if you build Vim before
$ make
$ sudo make install
$ vim --version
VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Jul 15 2022 06:23:53)
適用済パッチ: 1-53
Compiled by leadi@ip-172-31-26-208.ap-northeast-1.compute.internal
Huge 版 without GUI.  機能の一覧 有効(+)/無効(-)
+acl               +file_in_path      +mouse_urxvt       -tag_any_white
+arabic            +find_in_path      +mouse_xterm       -tcl
+autocmd           +float             +multi_byte        +termguicolors
+autochdir         +folding           +multi_lang        +terminal
-autoservername    -footer            -mzscheme          +terminfo
-balloon_eval      +fork()            +netbeans_intg     +termresponse
+balloon_eval_term +gettext           +num64             +textobjects
-browse            -hangul_input      +packages          +textprop
++builtin_terms    +iconv             +path_extra        +timers
+byte_offset       +insert_expand     -perl              +title
+channel           +ipv6              +persistent_undo   -toolbar
+cindent           +job               +popupwin          +user_commands
-clientserver      +jumplist          +postscript        +vartabs
-clipboard         +keymap            +printer           +vertsplit
+cmdline_compl     +lambda            +profile           +vim9script
+cmdline_hist      +langmap           -python            +viminfo
+cmdline_info      +libcall           -python3           +virtualedit
+comments          +linebreak         +quickfix          +visual
+conceal           +lispindent        +reltime           +visualextra
+cryptv            +listcmds          +rightleft         +vreplace
+cscope            +localmap          -ruby              +wildignore
+cursorbind        -lua               +scrollbind        +wildmenu
+cursorshape       +menu              +signs             +windows
+dialog_con        +mksession         +smartindent       +writebackup
+diff              +modify_fname      -sodium            -X11
+digraphs          +mouse             -sound             -xfontset
-dnd               -mouseshape        +spell             -xim
-ebcdic            +mouse_dec         +startuptime       -xpm
+emacs_tags        -mouse_gpm         +statusline        -xsmp
+eval              -mouse_jsbterm     -sun_workshop      -xterm_clipboard
+ex_extra          +mouse_netterm     +syntax            -xterm_save
+extra_search      +mouse_sgr         +tag_binary
-farsi             -mouse_sysmouse    -tag_old_static
      システム vimrc: "$VIM/vimrc"
      ユーザー vimrc: "$HOME/.vimrc"
   第2ユーザー vimrc: "~/.vim/vimrc"
       ユーザー exrc: "$HOME/.exrc"
  デフォルトファイル: "$VIMRUNTIME/defaults.vim"
       省略時の $VIM: "/usr/local/share/vim"

make 時にエラーが出た

$ make
no terminal library found
checking for tgetent()... configure: error: NOT FOUND!
      You need to install a terminal library; for example ncurses.
      On Linux that would be the libncurses-dev package.
      Or specify the name of the library with --with-tlib.
make: *** [auto/config.mk] エラー 1

ncurses 必要と書いてあるのでインストールする。

# インストールされているか確認
$ sudo yum list installed | grep ncurses-devel
# インストール
$ sudo yum install -y ncurses-devel

Vim を vi コマンドで扱えるようにする

元々ある vi コマンドの名前を適当に変更する

root と一般ユーザーの bin の場所が違うので注意。

# 一般ユーザーが使う vi の場所
$ which vi
/usr/bin/vi
$ sudo mv /usr/bin/vi /usr/bin/vi-min

# root が使う vi の場所
$ sudo which vi
/bin/vi
$ sudo mv /bin/vi /bin/vi-min

シンボリックリンクを使い vi コマンドで vim を使えるようにする

  • github 経由でインストールした場合の vim コマンドは /usr/local/vim/src/vim にある
    • インストール先は /usr/local/vim 想定
$ sudo ln -s /usr/local/vim/src/vim /usr/bin/vi
$ which vi
vi=vim

$ sudo ln -s /usr/local/vim/src/vim /bin/vi
$ sudo which vi
vi=vim

.vimrc にて行番号表示、ハイライトなどの設定をする

設定内容は下記記事コピペ。
何も考えず~/.vimrcにこれを書くんだ! 〜vim初心者によるvim初心者のためのvim入門〜 - Qiita

# $HOME に移動
$ cd
$ vi .vimrc
" setting
"文字コードをUFT-8に設定
set fenc=utf-8
" バックアップファイルを作らない
set nobackup
" スワップファイルを作らない
set noswapfile
" 編集中のファイルが変更されたら自動で読み直す
set autoread
" バッファが編集中でもその他のファイルを開けるように
set hidden
" 入力中のコマンドをステータスに表示する
set showcmd


" 見た目系
" 行番号を表示
set number
" 現在の行を強調表示
set cursorline
" 現在の行を強調表示(縦)
set cursorcolumn
" 行末の1文字先までカーソルを移動できるように
set virtualedit=onemore
" インデントはスマートインデント
set smartindent
" ビープ音を可視化
set visualbell
" 括弧入力時の対応する括弧を表示
set showmatch
" ステータスラインを常に表示
set laststatus=2
" コマンドラインの補完
set wildmode=list:longest
" 折り返し時に表示行単位での移動できるようにする
nnoremap j gj
nnoremap k gk
" シンタックスハイライトの有効化
syntax enable


" Tab系
" 不可視文字を可視化(タブが「▸-」と表示される)
set list listchars=tab:\▸\-
" Tab文字を半角スペースにする
set expandtab
" 行頭以外のTab文字の表示幅(スペースいくつ分)
set tabstop=2
" 行頭でのTab文字の表示幅
set shiftwidth=2


" 検索系
" 検索文字列が小文字の場合は大文字小文字を区別なく検索する
set ignorecase
" 検索文字列に大文字が含まれている場合は区別して検索する
set smartcase
" 検索文字列入力時に順次対象文字列にヒットさせる
set incsearch
" 検索時に最後まで行ったら最初に戻る
set wrapscan
" 検索語をハイライト表示
set hlsearch
" ESC連打でハイライト解除
nmap <Esc><Esc> :nohlsearch<CR><Esc>

マウスやトラックパッドでクリックしたりスクロールしたい時

set mouse=a を追加する

$ vi .vimrc

" 追加
set mouse=a

root の vi の設定にも反映させる

$ cd
$ sudo cp .vimrc /root/.vimrc