vimで正規表現の置換
エクセルに貼り付けた日付データが、mm/dd/yyyy形式でエクセルは文字として読み込んでいたところを
どうやって日付にできるかと悩んでいた際に、「自分だったら正規表現でやる」という声が。
確かに、簡単かも。
ただ、正規表現に不安な面もあって….。
とりあえず、以下でうまくいきました。
という念のためのメモです。
1 | :'<,'>s/\(\d*\)\/\(\d*\)\/\(\d*\)/\3-\1-\2/gi |
エクセルに貼り付けた日付データが、mm/dd/yyyy形式でエクセルは文字として読み込んでいたところを
どうやって日付にできるかと悩んでいた際に、「自分だったら正規表現でやる」という声が。
確かに、簡単かも。
ただ、正規表現に不安な面もあって….。
とりあえず、以下でうまくいきました。
という念のためのメモです。
1 | :'<,'>s/\(\d*\)\/\(\d*\)\/\(\d*\)/\3-\1-\2/gi |
ひさしぶりに、windowsでの開発に取り組みました。
で、やっぱりvimをインストールして、snippetsEmuのプラグインをインストールしていざ、使おうとしても動かずに。。。。
あきらめきれずに、いろいろとやってみましたが、どうしても難しくてあきらめかけていたところ、そもそも、ファイルの置き場所がまずいのか?という点に気づいていろいろとやってみると、
runtime\after\ftplugin
にはいるべきものを
runtime\ftplugin
に移動すると見事に動きました。
これで、forとかタイプしてTabキーだけで、自動的に補完されます。
とっても便利です。
一応、覚書として
http://www.vim.org/scripts/script.php?script_id=1318
から以下のファイルを取得する
snippy_plugin.vba
snippy_bundles.vba
それぞれ、vim上で開いて、
:source %
これで処理、展開されます。
あらかじめ、 ~/.vim/after/ftplugin/ フォルダを作っておくとよいかも
さらに、以下を.vimrcで設定しておくと便利です
filetype plugin on
" CTRL + Bで設定
let g:snipetsEmu_key="
いわゆるwindowsのExplorerのようなものです。
ファイル作成、ディレクトリ作成、リネームなどもできます。
vtreeexplorer.vimとどちらが使いやすいか?
という話もあるかもしれませんが、VIM7で、タブ機能が使えるようになった以上、こちらは、かなりポイント高いかも。
VimExplorer – VE – the File Manager within Vim : vim online
使い方:
文章を打ち込んでいて、テキストの罫線を入れたくなるときに便利です。
keisen.vim(UNIX / 文書作成)
たびたび調べるのに苦労するので、メモ。
ある指定範囲をコメントアウトするのに、
選択した上で、
大文字のI⇒コメント記号( //とか、#とか)⇒ESC
これでコメントが挿入できる。
vimでソースの頭によく
/* vim: set expandtab tabstop=2 softtabstop=2 shiftwidth=2 foldmethod=marker enc=utf-8 : */
こう書きますが、どうも設定が反映されていない!ということでよくよく調べたら
http://nanasi.jp/articles/howto/file/modeline.html
で、
そもそも、このモードラインを
set modeline
で、有効にしておかないと使えないということが判明しました。
なんでデフォルトでは使えないのかなぁ。
vimをメインで利用する上で、便利プラグインの説明です。
しかも、これで面白いのは、windowsでもlinuxでもいけるものがほとんどだということです。
。。。説明はのちほど。
vimも.vimrcの設定次第でかなり使いやすいものとなります。
(windows版の場合は、_vimrcを追加・編集すればOkです)
以下は私がやっている例です。
肝となる部分だけ解説です。
シンタックス表示
syntax enable
行番号表示
set number
タブをソフトタブで、実施する
set tabstop=2 softtabstop=2 shiftwidth=2
記号文字の表示がおかしくならないように
set ambiwidth=double
バックアップファイルを作らない
set nobackup
など、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | " vim:set tabstop=2 enc=utf8 : syntax enable set modeline set number set tabstop=2 softtabstop=2 shiftwidth=2 set foldmethod=marker set laststatus=2 " 記号文字の表示がおかしくならないように set ambiwidth=double filetype on filetype indent on filetype plugin on colorscheme ron set nobackup set enc=utf-8set fileencodings=iso-2022-jp,sjis,euc-jp,utf-8 autocmd FileType php :set omnifunc=phpcomplete#CompletePHP autocmd FileType html,javascript :set omnifunc=javascriptcomplete#CompleteJSautocmd Filetype * \ if &omnifunc == "" | \ setlocal omnifunc=syntaxcomplete#Complete | \ endif "-----------------------------------------------------------------------------" source ~/.vim/vtreeexplorer.vim let g:treeExplVertical=1 let g:treeExplWinSize=30 " source ~/.vim/php-doc.vim inoremap <c-P> <esc>:call PhpDocSingle()<cr>i nnoremap <c-P> :call PhpDocSingle()<cr> vnoremap <c-P> :call PhpDocRange()<cr> source ~/.vim/php-doc.vim inoremap <c-P> <esc>:call PhpDocSingle()<cr>i nnoremap <c-P> :call PhpDocSingle()<cr> vnoremap <c-P> :call PhpDocRange()<cr> let g:pdv_cfg_Author = "HASHIMOTO <hashimoto at vone dot jp>" let g:pdv_cfg_Copyright= "xxxxx INC.2008 All rights reservied." " phpファイルの場合 下矢印で文法チェックをする autocmd FileType php :map <down> <esc>:!clear<cr>:!php -l %<cr> autocmd FileType php :map <c-E> <esc>:!php %<cr> " phpファイルの場合 =functionと打ち込むとちょっと便利にfunctionがかける autocmd FileType php :map! =function //{{{<cr><left><left><del><del>function {<cr>}<cr>//}}}<up><up><right><right><right><right> " phpファイルの場合 =varと打ち込むとちょっと便利にvarがかける autocmd FileType php :map! =var //{{{<cr><left><left><del><del>var <cr>//}}}<up> "autocmd FileType php :set tabstop=4 softtabstop=4 shiftwidth=4 map <f12> <esc>:!php /home/hashimoto/tools/ftp.php %:p 1<cr> map! =vimh // vim: set expandtab tabstop=2 softtabstop=2 shiftwidth=2 enc=utf8 : map <left> <esc>:bp<cr> map <right> <esc>:bn<cr> map <up> <esc>:ls<cr> " function InsertTabWrapper() if pumvisible() return "\<c-n>" endif let col = col('.') - 1 if !col || getline('.')[col - 1] !~ '\k\|<\|/' return "\<tab>" elseif exists('&omnifunc') && &omnifunc == '' return "\<c-n>" else return "\<c-x>\<c-o>" endif endfunction |
入力モード a
入力モード(挿入)i
閲覧モードESCキー
保存:w
コピー y
ペースト p
アンドゥ u
置換 s
:5,20s/abc/def/g //5行目から20行目のahhhhhをuhyaaaaに変換するもの。 :s/abc/def/g //またビジュアルモードで範囲指定をしている場合は、 :%s/abc/def/g //ファイル全体でやるなら :%s/^M//g (^MはCTRL+V、CTRL+M) //CR+LFの改行コードの一括
※C オプション(confirm確認しながら、置換するかどうかを選択できる)
改行をなくして連結する(各行末に空白あり) shift + j
改行をなくして連結する(各行末に空白なし) g shift + j
コメントアウト(※繰り返すと消えます!ので、注意が必要です)\x
コメントアウト(確実) CTRL+Vで矩形選択後SHIFT+i // + ESC
これで、ちょっとだけ待つと、矩形全体にコメントが入ります。
マクロ(記録開始):qa aは任意のアルファベット
マクロ(記録終了):q
マクロ(実行):@a aは記録したマクロのキー
畳み込み set fdm=marker
開く. 大文字だと中も再起的に. zo, zO
たたむ. 大文字だと外まで再起的に.# zc, zC – close,
foldの作成.zf
全部開く.zR
全体的に1段開く(foldlevel+=1). zr
全体的に1段閉じる(foldlevel-=1).zm
全部閉じる(foldlevel=0). zM
php的な畳み込み let php_folding=1あんまりお薦めではありません
インデント >とか、<
コピペ対策自動インデント =
そもそもインデントが崩れないようにコピペする:a