Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all 5757 articles
Browse latest View live

vimのカラースキーマをネットから落としたシャレオツな奴に変更したいよ

$
0
0

以下の記事を見てたら自分のデフォルトのカラースキーマがなんだか非常に物足りなくなってきたので、変更してみた。

[vim] 黒背景好きの僕の心を揺さぶるカラースキーム「hybrid」

https://github.com/tomasr/molokai

今回はこのカラースキーマに変更してみました。

sudo mkdir -p ~/.vim/colors

zipで落としたリポジトリを.vim配下に新しく作成したcolorフォルダにコピーする。

sudo mv ~/Downloads/molokai.vim ~/.vim/colors/molokai.vim

【Vim】Conceal機能ってぶっちゃけ見にくいと思う

$
0
0

Conceal機能とは

Vim7.3からの新機能らしい.
今回は標準で有効にされちゃってるTeXについて扱います.
下で例を示しますが,一部をマルチバイト文字使ってオシャレに置き換えをしてくれます.

参考:【VIM】新機能“CONCEAL”構文属性を使う

  • 数式
 \left( 
   \sum_{k=1}^n a_k b_k \right)^{\!\!2} 
   \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 
  \right) 
  • TeX
\left( 
   \sum_{k=1}^n a_k b_k \right)^{\!\!2}\leq\left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 
  \right) 
  • 数式
\int^{\infty}_{0} 
\frac{x^p}{e^x-1}dx = \Gamma(p+1)\zeta(p+1)
  • TeX
\int^{\infty}_{0}\frac{x^p}{e^x-1}dx = \Gamma(p+1)\zeta(p+1)
  • Conceal スクリーンショット 2014-05-14 22.21.17.png

無効化しよう

以下の理由から無効化します

  • ぶっちゃけ僕は見にくいと思う
    • 適切な色設定をすれば見やすくなるかもしれない
  • 編集中に置き換えた文字から通常の文字に戻すときに展開されてカーソルがあっちこっち移動するのがうざい
    • これが致命的!カーソルの位置と編集してる文字が一致しない
  • \$\$ \$\$ や \[ \] が見えなくされるのが有り得ない

無効化は.vimrcに追記することでできます.

"" texのconcealを無効化(#^ω^)letg:tex_conceal=''

Vimのマーク機能、使い方まとめ

$
0
0

この記事は Vim Advent Calendar 2013 166日目の記事になります。

はじめに

皆さん、vimのマーク機能使ってますか?

私はあまり使っていませんでした。

しかし、使う機会があったので、これを期に、vimのマーク機能についてまとめてみました。

ちなみに、マーク機能というのは、簡単に言うと、現在地の登録と登録したポイントへのジャンプ機能のことです。

マークを使うことで、現在地を登録しておき、必要になれば、そこにジャンプできます。

基本

コマンド内容
:marksmark一覧を表示する
m[a-zA-Z]カーソル位置をmarkする
``直前のマークへ移動
C-o古いマークへ移動
C-i新しいマークへ移動
`[a-zA-Z]指定のマークに移動
'[a-zA-Z]指定のマークの行頭に移動
:delmarks [a-zA-Z]マークの削除
:delmarks!マークの一括削除

http://vim.wikia.com/wiki/Using_marks

viminfo

mark情報が保存される仕組みは、viminfoにあります。

mark情報は、viminfoを使わないとvimの終了と同時に失われます。

viminfoには、以下の様な情報が記録されます。

viminfoファイルにはこんなものを記憶できる:
- コマンドラインの履歴
- 検索文字列の履歴
- 入力(|input()|)の履歴
- レジスタの内容
- 複数のファイルのマーク
- ファイルの中の位置を指し示すマーク
- 最後の検索/置換パターン('n' と '&' のため)
- バッファのリスト
- グローバル変数

http://vim-jp.org/vimdoc-ja/usr_21.html#21.3

個人的な設定

個人的には、m,を押すと、uniteでマーク一覧を選択して移動できるようにしています。これは、unite-markを使用します。

あと、マークするには、mを押せば、自動でレジスタが選択されるようにしています。

マーク箇所をハイライトしたい場合などは、visualmark.vimを使えばできます。

~/.vimrc
NeoBundle 'Shougo/unite.vim'
NeoBundle 'tacroe/unite-mark'
NeoBundle 'visualmark.vim'
vimrc
" viminfo" http://vimwiki.net/?%27viminfo%27setviminfo='50,\"1000,:0,n~/.vim/viminfo" unite mark" https://github.com/tacroe/unite-mark" http://d.hatena.ne.jp/tacroe/20101119/1290115586nnoremap<silent>m, :Unite mark<CR>" mark auto reg" http://saihoooooooo.hatenablog.com/entry/2013/04/30/001908if!exists('g:markrement_char')letg:markrement_char = [
    \     'a','b','c','d','e','f','g','h','i','j','k','l','m',
    \     'n','o','p','q','r','s','t','u','v','w','x','y','z'
    \ ]
endifnnoremap<silent>m :<C-u>call<SID>AutoMarkrement()<CR>function!s:AutoMarkrement()if!exists('b:markrement_pos')letb:markrement_pos =0elseletb:markrement_pos =(b:markrement_pos +1) % len(g:markrement_char)endif
    execute 'mark'g:markrement_char[b:markrement_pos]
    echo 'marked'g:markrement_char[b:markrement_pos]
endfunction" visualmark.vim" http://nanasi.jp/articles/vim/visualmark_vim.html" map <unique> <C-F3> <Plug>Vm_toggle_sign

http://vimwiki.net/?%27viminfo%27
http://d.hatena.ne.jp/tacroe/20101119/1290115586
http://saihoooooooo.hatenablog.com/entry/2013/04/30/001908

ヘルプ

マーク

マーク mark-motionsE20E78

マークへジャンプするには2つの方法があります:
1. ` (バッククォート)で : カーソルは指定された位置に置かれます。|exclusive|
2. ' (シングルクォート)で: カーソルは指定された位置の行の最初の非空白文字に置
かれ移動は行単位です。

                  *m* *mark* *Mark*

m{a-zA-Z} カーソル位置を{a-zA-Z}にマークします(これは移動コマン
ドではありません。ですのでカーソルは動きません)。

                  *m'* *m`*

m' or m直前位置マークをセットします。"''" もしくは "`" コマ
ンドでこの位置に移動できます。(移動コマンドではありま
せん。ですのでカーソルは動きません)。

                  *m[* *m]*

m[ or m] マーク |'[| or |']| をセットします。オペレータコマンド
が複数のコマンドでシミュレートされるときに便利です。
(移動コマンドではありません。ですのでカーソルは動きま
せん)。

                  *m<* *m>*

m< or m> マーク |'<| or |'>| をセットします。gvコマンドで選
択される範囲を変更するのに便利です。 (移動コマンドあり
ません。ですのでカーソルは動きません)。
Note ビジュアルモードは設定できません。開始と終了の位
置のみ設定できます。

                  *:ma* *:mark* *E191*

