これなら分かる!絵で見てわかるSSLサーバ証明書/中間CA証明書/ルート証明書
SSL/TLS暗号化通信、及び、SSLサーバ証明書/中間CA証明書/ルート証明書について、まとめておく。
SSL/TLS暗号化通信
暗号化通信には、「共通鍵暗号方式」が利用されます。 共通鍵暗号方式では、共通鍵をセキュアに連携する必要がありますが、この共通鍵の連携に「公開鍵暗号方式」が使われます。これがSSL/TLS暗号化通信です。
SSL/TLS暗号化通信で利用される「SSLサーバ証明書」、「中間CA証明書」、「ルート証明書」、及び、SSLサーバ証明書の検証について、以下にまとめます。
SSLサーバ証明書/中間CA証明書/ルート証明書
SSL/TLS暗号化通信を行うためには、サーバに「SSLサーバ証明書」を配置しておきます。 「SSLサーバ証明書」の発行(署名)は、以下に分かれます。
SSLサーバ証明書に署名しているのがルート認証局の場合
ルート認証局に署名をリクエストし、SSLサーバ証明書を受け取る。SSLサーバ証明書の検証では、通常ブラウザやOSにインストールされているルート証明書を用いる。
SSLサーバ証明書に署名しているのが中間認証局の場合
署名のリクエスト先が中間認証局になる場合は、SSLサーバ証明書と合わせて、中間CA証明書を取得しておく。SSLサーバ証明書の検証では、通常ブラウザやOSにインストールされているルート証明書により中間CA証明書を検証し、さらに、中間CA証明書によりSSLサーバ証明書を検証することになる。
自己証明書を発行する場合
いったん省略。
まとめ
SSL/TLS暗号化通信、及び、SSLサーバ証明書/中間CA証明書/ルート証明書について、分かりやすくかつ詳細に絵でまとめてみました。 誤り等、お気づきの点があれば、コメントいただけると助かります。
VScodeを使いこなそう
VScodeの拡張等、自分用のメモ
- [未記載] プレゼン資料作り(Marp for VS Code)
- [未記載] 図表を書く(Draw.io Integration)
VSCodeの基本設定
導入Extension
Common
- 日本語フォントを等幅にする。(BIZ UDゴシック):editor.fontFamily
- ファイル保存時に、行末のスペース削除:files.trimTrailingWhitespace
GitHub Theme
- ダーク系のテーマを選択:workbench.colorTheme
Material Icon Theme
- アイコンを表示:workbench.iconTheme
Setting
setting.json
"editor.fontFamily": "'BIZ UDゴシック', Consolas, 'Courier New', monospace", "files.trimTrailingWhitespace": true, "workbench.colorTheme": "GitHub Dark Default", "workbench.iconTheme": "material-icon-theme",
VScodeでMarkdownを書こう
導入Extension
- Markdown Preview Enhanced
- 表示系や外部ツールのインターフェースに利用
- Markdown All in One
- ショートカット、入力補助等、Markdownの記載の利便性向上に利用
Markdown Preview Enhanced
- Preview で利用するCSSが変更:markdown-preview-enhanced.previewTheme
カスタムCSSで見出しをカスタム
- コマンドパレットでカスタマイズCSS
使い方
- プレビューする
- 目次をつける ※プレビュー出しながら出ないと動かない?
- 目次の作成:
markdown-preview-enhanced.createTOC
<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->
が挿入される- depthFrom、depthToで見出しの深さを調整
- orderdListで章番号を付与。ただし、見出し側にはつかない
- 上書き保存すると、目次が作成される
- 目次除外:見出しの最後に、
{ignore=true}
を付与
- 目次の作成:
- htmlに変換する
- pdfに変換する
Markdown All in One
- プレビューを無効にする
- 使い方
- 目次をつける ※深さの設定が、ファイルごとにできない。見出しに章番号をつけたい場合はこちら。
- 目次の作成:
markdown.extension.toc.create
- 目次の更新:上書き保存 or
markdown.extension.toc.update
- 目次除外:見出しの最後に
<!-- omit in toc -->
を付与 - 見出しの深さ:
markdown.extension.toc.levels
- 見出しへの章番号の付与/削除:
markdown.extension.toc.addSecNumbers
、markdown.extension.toc.removeSecNumbers
- 目次の作成:
- 目次をつける ※深さの設定が、ファイルごとにできない。見出しに章番号をつけたい場合はこちら。
Setting
setting.json
"markdown-preview-enhanced.previewTheme": "github-light.css",
style.less
.markdown-preview.markdown-preview { // modify your style here // eg: background-color: blue; h1 { padding-bottom: .1em; border-bottom: 1px solid #ccc; } h1:first-letter { margin-right: .1em; font-size: 1.5em; } h2 { position: relative; padding: .25em 0 .5em .75em; border-left: 6px solid #3498db; } h2::after { position: absolute; left: 0; bottom: 0; content: ''; width: 100%; height: 0; border-bottom: 1px solid #ccc; } h3 { background: linear-gradient(transparent 70%, #a7d6ff 70%); } h4 { border-bottom: solid 3px #cce4ff; position: relative; } h4:after { position: absolute; content: " "; display: block; border-bottom: solid 3px #5472cd; bottom: -3px; width: 20%; } h5 { border-bottom: solid 3px black; } }
VScodeでメモを取ろう(VSNotes,Paste Image)
導入Extension
- VSNotes
- メモ用拡張
- Paste Image
- 画像をMarkDownに張り付ける
VSnote
- 保存先を設定
[F1] -> [VSNotes:Run setup]
でフォルダを指定、もしくは、"vsnotes.defaultNotePath"を直接記載
- ファイル名を設定
- デフォルトのまま利用
- "vsnotes.defaultNoteTitle": "{dt}_{title}.{ext}"
- {dt}:YYYY-MM-DD_HH-mm、{title}:<作成時に指定した名前>、{ext}:md
- タイトルにスペースが含まれる場合は、"_"に変換
- デフォルトのまま利用
テンプレートを設定
- memo用、mtg用テンプレートを作成
[Code]> [基本設定] > [ユーザースニペット]
で、markdown.json [Markdown]
を選択- テンプレート名を
vsnote_template_memo
、vsnote_template_mtg
とする。("vsnote_template_"は固定で、以降がテンプレート名になる) - 作成したテンプレートを "vsnotes.templates" で設定
- memo用をデフォルトのテンプレートに指定
- memo用、mtg用テンプレートを作成
使い方
[F1]キー=>ウィンドウ
で[VSNote : Create a New Note]
を選択- テンプレートを選択(省略した場合、デフォルトのテンプレートになる)
- ファイル名を入力(省略した場合、New_Noteになる)
Paste Image
- 保存先を設定
ファイル名を設定
- デフォルトのファイル名は、日時だけなので、対象ファイル名をプレフィックスに追加。"pasteImage.namePrefix"
使い方
- 貼り付けたい画像をコピー
- 張りたい場所に
Ctrl+Alt+V
Setting
- setting.json
"vsnotes.defaultNotePath": "c:\\Users\\XXXXXX\\Documents\\vsnotes", "vsnotes.noteTitleConvertSpaces": "_", "vsnotes.defaultNoteTitle": "{dt}_{title}.{ext}", "vsnotes.tokens": [ { "type": "datetime", "token": "{dt}", "format": "YYYY-MM-DD_HH-mm", "description": "Insert formatted datetime." }, { "type": "title", "token": "{title}", "description": "Insert note title from input box.", "format": "Untitled" }, { "type": "extension", "token": "{ext}", "description": "Insert file vsnotes.", "format": "md" } ], "vsnotes.templates": [ "memo", "mtg" ], "vsnotes.defaultSnippet": { "langId": "markdown", "name": "memo" }, "pasteImage.path": "${currentFileDir}/img", "pasteImage.prefix": "./", "pasteImage.namePrefix": "${currentFileNameWithoutExt}_"
"vsnote_template_memo": { "prefix": "vsnote_template_memo", "body": [ "---", "title: $TM_FILENAME_BASE", "date: $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE", "tags:", "\t- memo$1", "---", "", "# $2", "", "$3", ], "description": "Memo Template", }, "vsnote_template_mtg": { "prefix": "vsnote_template_mtg", "body": [ "---", "title: $TM_FILENAME_BASE", "date: $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE", "tags:", "\t- mtg$1", "---", "", "# $TM_FILENAME_BASE", "", "* date&time: $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE $2 - $3 @ $4", "* Attendees: $5", "", "## Agenda", "", "* $6", "", "## Notes", "", ], "description": "MTG Template", }
TODO管理に使おう(todotxt-mode)
導入Extension
- todotxt-mode
- todo.txtを便利にする
todotxt-mode
- タスク登録用のスニペットを作る
[Code]> [基本設定] > [ユーザースニペット]
で、plaintext [Plain Text]
を選択
- todo.txtとは
- プレーンテキスト1ファイルでタスク管理するために整備されたフォーマット
- x (A) YYYY-MM-DD task +project @context due:YYYY-MM-DD
- x:完了フラグ
- (A):優先度
- YYYY-MM-DD:完了日
- task:タスクの説明
- +project:プロジェクトタグ(任意)
- @context:コンテキストタグ(任意)
- due:YYYY-MM-DD:期日
- https://github.com/todotxt/todo.txt
- 使い方
- todo.txtファイルを作成し、vscodeで開く
- todoを登録
- "task" でスニペット登録しているので、
task
と打てば、保管される
- "task" でスニペット登録しているので、
- タスクが完了したら、完了日を入れて、完了フラグを立てる
ctrl+shift+x
- 優先度を変える
- 優先度を上げる:
ctrl+shift+a
- 優先度を下げる:
ctrl+shift+z
- 優先度を上げる:
- タスクをソート
- 期日でソート:
todotxt-mode.sortByDueDate
- プロジェクトでソート:
todotxt-mode.sortByProject
- 優先度でソート:
todotxt-mode.sortByPriority
- 期日でソート:
- 完了タスクをDoneファイルに移動
- done.txt に移動:
todotxt-mode.archiveTasks
- todo.txt に戻す:
todotxt-mode.moveTasksToTodo
- done.txt に移動:
- 補足情報をつける
- todo.txt に補足情報をMarkdonwで記載する。
- 補足情報部分を選択し、
todotxt-mode.createTaskNote
を実行し、補足情報を記載したMarkdonwファイルを作成 - 補足情報をつけたいタスクに、貼り付ける
Setting
- plaintext.json
"task": { "prefix": "task", "body": [ "(${1:A}) ${2:task} due:${CURRENT_YEAR}-${CURRENT_MONTH}-${3:$CURRENT_DATE}" ] }
■
開発環境構築
Cygwinのインスト ール
isetup.exe
を持ってきて、実行。
インストールパッケージは、ひとまず、デフォルトのまま。
パッケージの保存場所も適当に決める。
環境変数は以下を設定
* CYGWIN ntsec ※sambaを利用するならsmbntsecもつける、globはデフォルト有効なので不要 * HOME /home/{ユーザ名} * MAKE_MODE UNIX * SHELL /bin/bash
ただし、gvimを使っていると、HOMEとか書き換えられていると、もろもろ困るので、 環境変数に設定ではなく、★Cygwin.batに以下を追加する。
* set HOME=/home/%USERNAME% * set MAKE_MODE=UNIX * set SHELL=/bin/bash
Eclipseのインストール
pleiadesにするか、普通のやつにするか。。。
もろもろの設定負荷を考えると、pleiadesの方が効率的か。
tools.jar問題
Eclipseの「ヘルプ」→「Eclipseについて」→「インストール詳細」→「構成」タブで java.homeを確認する。 java.homeのパスが問題なければ、以下をpom.xmlに追加。
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.7</version>
<scope>system</scope>
<systemPath>${java.home}/lib/tools.jar</systemPath>
</dependency>
java.homeがおかしい場合は、eclipse.ini(Winならeclipse.exeと同じフォルダにある)に"-vm"オプションを追加します。なお"-vm"オプションは"-vmargs"の前に設定することを忘れずに。"-vmargs"以下はJVMへの引数として解釈されてしまいます。 例: ... -vm C:/Program Files/Java/jdk1.6.0_xx/bin/javaw.exe -vmargs ...
Cygwinのアンインストール
https://cygwin.com/faq/faq.html#faq.setup.uninstall-all
サービス(cron,cygserver,inetd,apache,postgresql,etc.)を削除。 1.1 cygrunsrv -Lで登録しているサービスを確認。この時点で、cygrunsrvがない場合は、スキップ。 1.2 cygrunsrv --stop
で停止 1.3 cygrunsrv --remove で削除 コマンドプロンプトも終了。
再インストール時に備え、マウントポイントを残しておきたければ、mount -mの出力をメモ。
/usr/bin/cyglsa-configでcyglsa.dllをインストールしていた場合は、LSA authentication packageの使用を停止。 5.1 レジストリの/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa/Authentication Packagesの値を、元のmsv1_0に戻す。 5.2 windowsを再起動
Cygwinのルートフォルダとサブフォルを全て削除。 6.1 パーミッションエラーになる場合は、Cygwinのルートフォルダからすべてをにフルコントロールをつけて、削除。 ディレクトリを右クリックし、プロパティからセキュリティタブで設定。
デスクトップ、スタートメニューのショートカット削除。
setup-x86{_64}.exeがインストール時に使ったダウンロードフォルダを削除
レジストリから削除 10.1 HKEY_LOCAL_MACHINE\SOFTWARE\Cygwinを削除。ただし、これまでの手順を進めていれば、空のはず。 10.2 HKEY_CURRENT_USER\SOFTWARE\Cygwinを削除。ただし、これまでの手順を進めていれば、空のはず。
Windows上でのvimの環境構築
いろいろと設定を変更していると、必要なプラグインを追加した時によくわからないエラーになったりする。
そのたびに、vimを入れ直したりするのは、非常に面倒なので、vimの設定について一度、ちゃんと整理してみる。
前提/構築環境
なお、以前にvimを使っていた人は、悪さしないように、以下のファイル等々を別の場所に移しておく。あとで、必要に応じて復旧する。
- $VIM配下
- $HOME\_vimrc
- $HOME\_gvimrc
- $HOME\vimfiles配下
インストール
:version (省略) システム vimrc: "$VIM\vimrc" ユーザ vimrc: "$HOME\_vimrc" 第2ユーザ vimrc: "$HOME\vimfiles\vimrc" 第3ユーザ vimrc: "$VIM\_vimrc" (省略) システム gvimrc: "$VIM\gvimrc" ユーザ gvimrc: "$HOME\_gvimrc" 第2ユーザ gvimrc: "$HOME\vimfiles\gvimrc" 第3ユーザ gvimrc: "$VIM\_gvimrc" (省略)
なお、$VIMや$HOMEがどこになっているかは、以下のコマンドで確認できる。
:echo $VIM :echo $HOME :echo $VIMRUNTIME
vimの設定ファイルであるvimrcは、上記の順に読み込まれ、同じパラメータに別の設定をした場合、あとに読まれるファイルで上書かれることになる。
そして、香り屋版のvimの場合、最初に読み込まれるシステムvimrcが同梱されている。つまり、香り屋版を使った場合、利用者は何も設定しなくても、このシステムvimrcの設定はされることになる。さらに、香り屋版に同梱のシステムvimrcから、設定の前に、$VIMRUNTIME/vimrc_example.vimも読み込んでいる。
したがって、香り屋版のvimをそのまま使っている場合、知らないうちに、以下のvimrcの設定が有効になっている。
(システムvimrcから読み込み): "$VIMRUNTIME\vimrc_example.vim" システム vimrc: "$VIM\vimrc" システム gvimrc: "$VIM\gvimrc"
そのため、プラグインを導入した際に、どうしてもエラー等が発生する場合には、上記の設定もちゃんと確認する必要がある。
ちなみに、香り屋版に同梱のシステムvimrcでは、このファイルの設定をskipするためのオプションが用意されている。
- $VIM/vimrc_local.vimが存在し、変数g:vimrc_local_finishに0以外の値が設定されていれば、香り屋版に同梱のシステムvimrcをskipする。
- $HOME/.vimrc_first.vimが存在し、変数g:vimrc_first_finishに0以外の値が設定されていれば、香り屋版に同梱のシステムvimrcをskipする。
- 上記のどちらかのファイルに、変数g:no_vimrc_exampleに0以外の値が設定されていれば、$VIMRUNTIME/vimrc_example.vimをskipする。
この辺りは、以下の議論で追加された?
https://github.com/vim-jp/issues/issues/331
非常に複雑になっており、わかりづらい。。。
上記を理解した上で、以下の様にvimrcを使い分けるのが良いと思われる。
neobundleをインストール
なにはなくとも、neobundleをインストールする。
基本的にhttps://github.com/Shougo/neobundle.vimに記載しているとおりにやればよい。ただし、Windowsの場合、パスが少しことなる。
- bundleフォルダを作成
- $HOME\vimfiles\bundleを作成する
- neobundleをcloneする
- vimrcを作成
- $HOME\vimfiles\vimrcを作成
2. のコマンドは以下のとおり。
> git clone https://github.com/Shougo/neobundle.vim $HOME\vimfiles\bundle\neobundle.vim
3. は以下の内容を記載。
" Note: Skip initialization for vim-tiny or vim-small. if !1 | finish | endif if has('vim_starting') set nocompatible " Be iMproved " Required: set runtimepath+=~/vimfiles/bundle/neobundle.vim/ endif " Required: call neobundle#begin(expand('~/vimfiles/bundle/')) " Let NeoBundle manage NeoBundle " Required: NeoBundleFetch 'Shougo/neobundle.vim' " My Bundles here: " Refer to |:NeoBundle-examples|. " Note: You don't set neobundle setting in .gvimrc! call neobundle#end() " Required: filetype plugin indent on " If there are uninstalled bundles found on startup, " this will conveniently prompt you to install them. NeoBundleCheck
あとは、適宜必要な設定を$HOME\vimfiles\vimrcに記載する。
githubで管理しているdotfilesを使う
github上でdotfilesを管理する人が多い。そうすることで、どの環境からでも同じ設定でvimを使うことができる。
Linuxでも使うことを考慮し、vimの設定ファイルは通例に習い.vimrc、.gvimrcとしておく。ただし、windowsでは、_vimrcやvimrcというファイル名のため、リンクを張って対応する。
- githubのレポジトリに登録
- 登録方法については、ここでは省略する。
- githubのレポジトリをclone
- ここでは、$GIT\dotfiles\.vimrc、$GIT\dotfiles\.gvimrcとする
- リンクを張る
C:\Windows\system32>mklink %HOMEPATH%"\vimfiles\vimrc" $GIT\dotfiles\.vimrc C:\Windows\system32>mklink %HOMEPATH%"\vimfiles\gvimrc" $GIT\dotfiles\.gvimrc
これで、ひと通りの環境構築完了。さて、エラーなく動くかな。。。
基本的なvimrcの設定について調べてみた
もろもろの諸事情により、vimを使うことになったので、基本的なvimrcの設定について調べてみた。
なお、確認環境はwindows7であり、gvim(香り屋版)とする。
ベース設定
"------------------------------------------------------------------------------- " ベース設定 "------------------------------------------------------------------------------- scriptencoding cp932 " このファイルのエンコード set nocompatible " vi互換しない
windows環境なので、vimrcのエンコードはcp932にしている。
エンコーディング設定
"------------------------------------------------------------------------------- " 内部エンコーディング設定 "------------------------------------------------------------------------------- set encoding=cp932 " 内部エンコーディング "------------------------------------------------------------------------------- " エンコーディング、ファイルフォーマット設定 "------------------------------------------------------------------------------- set fileencoding=cp932 " 基本文字コード set fileencodings=iso-2022-jp,cp932,sjis,euc-jp,utf-8 " 文字コード自動判別(優先順) set fileformat=dos " 基本ファイルフォーマット set fileformats=dos,unix,mac " ファイルフォーマット自動判別(優先順)
内部エンコーディングや、デフォルトのエンコードもcp932。
ファイルフォーマット(改行コード)は、dos(CRLF)。
システム設定
"------------------------------------------------------------------------------- " システム設定 "------------------------------------------------------------------------------- set nobackup " backupファイルを作らない set writebackup " ファイルの上書きの前にbackupファイルを作る " nobackupの場合は、上書きに成功したら削除される set backupdir=~/vimfiles/backup " backupファイルディレクトリ set swapfile " swapファイルを作る set directory=~/vimfiles/swap " swapファイルディレクトリ set confirm " 保存されていないファイルがあるとき、終了前に保存確認 set hidden " 保存されていないファイルがあるときでも、保存しないで他のファイルを表示 set autoread " 外部でファイルに変更がされた場合は読みなおす set browsedir=buffer " ファイル保存時の場所を、開いているファイルが有る場所に設定 set noerrorbells " エラー音抑止(gvimはgvimrcで指定) set novisualbell " ビジュアルベル抑止(gvimはgvimrcで指定) set visualbell t_vb= " ビープ音抑止(gvimはgvimrcで指定) set history=100 " コマンド、検索履歴数 set infercase " 補完の際の大文字小文字の区別しない set wildmenu " ファイル名補完有効 set wildmode=list:longest,full " 補完モード "補完モード " "" 最初のマッチのみを補完する。 " "full" 次のマッチを完全に補完する。最後のマッチの次には元の文字列が使われ、その次は再び最初のマッチが補完される " "longest" 共通する最長の文字列までが補完される。それ以上長い文字列を補完できないときは、次の候補に移る " "longest:full" "longest" と似ているが、'wildmenu' が有効ならばそれを開始する " "list" 複数のマッチがあるときは、全てのマッチを羅列する。 " "list:full" 複数のマッチがあるときは、全てのマッチを羅列し、最初のマッチを補完する " "list:longest" 複数のマッチがあるときは、全てのマッチを羅列し、共通する最長の文字列までが補完される set shellslash " Windowsで"/"を有効 set virtualedit+=block " 矩形選択でカーソル位置の制限を解除
念のため、swapと上書き前のbackupはとるようにしている。(まぁ、今どきいらない気もしますが。)
その他は、説明の通り。
表示設定
"------------------------------------------------------------------------------- " 表示設定 "------------------------------------------------------------------------------- set number " 行番号の表示 set ruler " 右下に行・列の番号を表示 set title " タイトル表示 set list " 不可視文字を表示 set listchars=eol:\|,tab:>-,trail:-,extends:>,precedes:<,nbsp:% " 不可視文字の置き換え設定 set display=uhex " 表示できない文字を16進数で表示 set matchpairs& matchpairs+=<:> " 対応括弧に<と>のペアを追加 set showmatch " 括弧の対応表示 set matchtime=1 " 括弧の対応表示時間[1/10秒] set laststatus=2 " 常にステータスラインを表示 "ステータスライン表示モード " "0" 一番下のウィンドウはステータスラインを表示しない " "1" ウィンドウが1つの時はステータスラインを表示しない 2つ以上ある場合は、ステータスラインを表示する " "2" 常にステータスラインを表示する set cmdheight=2 " コマンドラインの高さ (gvimはgvimrcで指定) set showcmd " 入力中のコマンドをステータスラインに表示 syntax on " シンタックスハイライト set cursorline " カーソル行をハイライト set cursorcolumn " カーソル位置のカラムのハイライト set colorcolumn=80 " 80行目に色を付ける colorscheme jellybeans " カラースキーマ(gvimはgvimrcで指定) set scrolloff=5 " 上下5行の視界を確保 set sidescrolloff=16 " 左右スクロール時の視界を確保 set sidescroll=1 " 左右スクロールは一文字づつ行う set backspace=indent,eol,start " バックスペースでインデントや改行を削除可能 set whichwrap=b,s,h,l,<,>,[,] " 左右移動で行跨ぎ可能 set nowrap " 折り返さない set textwidth=0 " テキストの最大幅を無効にする set ambiwidth=double " 全角記号(○、□等)の位置ズレ対応
listcharsは、適当な記号に置き換えてもいい。80行目への色付けも好みの問題。
gvimの場合は、colorschemeはgvimrcに記載する必要がある。
検索/置換設定
"------------------------------------------------------------------------------- " 検索/置換設定 "------------------------------------------------------------------------------- set ignorecase " 大/小文字無視 set smartcase " ただし大文字を含む検索の場合は大/小文字有効 set incsearch " インクリメンタルサーチ有効 set hlsearch " 検索結果ハイライト表示 set wrapscan " 検索をファイルの先頭へループする set gdefault " 置換の時 g オプションをデフォルトで有効
編集設定
"------------------------------------------------------------------------------- " 編集設定 "------------------------------------------------------------------------------- set clipboard=unnamed,autoselect " OSクリップボード使用、選択時自動コピー set tabstop=2 " タブ幅 set softtabstop=2 " タブ幅(編集時) set shiftwidth=2 " インデント幅 set smarttab " 行頭の<Tab>は"shiftwidth"、それ以外は"tabstop" set shiftround " インデントをshiftwidthの倍数に丸める set expandtab " タブの代わりにスペース set autoindent " 前行に合わせてインデント set smartindent " 前行の末尾に合わせてインデントを増減
プラグイン設定
"------------------------------------------------------------------------------- " ファイルタイプ設定(off) "------------------------------------------------------------------------------- filetype off " ファイルタイプの自動検出off filetype plugin off " ファイルタイプ別プラグインのロードoff filetype indent off " ファイルタイプ別インデントのロードoff "------------------------------------------------------------------------------- " ランタイムパス設定 "------------------------------------------------------------------------------- if has('vim_starting') set runtimepath+=~/vimfiles/bundle/neobundle.vim/ endif "------------------------------------------------------------------------------- " neobundle(プラグイン管理) "------------------------------------------------------------------------------- call neobundle#rc(expand('~/vimfiles/bundle/')) NeoBundle 'Shougo/neobundle.vim' "NeoBundle 'Shougo/vimproc', { " \ 'build' : { " \ 'windows' : 'make -f make_mingw32.mak', " \ 'cygwin' : 'make -f make_cygwin.mak', " \ 'mac' : 'make -f make_mac.mak', " \ 'unix' : 'make -f make_unix.mak', " \ }, " \ } NeoBundle 'Shougo/unite.vim' NeoBundle 'Shougo/vimfiler' NeoBundle 'Shougo/vimshell' " reST編集 NeoBundle 'Rykka/riv.vim' " zoom in/out NeoBundle 'thinca/vim-fontzoom' " textハイライト NeoBundle 'HybridText' " vim メモ NeoBundle 'glidenote/memolist.vim' NeoBundle 'fuenor/qfixgrep.git' " カッコ付け NeoBundle 'tpope/vim-surround' " This is a selected text. →S[ → This is [a selected text'.] " This is (a surrounded text). →ds( → This is a surrounded text. " This is 'a surrounded text'. →cs'( → This is ( a surrounded text ). " 整形 NeoBundle 'vim-scripts/Align' " ヤンク履歴利用 NeoBundle 'vim-scripts/YankRing.vim' " ステータスラインのハイライト NeoBundle 'itchyny/lightline.vim' " colorscheme NeoBundle 'nanotech/jellybeans.vim' NeoBundle 'altercation/vim-colors-solarized' NeoBundle 'therubymug/vim-pyte' NeoBundle 'w0ng/vim-hybrid' NeoBundle 'vim-scripts/twilight' NeoBundle 'jonathanfilip/vim-lucius' NeoBundle 'jpo/vim-railscasts-theme' NeoBundle 'vim-scripts/Wombat' NeoBundle 'tomasr/molokai' NeoBundle 'vim-scripts/rdark' NeoBundle 'ujihisa/unite-colorscheme' NeoBundleCheck "------------------------------------------------------------------------------- " ファイルタイプ設定(on) "------------------------------------------------------------------------------- filetype on " ファイルタイプの自動検出on filetype plugin on " ファイルタイプ別プラグインのロードon filetype indent on " ファイルタイプ別インデントのロードon
プラグインの設定を反映させるために、ファイルタイプを一旦offにして、プラグインのロード後にonにする。
プラグイン管理には、neobundleを利用。導入するプラグインは適宜読み替える。
gvim(香り屋版)は、vimprocを含んでいるので、別途インストールする必要なし。
各種プラグインの設定
"------------------------------------------------------------------------------- " unite "------------------------------------------------------------------------------- let g:unite_enable_start_insert = 0 " インサートモードで開始しない let g:unite_source_file_mru_filename_format = '' " file_mruの表示フォーマットを指定。 " 空にすると表示スピードが高速化される "------------------------------------------------------------------------------- " vimfiler "------------------------------------------------------------------------------- let g:vimfiler_as_default_explorer = 1 " vimデフォルトのエクスプローラをvimfilerで置き換える let g:vimfiler_safe_mode_by_default = 0 " セーフモードを無効にした状態で起動する "------------------------------------------------------------------------------- " riv(reST編集用) "------------------------------------------------------------------------------- let g:riv_fold_level = 0 "let g:riv_web_browser = '"C:\Program Files\Google\Chrome\Application\chrome.exe"' let g:riv_web_browser = '"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"' let g:riv_temp_path = 1 let g:riv_html_code_hl_style = "friendly" "------------------------------------------------------------------------------- " HybridText(textハイライト用) "------------------------------------------------------------------------------- autocm BufEnter * if &filetype == "" || &filetype == "text" | setlocal ft=hybrid | endif "------------------------------------------------------------------------------- " memolist(メモ管理用) "------------------------------------------------------------------------------- let g:memolist_memo_suffix = "txt" let g:memolist_template_dir_path = '~/vimmemo' let g:memolist_memo_date = "%Y-%m-%d %H:%M" "let g:memolist_memo_date = "epoch" "let g:memolist_memo_date = "%D %T" "let g:memolist_prompt_tags = 1 "let g:memolist_prompt_categories = 1 let g:memolist_qfixgrep = 1 let g:memolist_vimfiler = 1 let g:memolist_vimfiler_option = "-split -winwidth=50 -simple" "let g:memolist_unite = 1 "let g:memolist_unite_source = "file_rec" "let g:memolist_unite_option = "-auto-preview -start-insert" let g:memolist_path = '~/vimmemo' "let g:memolist_filename_prefix_none = 1 "------------------------------------------------------------------------------- " lightline(ステータスラインのハイライト) "------------------------------------------------------------------------------- " ステータスラインの上書くを抑止 let g:unite_force_overwrite_statusline = 0 let g:vimfiler_force_overwrite_statusline = 0 " 以下からのコピペ " http://d.hatena.ne.jp/itchyny/20130828/1377653592 let g:lightline = { \ 'colorscheme': 'wombat', \ 'mode_map': {'c': 'NORMAL'}, \ 'active': { \ 'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ] ] \ }, \ 'component_function': { \ 'modified': 'MyModified', \ 'readonly': 'MyReadonly', \ 'fugitive': 'MyFugitive', \ 'filename': 'MyFilename', \ 'fileformat': 'MyFileformat', \ 'filetype': 'MyFiletype', \ 'fileencoding': 'MyFileencoding', \ 'mode': 'MyMode' \ } \ } function! MyModified() return &ft =~ 'help\|vimfiler\|gundo' ? '' : &modified ? '+' : &modifiable ? '' : '-' endfunction function! MyReadonly() return &ft !~? 'help\|vimfiler\|gundo' && &readonly ? 'x' : '' endfunction function! MyFilename() return ('' != MyReadonly() ? MyReadonly() . ' ' : '') . \ (&ft == 'vimfiler' ? vimfiler#get_status_string() : \ &ft == 'unite' ? unite#get_status_string() : \ &ft == 'vimshell' ? vimshell#get_status_string() : \ '' != expand('%:t') ? expand('%:t') : '[No Name]') . \ ('' != MyModified() ? ' ' . MyModified() : '') endfunction function! MyFugitive() try if &ft !~? 'vimfiler\|gundo' && exists('*fugitive#head') return fugitive#head() endif catch endtry return '' endfunction function! MyFileformat() return winwidth(0) > 70 ? &fileformat : '' endfunction function! MyFiletype() return winwidth(0) > 70 ? (strlen(&filetype) ? &filetype : 'no ft') : '' endfunction function! MyFileencoding() return winwidth(0) > 70 ? (strlen(&fenc) ? &fenc : &enc) : '' endfunction function! MyMode() return winwidth(0) > 60 ? lightline#mode() : '' endfunction
プラグインごとに適当に。
lightlineを利用する際の注意として、unite/vimfilerのforce_overwrite_statuslineを無効にしておかないと、unite/vimfilerを利用した際、lightlineが有効にならない。(というか、上書かれる。)
(lightline公式の導入方法とかにも、注意として書いておいてくれればいいのに。。。)
マッピング/autocmd
"------------------------------------------------------------------------------- " Mapping "------------------------------------------------------------------------------- " map:キーシーケンスを展開したあと、さらに別のマップを適用 "noremap:一度だけ展開 "------------------------------------------------------------------------------- " コマンド ノーマル インサート コマンドライン ビジュアル " map/noremap @ - - @ " map!/noremap! - @ @ - " nmap/nnoremap @ - - - " imap/inoremap - @ - - " cmap/cnoremap - - @ - " vmap/vnoremap - - - @ "------------------------------------------------------------------------------- "--------------------------------------- " Prefix nnoremap [space] <Nop> nmap <Space> [space] xmap <Space> [space] nnoremap [Window] <Nop> nmap <Space>w [Window] nnoremap [Tag] <Nop> nmap <Space>t [Tag] nnoremap [unite] <Nop> nmap <Space>u [unite] nnoremap [vimfiler] <Nop> nmap <Space>f [vimfiler] "--------------------------------------- " uniteマッピング "現在開いているファイルのディレクトリ下のファイル一覧。 "開いていない場合はカレントディレクトリ nnoremap <silent> [unite]f :<C-u>UniteWithBufferDir -buffer-name=files file<CR> " バッファ一覧 nnoremap <silent> [unite]b :<C-u>Unite buffer<CR> " レジスタ一覧 nnoremap <silent> [unite]r :<C-u>Unite -buffer-name=register register<CR> " 最近使用したファイル一覧 nnoremap <silent> [unite]m :Unite file_mru<CR> " ブックマーク一覧 nnoremap <silent> [unite]c :<C-u>Unite bookmark<CR> " ブックマークに追加 nnoremap <silent> [unite]a :<C-u>UniteBookmarkAdd<CR> augroup vimrc autocmd FileType unite call s:unite_my_settings() augroup END function! s:unite_my_settings() "ESCでuniteを終了 nmap <buffer> <ESC> <Plug>(unite_exit) "入力モードのときjjでノーマルモードに移動 imap <buffer> jj <Plug>(unite_insert_leave) "入力モードのときctrl+wでバックスラッシュも削除 imap <buffer> <C-w> <Plug>(unite_delete_backward_path) "sでsplit nnoremap <silent><buffer><expr> s unite#smart_map('s', unite#do_action('split')) inoremap <silent><buffer><expr> s unite#smart_map('s', unite#do_action('split')) "vでvsplit nnoremap <silent><buffer><expr> v unite#smart_map('v', unite#do_action('vsplit')) inoremap <silent><buffer><expr> v unite#smart_map('v', unite#do_action('vsplit')) "fでvimfiler nnoremap <silent><buffer><expr> f unite#smart_map('f', unite#do_action('vimfiler')) inoremap <silent><buffer><expr> f unite#smart_map('f', unite#do_action('vimfiler')) endfunction "--------------------------------------- " VimFilerマッピング "現在開いているバッファのディレクトリを開く nnoremap <silent> [vimfiler]e :<C-u>VimFilerBufferDir -quit<CR> "現在開いているバッファをIDE風に開く nnoremap <silent> [vimfiler]i :<C-u>VimFilerBufferDir -split -simple -winwidth=35 -no-quit<CR> "デフォルトのキーマッピングを変更 augroup vimrc autocmd FileType vimfiler call s:vimfiler_my_settings() augroup END function! s:vimfiler_my_settings() nmap <buffer> q <Plug>(vimfiler_exit) nmap <buffer> Q <Plug>(vimfiler_hide) endfunction "--------------------------------------- " vimrc編集/反映 nnoremap [space]v :<C-u>tabedit $MYVIMRC<CR> nnoremap [space]g :<C-u>tabedit $MYGVIMRC<CR> nnoremap [space]s :<C-u>source $MYVIMRC<CR> \ :source $MYGVIMRC<CR> "--------------------------------------- " 半透明 autocmd GUIEnter * set transparency=220 autocmd FocusGained * set transparency=220 autocmd FocusLost * set transparency=128 "--------------------------------------- " インサートから抜けたら、IME解除 inoremap <silent> <ESC> <ESC>:set iminsert=0<CR> "--------------------------------------- " 全角スペース表示 function! ZenkakuSpace() highlight ZenkakuSpace cterm=reverse ctermfg=darkgreen gui=reverse guifg=darkgreen endfunction if has('syntax') augroup ZenkakuSpace autocmd! autocmd ColorScheme * call ZenkakuSpace() autocmd VimEnter,WinEnter,BufRead * match ZenkakuSpace / / augroup END endif "--------------------------------------- " タブページ用 " 以下のサイトからの転用 " http://qiita.com/wadako111/items/755e753677dd72d8036d " --- " tp : 前のタブ " tt : 次のタブ " t1, t2,,,t9 : 左からn番目のタブにジャンプ " tn : 新しいタブ " tx : タブを閉じる " --- " ----- 転用ここから(一部変更) ----- " Anywhere SID. function! s:SID_PREFIX() return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID_PREFIX$') endfunction " Set tabline. function! s:my_tabline() "{{{ let s = '' for i in range(1, tabpagenr('$')) let bufnrs = tabpagebuflist(i) let bufnr = bufnrs[tabpagewinnr(i) - 1] " first window, first appears let no = i " display 0-origin tabpagenr. let mod = getbufvar(bufnr, '&modified') ? '!' : ' ' let title = fnamemodify(bufname(bufnr), ':t') let title = '[' . title . ']' let s .= '%'.i.'T' let s .= '%#' . (i == tabpagenr() ? 'TabLineSel' : 'TabLine') . '#' let s .= no . ':' . title let s .= mod let s .= '%#TabLineFill# ' endfor let s .= '%#TabLineFill#%T%=%#TabLine#' return s endfunction "}}} let &tabline = '%!'. s:SID_PREFIX() . 'my_tabline()' set showtabline=2 " 常にタブラインを表示 " The prefix key. "nnoremap [Tag] <Nop> "nmap t [Tag] " Tab jump for n in range(1, 9) execute 'nnoremap <silent> [Tag]'.n ':<C-u>tabnext'.n.'<CR>' endfor " t1 で1番左のタブ、t2 で1番左から2番目のタブにジャンプ map <silent> [Tag]n :tablast <bar> tabnew<CR> " tc 新しいタブを一番右に作る map <silent> [Tag]x :tabclose<CR> " tx タブを閉じる map <silent> [Tag]t :tabnext<CR> " tn 次のタブ map <silent> [Tag]p :tabprevious<CR> " tp 前のタブ " ----- 転用ここまで ----- "--------------------------------------- " window操作用 " wn : 垂直分割(新規) " ws : 垂直分割(今のファイル) " wvn : 水平分割(新規) " wvs : 水平分割(今のファイル) " <C-W>w : 次のウィンドウに移動 " <C-W>p : 前のウィンドウに移動 " <C-W>h : 左のウィンドウに移動 " <C-W>j : 下のウィンドウに移動 " <C-W>k : 上のウィンドウに移動 " <C-W>l : 右のウィンドウに移動 " <C-W>q : ウィンドウを閉じる map <silent> [Window]n :new<CR> map <silent> [Window]s :sp<CR> map <silent> [Window]vn :vne<CR> map <silent> [Window]vs :vs<CR> "map <silent> [Window]w <C-W>w<CR> "map <silent> [Window]p <C-W>p<CR> "map <silent> [Window]h <C-W>h<CR> "map <silent> [Window]j <C-W>j<CR> "map <silent> [Window]k <C-W>k<CR> "map <silent> [Window]l <C-W>l<CR> "map <silent> [Window]x <C-W>q<CR> nnoremap <silent> <S-Left> <C-w>h<CR> nnoremap <silent> <S-Down> <C-w>j<CR> nnoremap <silent> <S-Up> <C-w>k<CR> nnoremap <silent> <S-Right> <C-w>l<CR>
ここが、vimで自分らしさを発揮するところ。
上記は、個人的に役立ちそうなものを設定している。
vim初心者は、とりあえずvimrc編集/反映のマッピングだけ設定しておいて、あとは、必要になった段階で試考錯誤しながら、自分で追加するのが良いのではないでしょうか。
まとめ
よければ、ご参考までに。
認識が誤っている箇所、もっと良い方法があれば、コメントいただけると幸いです。
vimrc初心者向け(本人が初心者のため)
もろもろのサイトから集めた情報で作ってみたvimrc(Windows用)。
必要最低限にしておいて、あとは、適宜、修正する。
おすすめ!というわけではないが、これくらい設定しておけば、とりあえず、困らないと思われる。
あ、rivはreST編集用なので、不要なら外す。
scriptencoding cp932 " このファイルのエンコード set nocompatible " vi互換しない "------------------------------------------------------------------------------- " ファイルタイプ設定(off) "------------------------------------------------------------------------------- filetype off " ファイルタイプの自動検出off filetype plugin off " ファイルタイプ別プラグインのロードoff filetype indent off " ファイルタイプ別インデントのロードoff "------------------------------------------------------------------------------- " 内部エンコーディング設定 "------------------------------------------------------------------------------- set encoding=cp932 " 内部エンコーディング "------------------------------------------------------------------------------- " エンコーディング、ファイルフォーマット設定 "------------------------------------------------------------------------------- set fileencoding=cp932 " 基本文字コード set fileencodings=iso-2022-jp,cp932,sjis,euc-jp,utf-8 " 文字コード自動判別(優先順) set fileformat=dos " 基本ファイルフォーマット set fileformats=dos,unix,mac " ファイルフォーマット自動判別(優先順) "------------------------------------------------------------------------------- " システム設定 "------------------------------------------------------------------------------- set nobackup " backupファイルを作らない set writebackup " ファイルの上書きの前にbackupファイルを作る " nobackupの場合は、上書きに成功したら削除される set backupdir=~/vimfiles/backup " backupファイルディレクトリ set swapfile " swapファイルを作る set directory=~/vimfiles/swap " swapファイルディレクトリ set confirm " 保存されていないファイルがあるとき、終了前に保存確認 set hidden " 保存されていないファイルがあるときでも、保存しないで他のファイルを表示 set autoread " 外部でファイルに変更がされた場合は読みなおす set browsedir=buffer " ファイル保存時の場所を、開いているファイルが有る場所に設定 set noerrorbells " エラー音抑止(gvimはgvimrcで指定) set novisualbell " ビジュアルベル抑止(gvimはgvimrcで指定) set visualbell t_vb= " ビープ音抑止(gvimはgvimrcで指定) set history=100 " コマンド、検索履歴数 set infercase " 補完の際の大文字小文字の区別しない set wildmenu " ファイル名補完有効 set wildmode=list:longest,full " 補完モード "補完モード " "" 最初のマッチのみを補完する。 " "full" 次のマッチを完全に補完する。最後のマッチの次には元の文字列が使われ、その次は再び最初のマッチが補完される " "longest" 共通する最長の文字列までが補完される。それ以上長い文字列を補完できないときは、次の候補に移る " "longest:full" "longest" と似ているが、'wildmenu' が有効ならばそれを開始する " "list" 複数のマッチがあるときは、全てのマッチを羅列する。 " "list:full" 複数のマッチがあるときは、全てのマッチを羅列し、最初のマッチを補完する " "list:longest" 複数のマッチがあるときは、全てのマッチを羅列し、共通する最長の文字列までが補完される set shellslash " Windowsで"/"を有効 set virtualedit+=block " 矩形選択でカーソル位置の制限を解除 "------------------------------------------------------------------------------- " 表示設定 "------------------------------------------------------------------------------- set number " 行番号の表示 set ruler " 右下に行・列の番号を表示 set title " タイトル表示 set list " 不可視文字を表示 set listchars=eol:$,tab:>-,trail:-,extends:>,precedes:<,nbsp:% " 不可視文字の置き換え設定 set display=uhex " 表示できない文字を16進数で表示 set matchpairs& matchpairs+=<:> " 対応括弧に<と>のペアを追加 set showmatch " 括弧の対応表示 set matchtime=1 " 括弧の対応表示時間[1/10秒] set laststatus=2 " 常にステータスラインを表示 "ステータスライン表示モード " "0" 一番下のウィンドウはステータスラインを表示しない " "1" ウィンドウが1つの時はステータスラインを表示しない 2つ以上ある場合は、ステータスラインを表示する " "2" 常にステータスラインを表示する set cmdheight=2 " コマンドラインの高さ (gvimはgvimrcで指定) set showcmd " 入力中のコマンドをステータスラインに表示 syntax on " シンタックスハイライト set cursorline " カーソル行をハイライト set cursorcolumn " カーソル位置のカラムのハイライト "colorscheme desert " カラースキーマ(gvimはgvimrcで指定) set scrolloff=5 " 上下5行の視界を確保 set sidescrolloff=16 " 左右スクロール時の視界を確保 set sidescroll=1 " 左右スクロールは一文字づつ行う set backspace=indent,eol,start " バックスペースでインデントや改行を削除可能 set whichwrap=b,s,h,l,<,>,[,] " 左右移動で行跨ぎ可能 set nowrap " 折り返さない set textwidth=0 " テキストの最大幅を無効にする set ambiwidth=double " 全角記号(○、□等)の位置ズレ対応 "------------------------------------------------------------------------------- " 検索/置換設定 "------------------------------------------------------------------------------- set ignorecase " 大/小文字無視 set smartcase " ただし大文字を含む検索の場合は大/小文字有効 set incsearch " インクリメンタルサーチ有効 set hlsearch " 検索結果ハイライト表示 set wrapscan " 検索をファイルの先頭へループする set gdefault " 置換の時 g オプションをデフォルトで有効 "------------------------------------------------------------------------------- " 編集 "------------------------------------------------------------------------------- set clipboard=unnamed,autoselect " OSクリップボード使用、選択時自動コピー set tabstop=2 " タブ幅 set softtabstop=2 " タブ幅(編集時) set shiftwidth=2 " インデント幅 set smarttab " 行頭の<Tab>は"shiftwidth"、それ以外は"tabstop" set shiftround " インデントをshiftwidthの倍数に丸める set expandtab " タブの代わりにスペース set autoindent " 前行に合わせてインデント set smartindent " 前行の末尾に合わせてインデントを増減 "------------------------------------------------------------------------------- " ランタイムパス設定 "------------------------------------------------------------------------------- if has('vim_starting') set runtimepath+=~/vimfiles/bundle/neobundle.vim/ endif "------------------------------------------------------------------------------- " neobundle "------------------------------------------------------------------------------- call neobundle#rc(expand('~/vimfiles/bundle/')) NeoBundle 'Shougo/neobundle.vim' NeoBundle 'Shougo/vimproc' "NeoBundle 'Shougo/vimproc', { " \ 'build' : { " \ 'windows' : 'make -f make_mingw32.mak', " \ 'cygwin' : 'make -f make_cygwin.mak', " \ 'mac' : 'make -f make_mac.mak', " \ 'unix' : 'make -f make_unix.mak', " \ }, " \ } NeoBundle 'Shougo/unite.vim' NeoBundle 'nanotech/jellybeans.vim' NeoBundle 'Rykka/riv.vim' NeoBundleCheck "------------------------------------------------------------------------------- " ファイルタイプ設定(on) "------------------------------------------------------------------------------- filetype on " ファイルタイプの自動検出on filetype plugin on " ファイルタイプ別プラグインのロードon filetype indent on " ファイルタイプ別インデントのロードon "------------------------------------------------------------------------------- " riv "------------------------------------------------------------------------------- let g:riv_fold_level = 1 let g:riv_web_browser = '"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"' let g:riv_temp_path = 0 let g:riv_html_code_hl_style = "friendly" "------------------------------------------------------------------------------- " mapping e.t.c. "------------------------------------------------------------------------------- "--------------------------------------- " Space prefix nnoremap [space] <Nop> nmap <Space> [space] xmap <Space> [space] "--------------------------------------- " vimrc編集/反映 nnoremap [space]v :<C-u>tabedit $MYVIMRC<CR> nnoremap [space]g :<C-u>tabedit $MYGVIMRC<CR> nnoremap [space]s :<C-u>source $MYVIMRC<CR> \ :source $MYGVIMRC<CR> "--------------------------------------- " インサートから抜けたら、IME解除 inoremap <silent> <ESC> <ESC>:set iminsert=0<CR> "--------------------------------------- " 全角スペース表示 function! ZenkakuSpace() highlight ZenkakuSpace cterm=reverse ctermfg=darkgreen gui=reverse guifg=darkgreen endfunction if has('syntax') augroup ZenkakuSpace autocmd! autocmd ColorScheme * call ZenkakuSpace() autocmd VimEnter,WinEnter,BufRead * match ZenkakuSpace / / augroup END endif "--------------------------------------- " タブページ用 " 以下のサイトからの転用 " http://qiita.com/wadako111/items/755e753677dd72d8036d " --- " tp で前のタブ、tn で次のタブ " t1, t2,,,t9 で左からn番目のタブにジャンプ " tc で新しいタブ, txでタブを閉じる " --- " ----- 転用ここから ----- " Anywhere SID. function! s:SID_PREFIX() return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID_PREFIX$') endfunction " Set tabline. function! s:my_tabline() "{{{ let s = '' for i in range(1, tabpagenr('$')) let bufnrs = tabpagebuflist(i) let bufnr = bufnrs[tabpagewinnr(i) - 1] " first window, first appears let no = i " display 0-origin tabpagenr. let mod = getbufvar(bufnr, '&modified') ? '!' : ' ' let title = fnamemodify(bufname(bufnr), ':t') let title = '[' . title . ']' let s .= '%'.i.'T' let s .= '%#' . (i == tabpagenr() ? 'TabLineSel' : 'TabLine') . '#' let s .= no . ':' . title let s .= mod let s .= '%#TabLineFill# ' endfor let s .= '%#TabLineFill#%T%=%#TabLine#' return s endfunction "}}} let &tabline = '%!'. s:SID_PREFIX() . 'my_tabline()' set showtabline=2 " 常にタブラインを表示 " The prefix key. nnoremap [Tag] <Nop> nmap t [Tag] " Tab jump for n in range(1, 9) execute 'nnoremap <silent> [Tag]'.n ':<C-u>tabnext'.n.'<CR>' endfor " t1 で1番左のタブ、t2 で1番左から2番目のタブにジャンプ map <silent> [Tag]c :tablast <bar> tabnew<CR> " tc 新しいタブを一番右に作る map <silent> [Tag]x :tabclose<CR> " tx タブを閉じる map <silent> [Tag]n :tabnext<CR> " tn 次のタブ map <silent> [Tag]p :tabprevious<CR> " tp 前のタブ " ----- 転用ここまで -----
Pythonでグラフを書く(Windows)
Windows端末で、Pythonを使ってグラフを書くことをめざす。
最終的には、Linuxサーバのリソースデータ(sar、vmstat e.t.c.)をPythonでパースしてグラフ化したい。グラフ化には、Matplotlibを使うのが良さそう。
なので、以下、インストール時のメモ。
準備(インストール)
インストール
- Pythonのインストール
- Numerical Python
- > easy_install numpy
- しかし、エラー発生。Unable to find vcvarsall.bat
- 少し調べたところ、Visual C++ 2008 Express Editionをインストールすればいいらしい。
- exe版:http://go.microsoft.com/?LinkId=9348304
- iso版:http://go.microsoft.com/?LinkId=9348306
- exe版は、インストール後30日以内にユーザ登録が必要。iso版は、登録不要だが、VC++以外も含まれているため、サイズが大きい。
- もろもろ面倒なので、easy_installを利用せず、インストーラを使うことにする。
- 64bit用のインストーラは、Officialでは用意されていないので、以下のサイトから取得する。
- http://www.lfd.uci.edu/~gohlke/pythonlibs/
- numpy-MKL-1.7.1.win-amd64-py2.7.exe
- http://www.lfd.uci.edu/~gohlke/pythonlibs/
- > easy_install numpy
- Matplotlib
- > easy_install matplotlib
- 上記同様のエラーになったため、インストーラを利用する。
- http://matplotlib.org/downloads.html
- matplotlib-1.3.0.win-amd64-py2.7.exe
- > easy_install matplotlib
- dateutil
- > easy_install dateutil
- Pyparsing
- > easy_install pyparsing
使ってみる
以下のサイトあたりから、適当なグラフを書いてみる。
無事にグラフが表示されれば、完了。