【vim】至福のコマンド

2025年05月17日

vimmer vim エディタ

パワーー

※オリジナルCMC WorldPeaceフルマークダウン対応

※業務プロセスを効率化する100万語彙内蔵の自作IME

※辞書を毎時300件流し読むためのハック

アチャー

vimrc4万行

✎2023-6-7

 ●vimgrep

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

●強調表示を解除

:noh

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

:set smartcase

●画面をただちに再描画

: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
  endifendfunction

●カーソルの桁番号を得る

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", "発光文字")

●笑顔

:smile





\ 10時〜20時 土日も対応可 /