:[range]ma[rk] {a-zA-Z'}
[range]の範囲の最後の行番号の0桁目を{a-zA-Z}にマーク
します。デフォルトはカーソル行です。

                  *:k*

:[range]k{a-zA-Z'} :mark コマンドと同じですが、マーク名の前のスペースは挿
入しなくてもよいです。

                  *'* *'a* *`* *`a*

'{a-z} `{a-z} カレントバッファのマーク {a-z} へジャンプ。

                  *'A* *'0* *`A* *`0*

'{A-Z0-9} `{A-Z0-9} マーク {A-Z0-9} を含むファイル・位置へジャンプ。
(別のファイルにある場合は移動コマンドにはなりません)。
{Vi にはありません}

                  *g'* *g'a* *g`* *g`a*

g'{mark} g{mark}
{mark} へジャンプするが、カレントバッファ内で移動する
場合にはジャンプリストを変更しない。例: >
g
"
< これはファイル内の最後の記憶している位置にジャンプする。
$VIMRUNTIME/vimrc_example.vim を参照。
|:keepjumps|も参照。
{Vi にはありません}

                  *:marks*

:marks 現在のマークを全てリストします(移動コマンドではありま
せん)。
|'(|, |')|, |'{| と |'}| マークはリストされません。
1桁目は桁番号0となります。
{Vi にはありません}

                  *E283*

:marks {arg} {arg} で指定されるマークをリストします(移動コマンドで
はありません)。例: >
:marks aB
< マーク 'a' と 'B' をリストします。{Vi にはありません}

                      *:delm* *:delmarks*

:delm[arks] {marks} 指定されたマークを削除します。削除できるマークはA-Zと
0-9などです。マーク'は削除できません。それらはダッシュ
で区切られたマーク名のリストを与えることで指定できます。
スペースは無視されます。例: >
:delmarks a マークaを削除する
:delmarks a b 1 マークa, b, 1を削除する
:delmarks Aa マークA, aを削除する
:delmarks p-z pからzまでのマークを削除する
:delmarks ^.[] マーク^ . [ ]を削除する
:delmarks \" マーク"を削除する
< {Vi にはありません}

:delm[arks]! A-Z, 0-9を除くカレントバッファのすべてのマークを削除し
ます。
{Vi にはありません}

マークはどのようにしても見えません。マークは単に覚えておかれるファイル中の位置
に過ぎません。マークと名前付きレジスタを混同しないようにしてください、まったく
別のものです。

'a - 'z 小文字のマークです。1つのファイル中で有効です。
'A - 'Z 大文字のマークで、ファイルマークとも呼ばれます。ファイル間でも
有効です。
'0 - '9 番号マークです。.viminfo ファイルによってセットされます。

小文字のマーク 'a から 'z まではマークのあるファイルがバッファリストに存在す
る限り覚えておかれます。もしファイルをバッファリストから削除するとそのファイ
ルに関するマーク一は全て失われます。またマークを含んでいる行を削除するとその
マークは消されます。

小文字のマークはオペレータコマンドとともに使うことができます。例:
"d't" は現在のカーソル位置からマーク 't' までの行を削除します。アイディア:
マーク 't' をTop 位置に設定したり、'b' を Bottom 位置に設定したりします。小文
字のマークはアンドゥとリドゥによって復元することができます。

大文字のマーク 'A' から 'Z' はファイル名を含んでいます。{Vi: 大文字のマークは
ありません} ファイルからファイルに移動するのに使うことができます。大文字のマー
クをオペレータコマンドとともに使うにはマークは現在のファイルになければなりませ
ん。また大文字のマークの場合は行を挿入/削除したり一時的に他のファイルを編集し
たりしてもマークのある行番号は覚えておかれます。'viminfo' オプションの値が空で
なければ大文字のマークは .viminfo ファイルに保持されます。参照:
|viminfo-file-marks|

番号マーク '0 から '9 まではこれらとはまったく異なります。直接セットすることは
できず、viminfo ファイル |viminfo-file| を使っている場合にのみ存在します。基本
的に '0 は最後に Vim を終了したときのカーソル位置であり、'1 は最後から1個前の
位置、などなどです。特定のファイルを番号マークに保存しないようにするには
'viminfo' の "r" フラグを使ってください。参照: |viminfo-file-marks|

                      *'[* *`[*

'[ `[ 直前に変更またはヤンクされたテキストの最初の文字
へ移動します。
{Vi にはありません}

                      *']* *`]*

'] `] 直前に変更またはヤンクされたテキストの最後の文字
へ移動します。
{Vi にはありません}

なんらかのオペレータコマンドを実行した後は、カーソルはオペレータを施したテキス
トの初めに置かれます。プットコマンド("p" もしくは "P")の後は、カーソルは挿入さ
れた最初の行に位置する場合と最後に挿入された文字に位置する場合があります。上の
4つのコマンドはカーソルをどちらかの終わりに位置させます。例: 10行ヤンクした後、
その行の内の最後の行に移動したい場合は: "10Y']"。数行を "p" コマンドで挿入した
後、1番下に挿入された行に移動したい場合は: "p']"。これはすでに挿入済みのテキス
トに関しても動作させることができます。

Note: 矩形ビジュアルモードを使っているのでない限り、テキストの削除の後は始めと
終わりの位置は同じです。これらのコマンドは、現在のファイルに対してまだ変更がさ
れていない場合は動作しません。

                      *'<* *`<*

'< < 現在のバッファで最後に選択されたビジュアルエリアの最初
の行('<)または最初の文字(
<)に移動します。ブロックモー
ドでは最初の行の最後の文字になる場合もあります(選択の
開始位置による)。{Vi にはありません}

                      *'>* *`>*

'> > 現在のバッファで最後に選択されたビジュアルエリアの最後
の行('<)または最後の文字(
<)に移動します。ブロックモー
ドでは最後の行の最初の文字になる場合もあります(選択の
'selection' が適用され、位置はビジュアルエリアの直後に
開始位置による)。{Vi にはありません}

                      *''* *``*

'' `カーソルがジャンプする直前にいた、もしくは最後の "m'"
か "m
" コマンドが行われた位置に移動します。
|:keepjumps| コマンドモディファイヤが使われた場合には
セットされません。
|restore-position| も参照。

                      *'quote* *`quote*

'" `" 現在のバッファを最後に終了した時のカーソル位置に
移動します。デフォルトで最初の行の最初の文字に移動しま
す。それぞれの開いたファイルでこれをどのようにして使う
かについては |last-position-jump|をご覧下さい。
ウィンドウごとに1つではなく、バッファに対して1つの位
置が記憶されます。バッファがあるウィンドウに表示されて
いる間はその位置は変わりません。
{Vi にはありません}

                      *'^* *`^*

'^ `^ 最後に挿入モードが終了したときのカーソル位置に移動しま
す。これは |gi| コマンドで使われます。
|:keepjumps| コマンドモディファイヤが使われたときは
セットされません。
{Vi にはありません}

                      *'.* *`.*

'. `. 最後に変更された場所に移動します。変更が始まった場所
かその近くです。1つのコマンドが複数の変更をすることも
あります。その場合は、変更の最後の近くになります。例え
ば、単語を入力をしたときは、最後の文字の上になります。
{Vi にはありません}

                      *'(* *`(*

'( `( |(| コマンドのように、現在の文の最初に移動します。
{Vi にはありません}

                      *')* *`)*

') `) |)| コマンドのように、現在の文の最後に移動します。
{Vi にはありません}

                      *'{* *`{*

'{ `{ |{| コマンドのように、現在の段落の最初に移動します。
{Vi にはありません}

                      *'}* *`}*

'} `} |}| コマンドのように、現在の段落の最後に移動します。
{Vi にはありません}

これらのコマンドは、それ自身はマークではなく、マークへジャンプします:

                      *]'*

]' カーソルがある行から [count] 個先の小文字のマークがあ
る行の最初の非空白文字へ移動します。
{Vi にはありません}

                      *]`*

]` カーソル位置以降の [count] 個先の小文字のマークへ移動
します。
{Vi にはありません}
['
[' カーソルがある行から [count] 個前の小文字のマークがあ
る行の最初の非空白文字へ移動します。
{Vi にはありません}

                      *[`*

[` カーソル位置より [count] 個前の小文字のマークへ移動し
ます。
{Vi にはありません}

:loc[kmarks] {command} :loc:lockmarks
マークを調整することなく {command} を実行します。
{訳注: 普通にコマンドを実行したときはマーク位置が調整
される}
これは、完了したときの行数が実行前と変わらないような変
更をするときに便利です。
警告:行数が変わった場合には、変更箇所以降のマークは以
前の行番号を持ち続けるので、別の行に移動することになり
ます。
以下のものが行の削除・挿入後に調整されません:
- 小文字のマーク 'a - 'z
- 大文字のマーク 'A - 'Z
- 番号マーク '0 - '9
- 最後の挿入箇所 '^
- 最後の変更箇所 '.
- ビジュアルエリア '< と '>
- 目印が設置された行の番号
- quickfix 箇所の行番号
- |jumplist| 内の位置
- |tagstack| 内の位置
以下のものは調整されます:
- 直前の文脈マーク ''
- カーソル位置
- the view of a window on a buffer
- 折り畳み
- diffs

:kee[pmarks] {command} :kee:keepmarks
現在のところ、フィルターコマンド |:range!| にだけ効果
があります:
- フィルタリングの後の行数が実行前以上の場合、全ての
マークは同じ行番号を持ち続けます。
- 行数が減る場合、削除された行中のマークは削除されま
す。
どちらの場合にも、フィルタされたテキスト以降のマークは
通常通りテキストに一致するよう調整されます。
'cpoptions' オプション中に 'R' フラグがない場合、これ
は ":keepmarks" を使うのと同じ効果があります。

                      *:keepj* *:keepjumps*

:keepj[umps] {command}
{command}の実行中の移動でマーク |''|, |'.|, |'^| と
|jumplist| や |changelist|を変更しないようにします。
自動的に変更やテキストの挿入を行い、ユーザーがその位置
に行きたくないという場合に便利です。例:タイムスタンプ
"Last change" を更新するとき: >

          :let lnum = line(".")
          :keepjumps normal gg
          :call SetLastChange()
          :keepjumps exe "normal " . lnum . "G"

<
Note ":keepjumps" はコマンドごとに使わねばなりません。
関数を呼び出すとその関数の中のコマンドはジャンプリスト
を変えてしまいます。また、":keepjumps exe 'command '"
とすると、この "command" はジャンプリストを変えてしま
います。そうでなくて ":exe 'keepjumps command'" として
ください。

ジャンプ

ジャンプ jump-motions

「ジャンプ」とは次のコマンドのどれかを意味します: 新しいファイルの編集を始める
コマンドと、"'", "", "G", "/", "?","n", "N", "%", "(", ")", "[[", "]]",
"{","}", ":s", ":tag", "L", "M", "H" です。これらのコマンドのうちのどれかを
使ってカーソルを「ジャンプ」させた場合、ジャンプする前のカーソルの位置は覚えて
おかれます。その位置を含む行を削除したり変更したりしていなければ、"''" と
"
`" コマンドを使ってその位置に戻ることができます。

                      *CTRL-O*

CTRL-O ジャンプリストの中の [count] だけ古いカーソル位置に移
動します(移動コマンドではありません)。
{Vi にはありません}
{|+jumplist| 機能なしのときは使用できない}

or CTRL-I **
CTRL-I ジャンプリストの中の [count] だけ新しいカーソル位置に
移動します(移動コマンドではありません)。
{Vi にはありません}
{|+jumplist| 機能なしのときは使用できない}

                      *:ju* *:jumps*

:ju[mps] ジャンプリストを表示させます(移動コマンドではありませ
ん)。{Vi にはありません}
{|+jumplist| 機能なしのときは使用できない}

                      *jumplist*

ジャンプはジャンプリストに覚えておかれ、CTRL-O と CTRL-I コマンドで前の古い位
置に移動し、そして再び新しい位置に戻ることができます。このようにしてジャンプリ
ストの中を上下に移動することができます。ジャンプリストはそれぞれのウィンドウで
分かれており、エントリの最大の数は50に固定されています。
{|+jumplist| 機能なしのときは使用できない}

例えば、3回ジャンプを行った後ではジャンプリストは次のようになっています:

jump line col file/text ~
3 1 0 some text ~
2 70 0 another line ~
1 1154 23 end. ~

~

"file/text" 欄はファイル名か現在のファイルであればジャンプするテキストを表示し
ています(インデントは取り除かれ、そして長い行はウィンドウに合うように短くカッ
トされます)。

現在1167行目にいるとして、CTRL-O コマンドを使うとカーソルは1154行目に移動しま
す。結果として次のようになります:

jump line file/text ~
2 1 some text ~
1 70 another line ~

0 1154 end. ~
1 1167 foo bar ~

ポインターは最後に使われたジャンプ位置にセットされます。次の CTRL-O コマンドは
エントリの上に、次の CTRL-I コマンドはエントリの下に移動するのに使います。ポイ
ンターが最後のエントリの下に位置している場合、このことは前に CTRL-I もしくは
CTRL-O を使っていないことを意味します。この場合 CTRL-O コマンドを使うとカーソ
ル位置がジャンプリストにくわえられます。そうしてその CTRL-O コマンドを使う前の
位置に戻ることもできます。この場合は1167行目です。

さらに CTRL-O コマンドを実行することで70行目と1行目に移動し、CTRL-I コマンドを
使うことで再び1154行目と1167行目に戻ることができます。"jump" 欄の数はこの場所
に移動するのに何回の CTRL-O もしくは CTRL-I コマンドが必要なのかを示しているこ
とも覚えておいてください。

ジャンプコマンドを使うと現在の行がジャンプリストの最後に加えられます。同じ行が
すでにジャンプリストにあった場合はそれは削除され、結果としては CTRL-O を繰り返
していると以前の場所には一度だけ戻ることになります。

|:keepjumps|コマンド修飾子が使われた場合、ジャンプ操作はリストに記憶されませ
ん。また、他の場合にもジャンプ操作は記憶されません。例. |:global|の中。
明示的にジャンプリストに追加するにはマーク'を設定します。

CTRL-O コマンドを行って1154行目に移動した後、他のジャンプコマンド(例えば: "G")
を実行したとするとジャンプリストは次のようになります:

jump line col file/text ~
4 1 0 some text ~
3 70 0 another line ~
2 1167 0 foo bar ~
1 1154 23 end. ~

~

行が削除されたり挿入された場合は行番号も調整されますが、保存しないで(":n!" コ
マンドなどを使って)編集を中断した場合は失敗します。

ウィンドウを分割すると、ジャンプリストは新しいウィンドウにコピーされます。

'viminfo' オプションに項目 ' を含めていると、viminfo ファイルにジャンプリスト
が保存され、Vim を起動したときに復元されます。

変更リストへのジャンプ changelistchange-list-jumpsE664

変更がなされたとき、カーソル位置が記憶されます。アンドゥできる全ての変更に対
し、それが前の変更に近くない限り、1つの位置が記憶されます。変更点やアンドゥさ
れた位置へジャンプするのに、以下の2つのコマンドを使うことができます。

                      *g;* *E662*

g; 変更リスト中の [count] 個前の位置に移動します。
[count] が前の変更箇所の数より大きければ、最も古い変更
箇所へ移動します。
それ以上古い変更が無ければエラーメッセージが表示されま
す。(移動コマンドではありません)
{Vi にはありません}
{|+jumplist| 機能なしのときは使用できない}

                      *g,* *E663*

g, 変更リスト中の [count] 個後の位置に移動します。
|g;| の逆方向で、あとは同様です。
(移動コマンドではありません)
{Vi にはありません}
{|+jumplist| 機能なしのときは使用できない}

count を使うと、可能な限り前/後にジャンプできます。つまり、"999g;" とすると
履歴に残っている最初の変更箇所へジャンプできます。変更リストのエントリの数は固
定されていて、|jumplist| のものと同じです。

アンドゥ可能な変更が2回、同じ行の 'textwidth' よりも小さい桁で行われたときは、
後者だけが記憶されます。これは "xxxxx" のような一連の小さな変更をリストに残す
のを避けるためです。'textwidth' が 0 のときは 'wrapmargin' が使われます。
'wrapmargin' もセットされていないときは 79 となります。詳細:速度が落ちるのを
避けるため、計算には文字数でなくバイト数が使われます (これはマルチバイトエン
コーディングに対してのみ関係します)。

テキストが挿入または削除されると、カーソル位置が変更箇所と少しずれるかもしれま
せん。(特に行が削除されたときは)

|:keepjumps| コマンドモディファイヤが使われたときは変更箇所は記憶されません。

                      *:changes*

:changes 変更リストを表示します。文字 ">" のついているエントリ
は現在の位置であることを示しています。変更が行われると
">" は最新のエントリの下になり、"g;" で最新のエントリ
の場所に移動できることを表します。1列目はその場所に移
動するのに必要な count を示しています。例:

          change line  col text ~
              3     9    8 bla bla bla
              2    11   57 foo is a bar
              1    14   54 the latest changed line
          >

      "3g;" とすると9行目に移動します。すると次の ":changes"
      の出力はこうなります:

          change line  col text ~
          >   0     9    8 bla bla bla
              1    11   57 foo is a bar
              2    14   54 the latest changed line

      この状態で "g," とすると11行目に移動し、"2g," とすると
      14行目に移動します。

viminfoファイル

viminfoファイル viminfoviminfo-fileE136
E575E576E577

いったんVimを終了させ、後に再び起動する時には、通常多くの情報が失われてしま
う。viminfoファイルは終了する時の情報を保存しておくのに使用され、それにより再
起動した時には同じ状態で編集セッションを続けることができる。

ユーザーマニュアルの|21.3|で簡単に紹介されている。

viminfoファイルにはこんなものを記憶できる:
- コマンドラインの履歴
- 検索文字列の履歴
- 入力(|input()|)の履歴
- レジスタの内容
- 複数のファイルのマーク
- ファイルの中の位置を指し示すマーク
- 最後の検索/置換パターン('n' と '&' のため)
- バッファのリスト
- グローバル変数

コンパイル時に|+viminfo|機能が無効にされていたら、viminfoファイルはサポートさ
れない。

セッションファイルも使用することができる。viminfoファイルは「している仕事」に
依存しない、という点で異なる。通常viminfoファイルは一つしか存在しない。セッ
ションファイルは、ある特定の編集作業の状態を保存するのに使う。セッションファイ
ルは、作業しているプロジェクト毎に複数作成することが可能である。Viminfoもセッ
ションファイルどちらも、Vimをスタートしてすぐに好みの設定を行うという目的のた
めに、効果的に使用できる。 |session-file|

                      *viminfo-read*

Vimが起動した時に 'viminfo' オプションが空でなかったら、viminfoファイルが読み
込まれ、その情報は適切に使用される。変数 |v:oldfiles| がセットされる。起動時に
はマークは読み込まれない(しかしファイルマークは読み込まれる)。起動時に
'viminfo' オプションをどうやって設定するのかは|initialization|を参照。

                      *viminfo-write*

Vimが終了する時に 'viminfo' が空でなかったら、情報がviminfoファイルに保存され
る(もし既に存在した場合には、それと合併(マージ)される)。'viminfo' オプション
は、どのような情報を保存するか、またどのくらいの量を保存するべきかその限界を指
定する為の情報を含む文字列である。('viminfo' 参照)。

Note: Unixにおける注意点:
- viminfoファイルには入力したテキストや、使用したコマンドが記載されているの
で、他人に覗かれないように保護(パーミッション設定)したほうが良い。
- 複数のユーザーでviminfoファイルを共有したい時(例えば他のユーザーへ "su" する
時など)には、グループもしくは全員にviminfoファイルへの書き込み権限を与える。
Vimが新しくviminfoファイルを保存するときに、その設定を維持する。しかし、誰に
でもviminfoファイルを読ませたり書かせたりすべきではないし、注意が必要。
- 現在の "本当" のユーザーによって書き込み不能なviminfoファイルは、Vimは決して
上書きしない。これは "su" でrootユーザーになった時、しかし$HOMEがまだ通常ユー
ザーのホームディレクトリのままの時の支援となる。そうでないとVimはroot所有の、
他の誰にも読めないviminfoファイルを作成してしまう。
- viminfo ファイルはシンボリックリンクであってはならない。セキュリティ上の問題
を避けるためである。

マークは個々のファイルに対して別々に保存される。ファイルが読み込まれ 'viminfo'
が空でない場合、viminfoファイルからマーク情報が読み込まれる。NOTE: マークはVim
が正常に終了したときにだけ保存される。また、Vimの起動中に開かれた ":bdel" され
ていないファイル全てのマークが記録される。もしも ":bdel" で破棄したファイルに
ついてマークを保存しておきたいのならば、":wv" を使う。'[' と ']' のマークは保
存されないが、'"' は保存される。'"' マークはファイルを開いたときに前回のカーソ
ル位置を復元するのに非常に便利である。'viminfo' に文字 "r" が与えられた時には、
一切のマーク情報は記録されない。これはリムーバブルメディア上のファイルのマーク
が保存されるのを避ける場合に使う(MS-DOSでは "ra:,rb:" を、Amigaでは
"rdf0:,rdf1:,rdf2:" を使う)。viminfo ファイルにマークが記録されているファイル
の名前が |v:oldfiles| のリストに追加される。

                      *viminfo-file-marks*

大文字のマーク ('A から 'Z) はviminfoファイルが書かれるときに、保存される。数
字のマーク ('0 から '9) はちょっと特別である。viminfoファイルが書き込まれる時
(終了時、もしくは ":wviminfo" コマンド実行時)に、'0 が現在のファイルの現在の
カーソル位置に設定される。古い '0 は '1 になり、'1 は '2 になり、以下同様。"1
から "9 の削除レジスタに起こることに似ている。'0 に記憶する位置が '1 から '9
に既出であった時には、同じ位置が2度記憶されるのではなく、そのレジスタが '0 に
浮き上がってくる。結果として "'0" を使用すると、最後にVimを終了した時のファイ
ルとその行に戻ることができる。起動後直ちにそれを行うには、次のコマンドを試す: >

vim -c "normal '0"

csh 互換なシェルではエイリアスをこんな風に使用して: >

alias lvim vim -c '"'normal "'"0'"'

bash ライクなシェルでは: >

alias lvim='vim -c "normal '\''0"'

特定のファイルのマークを保存しないようにするには 'viminfo' に "r" フラグを追加
する。

Viminfoファイルの名前 viminfo-file-name

  • viminfoファイルの名前を特に指定しない時は、UnixとOS/2では "$HOME/.viminfo" に、Amigaでは "s:.viminfo" に、MS-DOSとWin32では "$HOME_viminfo" になる。 MS-DOSとWin32で、$HOMEが設定されていない時には、"$VIM_viminfo" になる。$VIM も設定されていない時には "c:_viminfo" が使われる。OS/2では、$HOMEが設定され ず$VIMが設定されていれば "$VIM/.viminfo" となる。
  • 'viminfo' オプションの 'n' フラグは、別の名前のviminfoファイルを使うために、 そのファイル名を指定するのに使用される|'viminfo'|。
  • Vimの起動引数 "-i" も、viminfoとして別のファイルを指定するのに使用できる|-i|。 ファイル名として "NONE" (全て大文字)が与えられると、viminfoファイルは使用(読 み込みも書き込みも)されない。
  • 起動後に、コマンドで別の名前を与えると、デフォルト名や 'viminfo' や "-i" で 与えた名前を上書きすることができる("-i" はNONEが指定されていない時に限る)。

文字エンコーディング viminfo-encoding

viminfoファイルのテキストはオプション 'encoding' で指定したエンコーディングで
保存される。通常は 'encoding' の設定はいつも同じなので、問題なく機能する。しか
しながら、もしもviminfoファイルを読み込むときに、'encoding' の設定がviminfoファ
イルを保存したときとは違うエンコーディングに設定されていると、いくつかのテキス
ト(ASCII以外の文字)は不正な文字になってしまう。それを回避するには、オプション
'viminfo' に 'c' フラグを追加する: >
:set viminfo+=c
そうするとVimは、viminfoファイルを保存したときの 'encoding' から現在の
'encoding' へとテキストを変換する。これを利用するには|+iconv|が有効になってい
る必要がある。ファイル名は変換されない。

viminfoファイルを手動で読み書きする viminfo-read-write

viminfoファイルを手動で読み書きするのに2つのコマンドが用意されている。これは同
時に起動している複数のVim間で、レジスタの内容を交換するのに利用できる: まず片
方で ":wv" してから、もう片方で ":rv" する。既にレジスタに何かを記憶している場
合には、":rv!" する必要があることに注意。またこれを行うとコマンドラインの履歴
を含む全ての情報が、送り側のVimのもので上書きされてしまうことにも注意。

viminfoファイル自体を手で編集することもできるが、Vimによって作られる正しい
フォーマットのviminfoを元にすることを推奨する。一度試してみればどういう構造に
なっているかよく分かるだろう。これを覚えておけば、Vimを起動したときにいつでも
設定しておきたい内容を、"~/.my_viminfo" というようなファイルに用意しておくとき
に重宝する。例としては、あるデータをレジスタに予め読み込んでおくとか、コマンド
ライン履歴に特定のコマンドをいれるとか、そういう使い方がある。.vimrcファイルに
次の一行を入れておけば >
:rviminfo! ~/.my_viminfo
その情報を読み込むことができる。ファイルの種類によって(Cコードだとかvimスクリ
プトだとか)、異なるviminfoを持ち、":autocmd" を組み合わせることでファイル名に
基づいたりしながら、それらを使用することもできる(|:autocmd|)参照。

                      *viminfo-errors*

Vimがviminfoファイルを読み込み中にエラーを検出すると、ファイルの上書きはされな
くなる。もしも10個以上のエラーがある場合には、それ以上viminfoファイルを読み込
むのを止める。こうするのはviminfoファイル内のファイル名が間違っている場合、突
発的にそのファイルを破壊してしまうのを避けるためである。これは "vim -R file"
としたいときに、誤って "vim -i file" とタイプしてしまうと起こり得る(そう、偶然
何人かが実際にそうしてしまったよ!!)。viminfoファイルにエラーがあったけれども
viminfoを上書きしたいのならば、エラーを修正するか、またはファイルを消すかのど
ちらかが必要(Vimの実行中は、ほとんどの情報が回復してしまう)。

                     *:rv* *:rviminfo* *E195*

:rv[iminfo][!] [file] viminfoファイルを fileから読込
む。[!]が与えれらた場合、既に設定されている情報(レジス
タ、マーク、|v:oldfiles|、その他)は上書きされる。{Vi
にはない}

              *:wv* *:wviminfo* *E137* *E138* *E574*

:wv[iminfo][!] [file] viminfoファイルを fileとして保
存する。まず既存のファイルの(古い)情報が読み込まれ、
Vim内部の(新しい)情報とマージ(合併)されてから、ファイ
ルに保存される。[!]を指定すると古い情報は読み込まれ
ず、Vim内部の情報だけが保存される。'viminfo' が空("")
に設定されている場合は、100個のファイルのマークが書き
出される。
"E138: Can't write viminfo file" ("E138: viminfoファイ
ルを保存できません") というエラーが出たときには古い一
時ファイル (例えば~/.viminf*) が残っていないことを確か
め、.viminfoファイルを保存するディレクトリの書込み権限
を確認すること。
{Vi にはない}

                  *:ol* *:oldfiles*

:ol[dfiles] viminfo ファイルにマークが記録されているファイルのリス
トを表示する。起動時にこのリストが読み込まれ、
":rviminfo!" を行った後でのみ変更される。|v:oldfiles|
も参照。このリストで表示される番号は |c_#<| で使うこと
ができる。
{Vi にはない。|+eval| 機能付きでコンパイルされたときの
み有効}

:bro[wse] ol[dfiles][!]
|:oldfiles| と同じようにファイルのリストを表示し、番号
の入力を待つ。有効な番号が入力されると、リスト中のその
ファイルを開く。
|press-enter| プロンプトが表示されたときは "q" を押す
とファイル番号を入力するプロンプトに戻れる。
! をつけると変更中のバッファを破棄する。|abandon|
{tiny または small でコンパイルされたときは利用できな
い}

infoコマンドをviライクなキーバインディングに変えるには

$
0
0

infoコマンドは、emacsライクなキーバインディングになっている。
これをviライクなキーバインディングに変えるには

info --vi-keys 調べたいこと

とすればよい。

foldexprの評価のみを実行する方法

$
0
0

短い日本語でタイトルをうまく表現できなかったのですが、以下の理由で、foldexprを評価するだけの関数(もしくはコマンド)を作り、手動でfoldexprを評価させたかったのです。

  • ずっとfoldmethodexprのままだと、行数の多いファイルを編集時にものすごく重い!
  • autocmdで動的にうまくfoldmethodを切り替えられたらよいのですが、ちょうど良い設定が実現できない。
  • :setlocal foldmethod=exprを一々タイプするのもめんどい。

で、以下が実現できるコードです。わかってしまえば簡単だったのですが、redrawを行うとfoldexprが評価され、redrawを行わないとfoldexprが評価されませんでした。

function!s:eval_foldexpr()let saved_foldmethod =&foldmethodlet saved_foldexpr =&foldexprtrysetlocalfoldmethod=expr
    setlocalfoldexpr=getline(v:lnum)[0]==\"\\t\"redrawfinallylet&l:foldmethod= saved_foldmethod
    let&l:foldexpr= saved_foldexpr
  endtryendfunction" 適当にキーマッピングする。nnoremap<leader>f    :<C-u>call<sid>eval_foldexpr()<cr>

VimFiler いまさら導入編

$
0
0

Vimを触り始めて7年程たった。

その間、ファイラーはデフォルトのnetrwを使っていたが、MacでFinderとVimの間を行き来するのが面倒になり、本格的にファイラーを導入ということで、VimFilerをいまさら導入する事にした。

インストール

NeoBundleで簡単インストール

.vimrcに

NeoBundle 'Shougo/vimfiler'

を追加して、:NeoBundleInstallで、インストール完了。

以下、よく使うキーバインドの自分用チートシート。

起動

:VimFilerで起動。.vimrcに以下を設定しておくと、:e .でnetrtの変わりにVimFilerが起動します。

" VimFilerをデフォルトのファイラにする
let g:vimfiler_as_default_explorer=1

キー機能
oバッファを縦分割 or ディレクトリ同期
O別バッファに選択中のディレクトリの中を展開
gsセーフモード on/off
qVimFilerを終了

移動

キー機能
Tabバッファ切替
jカーソルを下に移動
kカーソルを上に移動
l選択中の子ディレクトリ配下に移動
h親ディレクトリに移動
~ホームディレクトリに移動
¥ルート・ディレクトリに移動
I指定したディレクトリに移動

ファイル表示・ファイル操作

キー機能
.隠しファイルの表示/非表示切替
Spaceファイル選択/選択解除
*全ファイル選択/選択解除
vプレビューを表示
S表示をソート
Ctrl-gファイル名を表示
Mファイルマスクを設定
rリネーム
mファイル移動
cファイルコピー
pファイルをペースト
dファイルを削除
K新規ディレクトリ作成
N新規ファイル作成

プレビューを実行すると小さいバッファが開いてプレビュー表示。
ファイルマスクは*.txtなどで拡張子等を指定して、表示するファイルをフィルタする。

ファイル実行

キー機能
eファイルをVimで開く
xファイルをシステムの関連付けに沿って開く

その他

キー機能
?キーバインド表示
Ctrl-lバッファを再描画

vimで単語を検索してから別の単語に置換を単語の再入力が無いように

$
0
0
lovelive.text
umi_chan × kotori
nontan × erichika
maki_chan × nikoni
kayochin × rin_chan
/umi_chan<Enter>
:%s//honoka<Enter>
lovelive.text
honoka × kotori
nontan × erichika
maki_chan × nikoni
kayochin × rin_chan

コーディング規約を脳みそに染み込ませろ!! Powerd by rubcop

$
0
0

物事には規約がある。
もちろんコーディングにも規約がある。
しかし、一々Style Guideを参照して修正するのは得策ではない。
またプルリクエストなどで、コーディング規約について言及される&&言及するのはお互いにストレスがかかってしまう。
そのためにはコーディング規約に違反しているかどうか、自動的にチェックしてもらえれば人類が幸せになれます。
それがrubcopである。

rubocop

rubocop_vim.mov.gif

Vimにrubocopを導入してコーディング規約をチェックしている。違反している箇所がハイライトされ、アドバイスされる。

Ruby Style Guide

まずは一通りStyle Guideを読みましょう。
日本語訳もされてます。ありがとうございます。

:SyntasticCheck
もしくは、
:w
でrubocopが作動し、コーディング規約に違反する箇所を指摘してくれます。

まとめ

Ruby書いてる人は全員入れろ。
英語の勉強にもなるよ!
rubcopが絶対というわけではないので、適宜自分で判断しましょう。

参考リンク


Vim で 選択した領域を逆順にする方法

$
0
0

例えば、Vim で箇条書きでメモをしていて、一部だけを逆順にしたいときってありますよね?ありますよね?

こんな風にメモを取っていたときに

欲しい機能
- カメラ機能が欲しい
- 写真をアップロードしたい
- 写真にコメントをつけたい
予算xx万

こんな風に変更したいとかいうときですね。

欲しい機能
- 写真をアップロードしたい
- 写真にコメントをつけたい
- カメラ機能が欲しい
予算xx万

辞書順にソートしたいときは、ビジュアルモードで選択したあと次のコマンドでソートできます。

:sort                   # ソート(a->z)
:sort!                  # 逆ソート(z->a)

けれど、今回やりたいのは単純に元の順番の逆にしてほしいです。

そんなときは、同じくソートしたい領域をビジュアルモードで選択したあとにtailコマンドを呼び出して逆順に並び変えることができました。

:tail -r

OSのコマンドを利用しない方法としては次がありました。

:g/^/m0                 # 0 は、ビジュアルモードで選択し始めた行-1 の数値

後者のほうがスマートなのかもしれませんが、ちょっと覚えにくいのとビジュアルモードで選択し始めた行を確認しないといけないので、たぶん tail 版を利用すると思います。

ほかにいい方法があればぜひ教えてください。

参考

http://superuser.com/questions/189947/how-reverse-selected-lines-order-in-vim

ファイル作成日時が更新日時になってしまう(about created date)

$
0
0

[日本語]
vim でファイルを編集し:wq:ZZで保存・終了したファイルの作成日時が更新日時と同じ時刻になってしまいます。
保存時に作成日時が上書きされないようにするにはどうしたら良いのでしょうか。

[English]
When I edit a file with vim and save by :wq or :ZZ command, the created date of the file become same as the modified date.
What should I do so that it prevents the created date from being overwritten?

vimで、開いているファイル内の単語数を数える

$
0
0
:%s/str//gn

strの数を教えてくれます。

"s"で置換なんだけれど、"n"で置換しないっていう意味。
だので、置換しないけれど変更箇所数は教えてくれる。

ちなみに、"c"は1個ずつ確認しながら置換していける。

vim7.4のバックスペースでも特殊記号を削除したい

$
0
0

macのvimは標準にインストールされているやつだと
クリップボードの共有の設定がそもそも出来ないそうです。
それでは不便なので

brew install vim

でささっとアップデート。以下記事を参考にしました

MacのVimでHomebrewを使ってクリップボード連携を有効にする

しかしインストールごクリップボード共有は設定出来たのですが
編集モードで特殊記号がバックスペースで削除出来ない・・・!
以下の設定をvimrcに記述する事で解決しました。

.vimrc
set backspace=indent,eol,start

7.3と7.4の違いも分からないし、ゆっくり勉强したい

文字列中のタブを空白に置換する

$
0
0

vimscriptで文字列中のタブ文字を空白に置換したい。
バッファに対してなら retabでいいんだけど、あくまで文字列に対して実行したい。そういう関数があるんじゃないかと思ったけど、見つけられなかった。

自分で実装するなら、こんな感じ?

function! ExpandTab(text,tabstop)let tokens = split(a:text,'\v\t\zs')let replaced = map(tokens, 
                    \'v:val[-1:] !="\t" ? v:val :
                    \ v:val[:-2] . repeat(" ",a:tabstop-(len(v:val)-1) % a:tabstop)')returnjoin(replaced,'')endfunction
  1. splitで、各タブ文字の後ろで文字列を分割
  2. mapで、分割後の各文字列の長さがtabstopのn倍になるようにタブを空白に置換
  3. joinで文字列を再結合

で終わり。

初心者がVimをインストールするメモ

$
0
0

Mavericksをほとんど真っ新な状態からVimのインストールを行うことのメモ。

参考にしたところ

Xcodeのインストール

App Storeを起動し、Xcodeをインストールする。
正直使うかはわからないが、まあ入れておいて損はないだろう。HDの容量を除いて。

Command Line Toolsのインストール

Xcodeを起動し、 PreferencesDownloadsからCommand line toolをインストール...と思ったら、ダウンロード可能なコンポーネントに存在しない。
仕方ないので PreferencesOpen Developer Toolから More Developer Tools...を選択し、立ち上がったSafariに表示されるサイトにログインする(要Apple ID)。
ログインしたDeveloperサイトにCommand Line Toolsがあるため、OSとXcodeのバージョンに注意してツールをダウンロードする。
(Graphics ToolsがQuartz Composerだったかな...)

ダウンロードしたdmgファイルをマウントし、中身のpkgファイルを実行するとインストーラが表示される。あとは指示通りにインストールを進めていけばよい。

実はxcode-select --installをターミナルで実行するだけでもいいっぽい?

Homebrewのインストール

公式サイト下部にインストール用のコマンドが表示されているため、ターミナルを起動してコピペする。
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
公式サイトは日本語にもできる。英語が出てきてぱっと見わからんと思ってもこれならがんばれそうな気がする。

管理者パスワードを入力した後、 Installation successful!と言われるので、 Next stepsに従ってbrew doctorを実行する。
Your system is ready to brew.と言われたので、問題無いようだ。

Vimのインストール

MacのVimでHomebrewを使ってクリップボード連携を有効にするの手順に従ってVimをインストールする。

  • インストールコマンド
$ brew update
$ brew install vim
  • インストール確認
$ brew list vim
/usr/local/Cellar/vim/7.4.273/bin/xxd
/usr/local/Cellar/vim/7.4.273/bin/vimtutor
/usr/local/Cellar/vim/7.4.273/bin/vimdiff
/usr/local/Cellar/vim/7.4.273/bin/vim
/usr/local/Cellar/vim/7.4.273/bin/view
/usr/local/Cellar/vim/7.4.273/bin/rvim
/usr/local/Cellar/vim/7.4.273/bin/rview
/usr/local/Cellar/vim/7.4.273/bin/ex
/usr/local/Cellar/vim/7.4.273/share/man/ (113 files)
/usr/local/Cellar/vim/7.4.273/share/vim/ (1502 files)
  • クリップボード連携ができるかの確認
$ /usr/local/Cellar/vim/7.4.273/bin/vim --version | grep clipboard
+clipboard       +iconv           +path_extra      -toolbar
+eval            +mouse_dec       +startuptime     -xterm_clipboard
  • 既存のVimを置き換える
$ sudo mv /usr/bin/vim /usr/bin/old_vim
#移動
$ sudo ln /usr/local/Cellar/vim/7.4.273/bin/vim /usr/bin/
#ハードリンクを作成する
  • ちゃんと配置できたかを確認する
$ vim --version | grep clipboard
+clipboard       +iconv           +path_extra      -toolbar
+eval            +mouse_dec       +startuptime     -xterm_clipboard
#+clipboardになっているのでO.K.
  • Vimの設定をする

【初心者向け】Vim入門 - vimrcの編集(場所)と基本コマンドを読むと、Vimの設定ファイルvimrcは/usr/share/vimおよび/usr/bin/vimの2箇所に存在し、ホームディレクトリに.vimrcが存在すると、それが優先されるらしい。
どういうこと...と思ったら、Vimの設定ファイルを作るに書いてあった。
/usr/bin/vimである/usr/bin/old_vimの中身をみてみると、-bash: cd: /usr/bin/old_vim: Not a directoryと返ってきた。
ls -F /usr/bin/を実行してみると、実行ファイルですよと言われた。つまり/usr/bin/vimディレクトリの下に実行ファイルと設定ファイルがある訳ではないらしい。Unix系OSを知らなすぎる。
結局ホームディレクトリにvimrcを作ればいいんだけど、何が優先されるかは知っておかないと惨事が起きそうで怖い。

$ vim .vimrc

を実行し、set clipboard+=unnamedを入力して保存する。
ホームディレクトリをみてみると、.vimrcファイルが作られていることを確認できる。

$ ls -a
.           .viminfo        Movies
..          .vimrc          Music
.CFUserTextEncoding Desktop         Pictures
.DS_Store       Documents       Public
.Trash          Downloads
.bash_history       Library

もう一度Vimで.vimrcを開き、ほかのエディタなどにコピペできることを確認したら作業は終了。
設定ファイルを自分好みにしてVimに慣れていきたいところ。

chromeのgoogle検索でvimとemacsぽいキーバインド使える

$
0
0
キー挙動
j検索結果で下に移動
k検索結果で上に移動
ctl-a検索窓で行頭にカーソル移動
ctl-e検索窓で行末にカーソル移動
space画面の一番下の位置まで移動
shift-space画面の一番上の位置まで移動

9f264b8559f0ff0f32550cd362fb9f50.gif


Vimをバッチモード(-e -s)で使う際のTips

$
0
0

ファイルを1行ずつ読み込みながら処理するのはawkが向いていますが、
途中の行から前に戻りながら編集したい場合など、
エディタ操作としてなら簡単に記述できる処理をスクリプトとして実行したい場合、
Vimのバッチモードは便利です。
(shell script中から、バッチモードで起動したVimを、1つのフィルタとして使う等)

最近Ex mode用スクリプトを2つ書いた際のTipsです。

GNU edのコメントは#だがvimは"

Ex modeでのスクリプト実行では、ed用スクリプトもある程度動作。

--noplugin

plugin内(fakeclip.vim等)でエラーが発生するとexit codeが1になるのを回避するため。

-X

Xサーバへの接続にPCによっては70ms程度かかる場合があるので。

前の行へは-、次の行へは+

-4等も使用可。

:-は、:.-1の省略とみなされる模様。
Vimのヘルプには明示的な記述は無いが、:rangeあたり。

Ex mode用スクリプトファイル内に空行があるとE501: At end-of-file

エラーが発生するとvimのexit codeが1になる

スクリプトのデバッグは-Vを付けてvimを実行

画面に何も表示されずに、Vimが動き続けて終了しない場合は、qa!<Enter>と入力してみると終了するかも

ユーザ入力待ちになっている可能性。

shell scriptから呼んでいる場合、以降の処理を中断させたいときは:cquitしてexit codeを1にして、shell script側で判定

vimrc 読書会の学習効率を上げるある 1 つの Tips

$
0
0

本記事は Vim Advent Calendar 2013の 178 日目です。
177 日目は @manga_osyo さんによる、Web から素早く :help するサイトつくったでした。

たった一つの、とまで尊大なことは言えないですが、便利に使えるであろうある Tips を紹介します。実は windows の Vim ではデフォルトで設定されている機能だったりします。

未知のオプション

他人の vimrc やプラグインを読んだり、読書会に参加していると未知のオプションや関数に出会うことは少なくないでしょう。そんな時は必殺 KKです。

設定

windows 以外をご使用の方が何も考えずにこの必殺を発動させると爆死します。爆死はしないですが、何も便利ではありません。

Kは何かというと、カーソル位置のキーワードをプログラムで調べるという機能です。

:help K

このプログラムに何が使われるかというと、'keywordprg'オプションで指定された値が使われます。

:help 'keywordprg'

そしてこの 'keywordprg':helpを設定する (windows では規定値) と、Kで help がひけてしまうのです。

例えば autocmdを利用して、vimrc を開いた場合は Kで help が引けるようにしておくといいかもしれません。

.vimrc
augroup set_kp_help
  autocmd FileTypevimsetlocalkeywordprg=:help
augroup END

補足

カーソル下のキーワードを拾うという特性上、正確に help が引けない場合もまれにあります。幸いなことに先日、そういった内容も取り上げて頂いているので参照ください。

:help する Vim の operator かいた - pockestrap

また Kは visual モードでも使えるので、対象のキーワードを選択して Kを押すことでも対応できることがあります。

余談

上記でも何度か用いていますが、@manga_osyo さんの vim :help サービスがオープンしました。

いつでもどこでも :help する - Vim :help

このビッグウェーブに、各地では早くも盛り上がりを見せています。

いつでもどこでも Emacsから :help する - Life is very short

Big Sky :: いつでもどこでも Vim から :help する

ほんとはこの流れに乗りたかったのですが、アイデア力も技術力も乏しく、残念ながら空気を読めない形になってしまいました。ごめんなさい…ヒッ


以上 Vim Advent Calendar 2013 178 日目の記事でした。次回 179 日目は @supermomongaさんです。

vimの分割ウインドウのスクロールを同期させる

$
0
0

vimで画面分割しているときに、同期したいウインドウで

:set scrollbind

or

:set scb

とすると、分割したウインドウのスクロールが同期される

デフォルトだと縦スクロールしか同期されないので、横も同期させたいときは、

:set scrollopt=ver,hor,jump

などとする

スクロールの同期を解除するときは、

:set noscrollbind

or

:set noscb

vimでhtml.erbファイルを書く時に便利なプラグイン

$
0
0

railsでhtml.erbを書く時に、タグの入力を書く手間を減らすにはsurround.vimrails.vimの組み合わせがいい感じのようです。

インストール
neobundle.vimを使います

.vimrc
NeoBundle 'tpope/vim-rails'
NeoBundle 'tpope/vim-surround'

利用方法

まず以下の1行を<div>タグで囲んでみます。

hoge.html.erb
タイトルは@titleです。

ビジュアルモードで1行全てを選択後、S<div>と入力すると以下のように<div>...</div>タグで囲んでくれます。

hoge.html.erb
<div>タイトルは@titleです。</div>

次に@title<%= %>で囲みます。
ビジュアルモードで@titleを選択後、S=と入力すると、選択部分を<%= %>で囲んでくれます。
(この機能を使うにrails.vimを導入する必要があります。)

hoge.html.erb
<div>タイトルは<%=@title%>です。</div>

CentOS6.4にvim7.4をソースからインストール

$
0
0

度々ググってるので、メモっておく。 ※2014/05/29現在

# 必要なパッケージをインストール
yum -y install gcc python python-devel ncurses-devel python-setuptools perl-ExtUtils-Embed

# ソースとってくる
cd /usr/local/src
hg clone https://vim.googlecode.com/hg/ vim

# 更新
hg pull
hg update

./configure \
--prefix=/usr/local/vim \
--enable-fail-if-missing \
--enable-fontset \
--enable-perlinterp \
--enable-pythoninterp \
--enable-cscope \
--enable-multibyte \
--with-x=no \
--disable-gui \
--disable-xim \
--with-features=huge \
--disable-selinux \
--disable-gpm \
--disable-darwin

make && make install
Viewing all 5757 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>