#author("2025-04-24T01:28:24+00:00","","")
#contents

*** vimrc 基本設定  [#hb9e1b53]

 set number
 set title
 set tabstop=4
 set showmatch
 set noautoindent
 set nowrap
 set listchars=tab:>-
 set list
 highlight Comment ctermfg=DarkRed
 set encoding=utf-8
 set fileencodings=ucs-bom,iso-2022-jp-3,iso-2022-jp,eucjp-ms,euc-jisx0213,euc-jp,sjis,cp932,utf-8
 autocmd FileType perl,cgi :compiler perl

*** vimrc 拡張設定 [#pb4a4149]set title [#w568f81e]
set tabstop=4find . -type f -not -regex '\./\.git.*' -print | xargs cat | wc -l
set showmatch
set noautoindent
set nowrap
set listchars=tab:>-
set list
highlight Comment ctermfg=DarkRed
set encoding=utf-8

*** 基本キー操作 [#s8e6a572]

LEFT:
|e <file>|追加でファイルを読み込む|
|e!|今のファイルを読み直す(=変更を全て取り消す)|
|b|前の単語にカーソルを移動|
|w|次の単語にカーソルを移動|
|ctrl + f|一画面分進める|
|ctrl + b|一画面分戻る|
|i|カーソルの前に入力|
|COLOR(red):a|COLOR(red):カーソルの後に入力|
|I|カーソルを行頭に移動し、その直前に入力|
|COLOR(red):A|COLOR(red):カーソルを行末に移動し、その直後に入力|
|COLOR(red):o|COLOR(red):カーソル行の下に空行を作成し入力|
|COLOR(red):O|COLOR(red):カーソル行の上に空行を作成し入力|
|.[Enter]|直前のコマンドの中止(UNDO)|
|u(小文字)|直前に実行したコマンドの取り消し ↑と同じかな?(要調査)|
|Ctrl + r|戻り過ぎてしまった操作を取り消す(Redo)|
|U(大文字)|カーソル行に行った変更を全て取り消す|
|0(zero)|行頭に移動|
|$|行末に移動|
|M|画面の中央行に移動|
|COLOR(green):%|COLOR(green):対応する括弧に移動|
|COLOR(red):(行末で) 大文字 J|COLOR(red):改行の削除|
|~(にょろ)|大文字小文字変換|
|COLOR(red)::e![Enter]|COLOR(red):ファイルの読み直し (保存前の変更を全て取り消す)|
|yy|カーソル行をコピー|
|10yy|COLOR(red):カーソル行から10行をコピー|
|a10yy|カーソル行から10行を コピーバッファ[a-z]にコピー|
|D (D$)|カーソルから行末までを削除 (D$ と書いても同じ)|
|dgg|行頭からカーソルまでのを削除|
|dd|カーソル行を削除|
|dG|カーソルからファイルの最後までを全て削除|
|p(小文字)|カーソル行の下に ペースト|
|P(大文字)|カーソル行の上に ペースト|
|ctrl + v  |ビジュアルモード 矩形選択|
|"aP(大文字)|カーソル行の上に バッファー[a-z]をペースト|
|:%s/置換前/置換後/[Enter]|カーソル付近の一文字置換|
|:%s/置換前/置換後/g[Enter]|文書全体の一括置換|
|:g/^$/d|空行の削除|
|B,Es/置換前/置換後/g[Enter]|B行目〜E行目までの一括置換|
|COLOR(red):C|COLOR(red):カーソルから右を削除して入力モードに遷移|
|COLOR(red)::noh|COLOR(red):検索によるハイライトを消す|
|:!(UNIX コマンド)|コマンドの実行|
|:r(ファイル名)|カレント行にファイルを読み込む|
|:r!(UNIX コマンド)|コマンド実行結果をカレント行に貼り付ける|
|set listchars=tab:>-|tab の可視化|
|set list|~|
|ls|バッファーリストの表示|
|b数字|N番目のバッファーに切り替え|
|bn|次のバッファーに切り替え|
|bp|前のバッファーに切り替え|
|badd|追加でファイルをバッファーに読み込み|
|:cope[n]|QuickFixウィンドウを開く(コンパイル結果などの確認)|
|:ccl[ose]|QuickFixウィンドウを閉じる|
|:split (ss)|画面の水平に分割|
|:vsplit (vs)|画面の垂直に分割|
|[CTRL]+w (hjkl)|分割画面の移動(カーソル移動キー)|
|:set <no>scrollbind (scb)|同時スクロール <の解除>|


-- 参考URL : http://www.asahi-net.or.jp/~aa4t-nngk/vi.html
-- [[KAORIYA 日本語パッチ適用すみ vim ダウンロード:http://www.kaoriya.net/#VIM]]

- 起動時の設定 (ルートディレクトリの .exrc ファイル)
-- 行番号の表示、格好の対応の自動確認
 [root@spirit pukiwiki]# cat ~/.exrc
 set number
 set showmatch

-- 日本語の文字コードを自動判別
 set encoding=utf-8
 set fileencodings=ucs-bom,iso-2022-jp-3,iso-2022-jp,eucjp-ms,euc-jisx0213,euc-jp,sjis,cp932,utf-8

-- 文字コードを変更して保存
|set fileencoding=文字コード|set fenc(短縮形)|h
|set fileencoding=euc-jp |エンコーディングEUC-JPに変更|
|set fileencoding=shift_jis |エンコーディングSHIFT_JISに変更|
|set fileencoding=utf-8 |エンコーディングUTF-8に変更|

-- 改行コードを変更して保存
|set fileformat=ファイルフォーマットの種類|set ff(短縮形)|h
|set fileformat=dos |改行をWindowsの形式に変更|
|set fileformat=mac |改行をMacの形式に変更|
|set fileformat=unix |改行をUnixの形式に変更|

*** 応用キー操作 [#s8e6a572]

- 選択した文字を検索 = (選択)→ /(検索状態)→ &color(red){[CTRL]+r}; → "(無名レジスタ、又は指定したレジスタ)

- 行マーク 
|操作|コマンド|h
|登録|m(a-z,A-Z)|
|呼び出し|'(a-z,A-Z)|
|確認|:marks|
|削除(個別)|:delmarks[a-z,A-Z]|
|削除(一括)|:delmarks!|

- CTAGS
-- タグファイルの生成 = ctags -f .tgas
-- vim へのタグファイルの指定 :set tags=.tags
-- 関数定義元へのジャンプ = 関数呼び出し部分にカーソルがある状態で &color(red){[CTRL]+]};
-- ジャンプした元に戻る = '"(ジャンプ、無名レジスタ)

*** 複数ファイルの編集関連 [#v4e45909]
- 複数ファイルを同時に開く
-- vim ファイル名 ファイル名 -O(大文字)= 横に並べて開く 
-- vim ファイル名 ファイル名 -o (小文字)= 縦に並べて開く

- 後からファイルを開いて並べる
-- :vs ファイル名 = 横に並べて追加でファイルを開く
-- :sp ファイル名 = 縦に並べて追加でファイルを開く

- 編集対象ファイルを切り替える
-- [CTRL+W] + W

- スクロールを同期させる
-- :set scb を同期させるウィンドウ全てで実行 

*** 複数行削除 [#s48ceba9]
- n行目から現在位置まで削除 [#n3a5ec27]
-- :n,.d
- 現在行から文末まで削除
-- dG

*** vi を使いやすくするため、 半角/全角キーも ESC に割り当てる (for Ubuntu 12.04) [#i17b4387]
-- ルートディレクトリーに .Xmodmap というファイルを作り、 以下の設定を書く
 munakata@muna-E420:cat ../../.Xmodmap 
 ! 全角半角キーもESCキーも両方 ESC にする 
 ! keycode 9 = Zenkaku_Hankaku
 ! keycode 49 = Escape
 keycode 9 = Escape 
 keycode 49 = Escape
-- 以下のコマンドでキーマップの変更を反映
 munakata@muna-E420:xmodmap ~/.Xmodmap

- vi を使いやすくするため、 半角/全角キーも ESC に割り当てる (for Ubuntu 14.04)
-- Xmodmap によるキーマップの変更は Ubuntu 14.04 では使えなかった。 
-- [[ここ:http://blog.cnu.jp/2014/05/12/use-xkb/]]を参考に xkb でキーマップを変更する

--- まずベースとなる設定ファイル(mykbdファイル)を作成する
 $ mkdir -p ~/.xkb/keymap ~/.xkb/symbols
 $ setxkbmap -print > ~/.xkb/keymap/mykbdShell

--- 次に変更するキーバインドを設定する --> &ref(myswap);
 $ cat ~/.xkb/symbols/myswap
 partial modifier_keys
 xkb_symbols "swapkeys" {
   replace key <ESC> {[ quoteleft, asciitilde ] };
   replace key <TLDE> {[ Escape ] };
   replace key <LCTL>  { [ Caps_Lock ] };
   replace key <CAPS> { [ Control_L ] };
 };

---  ここではとかquoteleftなどといったようにキー指定を行っているが、これらのキー指定の方法はxkb特有のもの。他のキーを指定する方法は、/usr/share/X11/xkbフォルダ以下にあるファイルをいろいろ見ていけば分かるかと。myswapファイルの内容を、mykbdファイルに反映するように指定する。xkb_symbolsの項目のの最後に”+myswap(swapkeys)”を追加する。一例として、追加後のファイルはこんな感じ。--> &ref(mykbd);
 $ cat ~/.xkb/keymap/mykbd
 xkb_keymap {
     xkb_keycodes  { include "evdev+aliases(qwerty)"    };
     xkb_types     { include "complete"    };
     xkb_compat    { include "complete"    };
     xkb_symbols   { include "pc+us+inet(evdev)+myswap(swapkeys)"    };
     xkb_geometry  { include "pc(pc105)"    };
 };

--- 設定を起動時に反映させるように、.bashrcファイル(bashの場合)に以下の一文を追加
 xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null

*** vi で編集中に誤って ctrl-z で抜けてしまった時の対処 ---- ctrl-z は処理を終了せず中断させた状態 [#x8d9fadc]
- 中断中のジョブを確認するのは、jobs コマンドです。
- 中断したジョブを再開させるのは、fg コマンドです。
- 中断したジョブを強制終了させるには、kill コマンドです。
- 中断中のまま強制終了したり、ウィンドウを閉じてしまうと viが編集中状態を保持していますので vi -r でリカバリが必要

*** vi で編集中に誤って ctrl-s を押してキー操作をロックさせてしまった時の対処 [#wb3d4c12]
- ctrl-q でロック状態を解除できる

*** 画面の分割 [#t6074095]
- 左右分割 = :vs (:vsplit)
- 上下分割 = :sp (:split)
- ファイルの読み込み = :e ファイル名
- フォーカスの切り替え = [CTRL] + W, G(左)/ J(下)/ H(上)/ L(右)  
- リサイズ =  [CTRL] + +(拡大)/ -(縮小)/ =(均等)

*** vimgrep の使い方 [#z2df66d2]
*** vi の強制保存(sudo を付けずに起動した時に後から sudo する方法) [#ra11b0e6]
- Vimのコマンドで「:w」とする代わりに、「:w !sudo tee % > /dev/null」

*** [[vim-plug:https://github.com/junegunn/vim-plug]] のインストール [#ofca0c4b]
- vim-plug は vim のプラグインを管理するソフトウエアで Ubuntu repo には無いので github から直接設定する。
- vim 中で latex をコンパイルする為の [[vimtex:https://github.com/lervag/vimtex]] の導入の為に vim-plug が必要となった。

- ~/.vimrc の中の vim-latex suite 関連の設定を削除
- ~/.vim ディレクトリーに autoload というディレクトリを作成
- &ref(plug.vim); を autoload ディレクトリーにコピー
- .vimrc に以下の記述を追加する"

 ----------------------------------------------------------------------------
 " Add setting for vim-plug (https://github.com/junegunn/vim-plug)
 " Light weight & automated plug-in manager for vim
 "----------------------------------------------------------------------------
 if empty(glob('~/.vim/autoload/plug.vim'))
   silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
     \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
   autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
 endif
 
 " Specify a directory for plugins
 " - For Neovim: ~/.local/share/nvim/plugged
 " - Avoid using standard Vim directory names like 'plugin'
 call plug#begin('~/.vim/plugged')
 
 " Make sure you use single quotes
 
 " Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
 Plug 'junegunn/vim-easy-align'
 
 " Any valid git URL is allowed
 Plug 'https://github.com/junegunn/vim-github-dashboard.git'
 
 " Multiple Plug commands can be written in a single line using | separators
 Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
 
 " On-demand loading
 Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
 Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
 
 " Using a non-master branch
 Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }
 
 " Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
 Plug 'fatih/vim-go', { 'tag': '*' }
 
 " Plugin options
 Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }
 
 " Plugin outside ~/.vim/plugged with post-update hook
 Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
 
 " Unmanaged plugin (manually installed and updated)
 Plug '~/my-prototype-plugin'
 
 " vimtex
 Plug 'lervag/vimtex'
 
 " Initialize plugin system
 call plug#end()

-- call plug#begin() から call plug#end() の間で管理する plug-in を記述する
-- 今回は vintex の呼び出しを追加している

- vim を起動してコマンドモードで :PlugInstall を実行すると plug-inn が自動インストールされる

- &ref(vim-plug.jpg);

- vim-plug のコマンド例、詳細は [[ここ:https://github.com/junegunn/vim-plug]]
|Commands|Command Description|
|PlugInstall [name ...] [#threads]	|Install plugins|
|PlugUpdate [name ...] [#threads]	|Install or update plugins|
|PlugClean[!]	|Remove unused directories (bang version will clean without prompt)|
|PlugUpgrade	|Upgrade vim-plug itself|
|PlugStatus	|Check the status of plugins|
|PlugDiff	|Examine changes from the previous update and the pending changes|
|PlugSnapshot[!] [output path]	|Generate script for restoring the current snapshot of the plugins|

*** 参考 URL [#e9674ac0]
- [[Vimをプログラム開発環境にしてしまおう:http://www.atmarkit.co.jp/ait/articles/1111/15/news125_3.html#l_r3pic9.jpg]]
- [[Vimの生産性を高める12の方法:https://postd.cc/how-to-boost-your-vim-productivity/]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS