■Vim
テキストエディタ
■Vim基本操作
$ vi
と入力すると、大抵の環境ではVimが立ち上がる
ただしrootの場合はviが立ち上がるので、vimと指定する必要がある
(後述する /etc/profile.d/vim.sh で制御できる)
viは操作が特殊なので慣れは必要
まずは超基本だけ! viの基本的な使い方【Linux入門】
https://eng-entrance.com/linux-vi-base
■Vimチュートリアル
$ vimtutor
を実行すると、Vimのチュートリアルが表示される。少しずつでも進めるといい
「Vimを使い始めようと思うんですけど、おすすめを教えてください」
http://kannokanno.hatenablog.com/entry/20121217/1355694191
■基本操作
i ... 入力モードに切り替え
yy ... 一行コピー
p ... 貼り付け
dd ... 一行削除
^ ... 行頭へ移動
$ ... 行末へ移動
gg ... ファイルの先頭へ移動
G ... ファイルの最後へ移動
:e ... 再読み込み
:q ... 終了
:q! ... 強制終了
:w ... 保存
:wq ... 保存して終了
/xx ... xxを検索(「n」で次を検索 / 「N」で前を検索)
?xx ... xxを検索(「/xx」とは逆に検索)
u ... アンドゥ
Ctrl+R ... リドゥ
:set number ... 行番号の表示
:set nonumber ... 行番号の非表示
:行番号 ... 指定した行へ移動
:set nowrap ... 折返し表示なし
:set wrap ... 折返し表示あり
:set paste ... ペーストモード(自動インデントなどされないように)
:set nopaste ... ペーストモード解除
:set mouse=a ... マウスを使う(クリックでカーソルを移動できたり)
操作方法は以下も参考になる
とほほのVim入門 - とほほのWWW入門
https://www.tohoho-web.com/ex/vim.html
とりあえずvimを使えるようになりたい人のための記事
https://zenn.dev/vim_jp/articles/0009-just_want_to_be_able_to_use_for_vim_begineer
■移動
vimを使うとき十字キーで移動して、vimmerに殺されるその前に - Qiita
https://qiita.com/fasahina/items/2767891134028648f288
Vimにおけるカーソル移動の効率化
https://zenn.dev/skanehira/articles/2022-01-29-vim-cursor-jump
■画面分割
:split ... 画面を上下に分割する
:vsplit ... 画面を左右に分割する
Ctrl+W → k ... 分割した上のウインドウに移動
Ctrl+W → j ... 分割した下のウインドウに移動
Ctrl+W → h ... 分割した左のウインドウに移動
Ctrl+W → l ... 分割した右のウインドウに移動
Ctrl+W → K ... 分割したウインドウを上に移動
Ctrl+W → J ... 分割したウインドウを下に移動
Ctrl+W → H ... 分割したウインドウを左に移動
Ctrl+W → L ... 分割したウインドウを右に移動
Ctrl+W → > ... 分割したウインドウの幅を増やす
Ctrl+W → < ... 分割したウインドウを幅を減らす
Ctrl+W → + ... 分割したウインドウを高さを増やす
Ctrl+W → - ... 分割したウインドウを高さを減らす
■タブ
:newtab ... 新規にタブを開く
gt ... 次のタブに移動
gT ... 前のタブに移動
■一括コメントアウト
Ctrl+G で現在の行番号を表示
:74,222 s/^/#
で74行目〜222行目を一括コメントアウト
■PoderosaでVimを使っているとき、Windowsのクリップボードにコピーする
ドラッグ&ドロップでテキストを選択し、
「右クリック → コピー」もしくは「編集 → コピー」とすればコピーできる。
■ジョブの切り替え
vim使用中、Ctrl+Zでコマンド入力に戻る。ただし作業は終了していない
$ jobs
[1]- 停止 vim test1.txt
[2]+ 停止 vim test2.txt
[4] 停止 vim test4.txt
で一時停止中のジョブを表示できる
$ fg 4
のように入力すると、特定のジョブを起動できる
$ fg
と入力すると、+が付いているジョブを起動できる
■ファイルの履歴
:browse oldfiles
:bro ol
Vimで使える「最近使ったファイル」を開く方法 - Vim 力を上げたい Vimmer の軌跡
http://vimtry1.hateblo.jp/entry/2016/12/27/101346
■Vim基本設定
■rootのviでvimを呼ぶ
一般ユーザではviコマンドでvimが呼ばれるが、rootではviでvimが呼ばれないみたい
viではなくvimを直接指定すればいいが、viで自動的にvimを呼び出したければ以下の設定を調整する
(初期設定では、ユーザのIDが200より小さい場合はvimを呼ばないようになっている)
# vi /etc/profile.d/vim.sh … Vimの設定ファイルを編集
ログインし直すとrootでも色が反映される
また、ターミナルの種類が「kterm」だと色分けは反映されないみたい。「xterm」を選択する
rootのviに色を付ける
http://blog.dacelo.info/linux/entry-759.html
■vimrc
何も考えず~/.vimrcにこれを書くんだ! 〜vim初心者によるvim初心者のためのvim入門〜
http://qiita.com/mfujimori/items/9fd41bcd8d1ce9170301
めんどくせーからvimrcそのまま晒す
http://qiita.com/kotashiratsuka/items/dcd1f4231385dc9c78e7
初心者向け vimrcの設定方法
http://qiita.com/iwaseasahi/items/0b2da68269397906c14c
個人的に便利だと思うVimの基本設定のランキングを発表します!
http://itchyny.hatenablog.com/entry/2014/12/25/090000
ぼくのかんがえたさいしょうのvimrc
http://deris.hatenablog.jp/entry/2014/05/20/235807
■vimrc設定例
if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then
[ -x /usr/bin/id ] || return
ID=`/usr/bin/id -u`
# [ -n "$ID" -a "$ID" -le 200 ] && return … コメントアウトする
# for bash and zsh, only if no alias is already set
alias vi >/dev/null 2>&1 || alias vi=vim
fi
$ vim ~/.vimrc
■ペースト時の自動インデントを無効にする
:set paste ... ペーストモード(自動インデントなどされないように)
:set nopaste ... ペーストモード解除
もしくは以下の方法でも、余計なインデントなしでペーストできる
:a
ペースト
ESC
■改行での自動コメントアウトを無効にする
「:」に続けて以下のコマンドを指定すれば無効になる
ただし「~/.vimrc」に記載しても反映されないので、毎回実行する必要がある。どういう対応がいいのかは要調査
(ひとまず、上記のペーストモードで大丈夫そう)
set formatoptions-=ro
Vimで改行時の自動コメントアウトを無効化
http://qiita.com/necojackarc/items/1f997481764ed42023a7
" 基本の設定
"文字コードをUFT-8に設定
set fenc=utf-8
" 編集中のファイルが変更されたら自動で読み直す
set autoread
" バッファが編集中でもその他のファイルを開けるように
set hidden
" 入力中のコマンドをステータスに表示する
set showcmd
" 見た目の設定
" 行番号を表示
set number
" 現在の行を強調表示
set cursorline
" 行末の1文字先までカーソルを移動できるように
set virtualedit=onemore
" インデントはスマートインデント
set smartindent
" ビープ音を可視化
set visualbell
" 括弧入力時の対応する括弧を表示
set showmatch
" ステータスラインを常に表示
set laststatus=2
" コマンドラインの補完
set wildmode=list:longest
" 折り返し時に表示行単位での移動できるようにする
nnoremap j gj
nnoremap k gk
" タブの設定
" 不可視文字を可視化(タブが「..」と表示される)
set list listchars=tab:\.\.
" タブ文字を半角スペースにする
set expandtab
" 行頭以外のタブ文字の表示幅(スペースいくつ分)
set tabstop=2
" 行頭でのタブ文字の表示幅
set shiftwidth=2
" 入力の設定
" [Ctrl]+zでアンドゥ
inoremap <C-z> <Esc>ui
" [Ctrl]+yでリドゥ
inoremap <C-y> <Esc><C-r><Insert>
" マウスを使う
set mouse=a
" 検索の設定
" 検索文字列が小文字の場合は大文字小文字を区別なく検索する
set ignorecase
" 検索文字列に大文字が含まれている場合は区別して検索する
set smartcase
" 検索文字列入力時に順次対象文字列にヒットさせる
set incsearch
" 検索時に最後まで行ったら最初に戻る
set wrapscan
" 検索語をハイライト表示
set hlsearch
" ESC連打でハイライト解除
nmap <Esc><Esc> :nohlsearch<CR><Esc>
■Vimプラグイン
■dein.vim
Vimのプラグインを管理できる
$ mkdir -p ~/.vim/bundle
$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ sh installer.sh ~/.vim/bundle
以下が出力される
Please add the following settings for dein to the top of your vimrc (Vim) or init.vim (NeoVim) file:
"dein Scripts-----------------------------
if &compatible
set nocompatible " Be iMproved
endif
" Required:
set runtimepath+=/home/refirio/.vim/bundle/repos/github.com/Shougo/dein.vim
" Required:
if dein#load_state('/home/refirio/.vim/bundle')
call dein#begin('/home/refirio/.vim/bundle')
" Let dein manage dein
" Required:
call dein#add('/home/refirio/.vim/bundle/repos/github.com/Shougo/dein.vim')
" Add or remove your plugins here:
call dein#add('Shougo/neosnippet.vim')
call dein#add('Shougo/neosnippet-snippets')
" You can specify revision/branch/tag.
call dein#add('Shougo/vimshell', { 'rev': '3787e5' })
" Required:
call dein#end()
call dein#save_state()
endif
" Required:
filetype plugin indent on
syntax enable
" If you want to install not installed plugins on startup.
if dein#check_install() … コメント解除
call dein#install() … コメント解除
endif … コメント解除
"End dein Scripts-------------------------
出力された内容を、vimrc に貼り付ける
(上のサンプルは環境依存のパスを含むので、自分の環境で表示されたコードを貼り付ける)
$ vim ~/.vimrc … vimrcに追加
次回vim起動時、必要なプログラムが自動でインストールされる
dein.vim/README.md at be226d268a47e79f3452a7e286d040cbca68b7bf - Shougo/dein.vim
https://github.com/Shougo/dein.vim/blob/be226d268a47e79f3452a7e286d040cbca68b7bf/README.md
dein.vim インストール ~ 0から始めるvim ~ - Qiita
https://qiita.com/ymiyamae/items/e14059b77ba1cf0b344c
■ファイルの履歴表示
$ vim ~/.vimrc … vimrcを編集
次回vim起動時、NERDTreeが自動でインストールされる
インストール後、Ctrl+P で履歴が表示される
ファイル名を入力すると絞り込まれる
Enter で現在のタブで開く。Ctrl+T で新規タブで開く
■ファイルをツリー表示
" Add or remove your plugins here:
call dein#add('Shougo/neosnippet.vim')
call dein#add('Shougo/neosnippet-snippets')
call dein#add('ctrlpvim/ctrlp.vim') … 追加
$ vim ~/.vimrc … vimrcを編集
次回vim起動時、NERDTreeが自動でインストールされる
インストール後、vim使用中に以下を実行するとツリーが表示される
:NERDTreeToggle
毎回上記のコマンドを入力するのは面倒なので、
自動起動させるか、ショートカットで起動させるといい
" Add or remove your plugins here:
call dein#add('Shougo/neosnippet.vim')
call dein#add('Shougo/neosnippet-snippets')
call dein#add('scrooloose/nerdtree') … 追加
call dein#add('jistr/vim-nerdtree-tabs') … 追加
$ vim ~/.vimrc
dein.vim で ディレクトリツリーを表示させる方法 ~ 0から始めるvim ~ - Qiita
https://qiita.com/ymiyamae/items/561cb4a5b247deb2ebc1
基本的な使い方
o(Enter) ... ファイルを開く
t ... タブで開く(タブは gt と gT コマンドで移動)
i ... 水平分割して開く
s ... 垂直分割して開く
vim-plugin NERDTree で開発効率をアップする! - Qiita
https://qiita.com/zwirky/items/0209579a635b4f9c95ee
Vimプラグイン「NERDTree」設定・コマンド備忘録
http://kontany.net/blog/?p=112
■ミニマップを表示
※NERDTreeToggleの表示が乱れる上に、コードのカラー表示が反映されないため見送り
「vim minimap」で検索すると他にもあるようなので試す
GitHub - severin-lemaignan/vim-minimap: A Sublime-like minimap for VIM, based on the Drawille console-based drawing library
https://github.com/severin-lemaignan/vim-minimap
" 「,」に続けて各キーを入力すると各コマンドを実行
let mapleader=","
" NERDTree
autocmd VimEnter * execute 'NERDTree' … NERDTreeを自動起動させる
let NERDTreeShowHidden = 1 … 隠しファイルを表示させる
nnoremap <silent><C-e> :NERDTreeToggle<CR> … Ctrl+Eで起動/終了させる
nnoremap <Leader><Tab> <C-w>w … ,+<Tab>でツリーと編集領域を移動
$ vim ~/.vimrc … vimrcを編集
次回vim起動時、minimapが自動でインストールされる
インストール後、vim使用中に以下を実行するとミニマップの表示/非表示を切り替えられる
:Minimap
:MinimapClose
以下の設定でコードがカラー表示されると思ったが反映されず
" Add or remove your plugins here:
call dein#add('Shougo/neosnippet.vim')
call dein#add('Shougo/neosnippet-snippets')
call dein#add('severin-lemaignan/vim-minimap') … 追加
$ vim ~/.vimrc
■Atomの「One Dark」を再現
※普段使っているAtomとまったく同じ見た目になるわけでも無かったので、いったん導入は見送り
" minimap
let g:minimap_highlight='Visual'
$ vim ~/.vimrc … vimrcを編集
有効にするためには以下の設定も必要
" Add or remove your plugins here:
call dein#add('Shougo/neosnippet.vim')
call dein#add('Shougo/neosnippet-snippets')
call dein#add('joshdick/onedark.vim') … 追加
$ vim ~/.vimrc
" One Dark
let g:onedark_termcolors=16 … One Darkを有効にする
colorscheme onedark … カラースキーマを宣言する
■メモ
■キーの割当はよく考えたい
Vim のカスタマイズ 〜キー割り当て変更方法〜 - Vim のブログ
http://vimblog.hatenablog.com/entry/vimrc_key_mapping
Vimの設定ファイル晒し - Qiita
https://qiita.com/rita_cano_bika/items/2ae9c8304f8f12b1b443
■色々なプラグインを試したい
Vim入門(2): Vimのおすすめプラグイン23個とその設定 | Simplie Post
http://post.simplie.jp/posts/56
Vim Is The Perfect IDE
https://dev.to/allanmacgregor/vim-is-the-perfect-ide-e80