【vim】至福コマンド集
rcの備忘録

2023年11月23日

vim メモ エディタ

merの五臓六腑を震わせるrc備忘録

 ●grep
:vimgrep /検索文字/ *.txt |cw

●強調表示を解除
:noh

●検索パターンに大文字が含まれている場合は区別して検索する
:set smartcase

●画面をただちに再描画する
:redraw
!を付せば、画面を消去してから再描画
:redraw!

●ファイルを開くときにウィンドウサイズを指定する
:30sp .vimrc

●ウインドウの数を得る
winnr("%")

●ウィンドウを右側に展開する
:rightb vs .vimrc

●ウィンドウの開閉時にサイズを保つ
:set winfixheight(wfh) "縦幅
:set winfixwidth (wfw) "横幅

●複数行をまとめてコメントアウトする
vmap # <c-V>0I#<esc>
vmap C :s/^#//<cr>
vmap // <C-V>0I//<Esc>
vmap c :s/^////<CR>:noh<cr>K

●日本語の行の連結時には空白を入力しない
:set formatoptions=Mm

●相対的な行番号と絶対的な行番号をトグル
nnoremap <silent> ;h :<C-u>ToggleNumber<CR>
command! -nargs=0 ToggleNumber call ToggleNumberOption()
function! ToggleNumberOption()
   if&number
     set relativenumber
   else
     set number
   endif
endfunction

●カーソルの桁番号を得る
col(".")
行番号はline(".")

●タブラベルを常に表示する
:set showtabline=2
タブページのラベルを表示するかを指定する。
   1:表示しない
   2:2個以上のタブページがあるときのみ表示
   3:常に表示

●カレントタブ以外のすべてのタブを閉じる
:tabo

●右端のタブとしてファイルを開く
:tabm|tabnew .vimrc

●コマンドラインからノーマルモードのコマンドを実行する
:normal j
:executeを使って制御文字を入力することもできる。
:exe "normal <c-w><c-w>"

●一時ファイルを作って開く
:tempname()
存在しないファイルのファイル名を少なくとも連続26回の
呼出しまでは違う名前で生成する
:let tmpfile = tempname()

●ファイルに追記
:execute ":redir! >> " . filename
   :silent! echon l:words."n"
:redir END

●readしたときにファイルの一行目から書き込む
:0r filename

●カレントファイル名を得る
expand("%")

●netrwでCVSと.で始まるファイルは表示しない
:let g:netrw_list_hide = ’CVS,(^|ss)zs.S ’

●候補をポップアップする(インサートモード補完時)
:call complete(col(’.’),[’matumoto’,’hamada’])
候補のリストに要素を追加する。
:call complete_add("takasu")

●ポップアップ中のキーマッピング
inoremap <expr> u pumvisible() ? "<c-p>" : "u"
ポップアップメニューが表示されているときには非0を返し、
表示されていないときは0を返す。pumvisible()関数を用いて実現。

●Webページを表示する(w3m必須)
:!w3m -dump -cols 80 hoge.html > hoge.txt
*via:w3m テキストブラウザ

●スクロールの同期
:set scrollbind
カレントウィンドウは他のスクロール同調中ウィンドウと同じだけスクロールする。

●テキストを水平にスクロールする
zs "カーソルのある位置がスクリーンの始まり(左側)に来る
ze "カーソルのある位置がスクリーンの終わり(右側)に来る

●split()で区切り文字を残す
for c in split(mystring, ’zs’)

●ヴィジュアルモードの選択範囲を繰り返す
関数に引数[range]を追加した場合、関数は「範囲」を管理することができる。

function Funcname() range
   for line_no in range(a:firstline, a:lastline)
     if line =~ ’Date’|echo line|endif
   endfor
endfunction

●一旦停止
:sleep     "1秒スリープ
:5sleep    "5秒スリープ
:sleep 100m "100ミリ秒スリープ

●強調表示
:call matchadd("Search", "発光文字")

●IMEを自動で無効にする(Windows)
:let&t_SI.="e[<r"
:let&t_EI.="e[<se[<0t"
:let&t_te.="e[<0te[<s"