Memo

メモ > サーバ > 各論: Vim

■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の設定ファイルを編集
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
ログインし直すと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設定例
$ vim ~/.vimrc
" 基本の設定 "文字コードを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>
■ペースト時の自動インデントを無効にする :set paste ... ペーストモード(自動インデントなどされないように) :set nopaste ... ペーストモード解除 もしくは以下の方法でも、余計なインデントなしでペーストできる :a ペースト ESC ■改行での自動コメントアウトを無効にする 「:」に続けて以下のコマンドを指定すれば無効になる ただし「~/.vimrc」に記載しても反映されないので、毎回実行する必要がある。どういう対応がいいのかは要調査 (ひとまず、上記のペーストモードで大丈夫そう) set formatoptions-=ro Vimで改行時の自動コメントアウトを無効化 http://qiita.com/necojackarc/items/1f997481764ed42023a7
■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を編集
" 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起動時、NERDTreeが自動でインストールされる インストール後、Ctrl+P で履歴が表示される ファイル名を入力すると絞り込まれる Enter で現在のタブで開く。Ctrl+T で新規タブで開く ■ファイルをツリー表示
$ vim ~/.vimrc … vimrcを編集
" 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起動時、NERDTreeが自動でインストールされる インストール後、vim使用中に以下を実行するとツリーが表示される :NERDTreeToggle 毎回上記のコマンドを入力するのは面倒なので、 自動起動させるか、ショートカットで起動させるといい
$ vim ~/.vimrc
" 「,」に続けて各キーを入力すると各コマンドを実行 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>でツリーと編集領域を移動
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
$ vim ~/.vimrc … vimrcを編集
" 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起動時、minimapが自動でインストールされる インストール後、vim使用中に以下を実行するとミニマップの表示/非表示を切り替えられる :Minimap :MinimapClose 以下の設定でコードがカラー表示されると思ったが反映されず
$ vim ~/.vimrc
" minimap let g:minimap_highlight='Visual'
■Atomの「One Dark」を再現 ※普段使っているAtomとまったく同じ見た目になるわけでも無かったので、いったん導入は見送り
$ 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

Advertisement