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

Vimで選択操作中に始点/終点を切り替える

$
0
0

v(テキスト選択)やCtrl-v(矩形選択)、V(行選択)の選択中にoを押すとカーソル位置の始点/終点を選択しなおせます。

選択開始位置を間違えた場合などに、いちいち選択を解除せずに選択範囲を修正できてかなり便利です。


Vimで前回選択した箇所を再度選択する

$
0
0

v(テキスト選択)やCtrl-v(矩形選択)、V(行選択)をして作業が終了したあとにもう一度同じ場所を選択したいときがたまにありますよね。

そんなときはノーマルモードにいるときにgvです。
前回選択した箇所がそのまま選択されます。

Vimのコマンドラインモード(コロンのやつ)のときにカーソル下にある単語を入力する

$
0
0

vimで:を入力するとコマンドラインモードが始まりますが、このときテキスト中の単語をコマンドラインに持ってくる方法です。

:のあとの入力待ちになっているときに<Ctrl-r><Ctrl-w>と入力してください。
カーソル下にある単語がコマンドラインに入力されます。

vim で複数ファイルから検索置換

$
0
0

設定

.vimrc
# Qfreplace 使用
NeoBundle "thinca/vim-qfreplace"

# 外部grepに使うプログラム設定
set grepprg=ag\ -a
$ vim

で起動し、

:grep {検索文字又は正規表現} ** |cw

で外部grepが走る。** は全ファイル。
ウインドウが vim に戻ったら

:Qfreplace

で 新しいウインドウができるので、置換を行い、保存する。

Vim Tutorial まとめ

$
0
0

※参考:http://uguisu.skr.jp/Windows/vi.html

動作

Vimの起動と終了

  • :e ファイル名:ファイルを開く
  • ESCキー:ノーマルモード
  • :wq:保存して終了
  • :w:保存
  • :q!:保存しないで終了
  • :w ファイル名:名前をつけて保存
  • :!dir:ディレクトリの一覧を表示

移動

  • h→左
  • j→下
  • k→上
  • l→右
  • 0→行頭
  • 数字w→?個前の単語に移動
  • 数字e→?個目の単語の末尾に移動

ファイル内での移動

  • 数字G:?行目に移動
  • gg:ファイルの最初に移動
  • G:ファイルの最後に移動

オプション

  • :set オプション名:オプションの設定
  • :q:閉じる

ヘルプ

  • :help:ヘルプの表示

Vimの設定

  • _vimrc(win向け)を設定

コマンドの呼び出し

  • コマンドの頭文字-Ctrl-D:コマンドの呼び出し

テキスト

戻す

  • u:最後のコマンドを戻す
  • U:行全体の変更を戻す
  • Ctrl-R:戻したものを戻す

テキストの挿入

  • i:カーソルの左から入力開始
  • I:行頭から入力開始
  • a:カーソルの右から入力開始
  • A:行末から入力開始
  • o:下の行から入力開始
  • O:上の行から入力開始

テキストの削除

  • x:削除
  • dw:単語の末尾まで削除
  • d$:行末まで削除
  • dd:行全体を削除
  • d数字w:?個の単語を削除
  • 数字dd:?行を削除

テキストの貼り付け

  • y:コピー
  • p:貼り付け

テキストの検索

  • /<文字列>:文字列を検索する(順方向)
  • ?<文字列>:文字列を検索する(逆方向)
  • n:順方向へ検索する
  • N:逆方向へ検索する
  • %:(,[に対して対応する),]や}を検索
  • Ctrl-O:元の場所に戻る

テキストの削除と挿入

  • cw:単語の末尾までを削除し挿入
  • c$:行末までを削除し挿入

テキストの置換

  • :s/A/B:現在行の最初のAをBに置換する
  • :s/A/B/g:現在行の全てのAをBに置換する
  • :#,#s/A/B/g:?行から?行までのすべてのAをBに置換する
  • :%S/A/B/g:ファイルの中の全ての検索語句を置換する
  • :%s/A/B/gc:cを加えると置換の度に確認を求める
  • r:カーソルの下の文字を置換
  • R:単語の末尾までを置換

テキストの選択・保存・取込

  • v:テキストの選択
  • v-:w ファイル名:選択範囲に名前を付けて保存
  • :r ファイル名:ファイルの中身の取込

Vimの基礎

$
0
0

Vim Tutorial

:Tutorial チュートリアル起動

カーソル移動 

       h→左方向に移動
       l→右方向に移動
       j→下方向に移動
       k→上方向に移動

Vimの終了

       [ESC] :q! (変更を破棄)
       [ESC] :wq (変更を保存)

ヘルプウィンドウの表示

       :help

コマンドのヘルプ検索

       :help cmd

別のウィンドウへジャンプ

       CTRL-W CTRL-W

ノーマルモードに移行(間違ったり入力途中のコマンドを取り消すことができる)

       [ESC]

カーソル下の文字を削除

       ノーマルモード [ESc]  x

カーソルの位置に文字を挿入

       i

行末に文字を挿入

       A

カーソルの位置から単語の末尾までを削除する

       dw

カーソル位置から行の末尾までを削除する

       d$

単語2つを削除する

       d2w

行全体を削除する

       dd

2行を削除する

       2dd

単語2つ分カーソル移動

       2w

3つ目の単語の終端にカーソルを移動

       3e

行頭にカーソルを移動

       0

前回の動作を取り消す

       u(小文字)

行全体の変更を取り消す

       U(大文字)

取り消しの取り消し

       CTRL-R

最後に削除された行をカーソルの後に貼り付ける

       p

カーソルの次の文字を置き換える

       r (ただし、アルファベットのみ)

カーソルの位置から単語の終わりまでを変更

       cw (変更だけでなく挿入も行える)

カーソルの位置から行の終わりまでを変更

       c$

ファイル内での位置とファイルの詳細を表示

       CTRL-G

ファイルの最下行に移動

       G

(数値)行に移動

       数値 G

先頭行に移動

       gg

前方に語句を検索

       /

後方に語句を検索

       ?

検索後の次の検索

       n

検索後の逆方向の検索

       N

検索のハイライトを消す

       :noh

(,),[,],{,}などの括弧上にカーソルを置いて対となる文字へ移動

       %

現在の行の最初の old を new に置換する。

       :s/old/new

現在の行のすべて old を new に置換する。

       :s/old/new/g

2つの#間で語句を置換する(#には置き換える範囲の開始と終了の行番号を指定する)

       :#,#s/old/new/g

ファイル全体で見つかるものに対して変更する

       :%s/old/new/g

'c'を加えると置換の度に確認を求める

       :%s/old/new/gc

ディレクトリ内の一覧を見る

       :!ls

ファイルを削除

       :!rm [ファイル名]

ファイルへ変更を保存

       :w [ファイル名]

ビジュアルモード(範囲指定ができる)

       v

選択した行を削除

       v → d

'ファイル名'のテキストを挿入

       :r ファイル名

カーソルの下の行が開き、挿入モードになる

       o(小文字だと、カーソルの下の行が挿入モード)
       O(大文字だと、カーソルの上の行で挿入モード)

カーソルの次の位置からテキストを追加

       a

単語の末ごとに移動

       e
(”a”と”i”は同じ挿入モードだが、文字が挿入される位置が異なる)

テキストのコピー

       y

テキストの貼り付け

       p

置換モード

       R

オプションの設定

       :set xxx (xxxが設定される)

検索時に大文字小文字の区別をしない

       :set ic

検索フレーズに部分マッチしている部分を表示する

       :set is

マッチするすべてを強調表示する

       :set hls

オプション無効

       :set noic

コマンドラインを補完

       CTRL-D

補完を使用

       [TAB]

複数のファイルにまたがる一括置換

$
0
0

ファイル群の指定
:args ./**/views/*.php

指定したファイル群の確認
:args

変換
:argdo %s/hoge/moge/g | update

ログを出さない
:silent! %s/hoge/moge/g | update

vimで文字を選択する

$
0
0

v:一文字ずつ選択
V:一行ずつ選択
Ctrl+v: 矩形選択


Windows でのステータスライン用フォント

$
0
0

本記事は Vim Advent Calendar 2013の 132 日目です。
131 日目は @keizo_bookman さんによる、とあるvim宣教師の手記でした。

vim-airline 等ステータスライン系プラグインでは、フォントにパッチを当てることでステータスラインのデザインを更に良くする方法があります。
しかし Windows の定番フォント Consolas ではうまくパッチが当たらなかったり、そもそもパッチを当てるための環境 (fontforge) を用意するのが不便という事情がある為、別のアプローチでこれを行うというのが本記事の趣旨です。

パッチ用フォントの入手、インストール

まずはステータスライン表示用の文字のみが含まれた、パッチ用のフォントを入手します。これは powerline のリポジトリで配布されています。

https://github.com/Lokaltog/powerline/blob/develop/font/PowerlineSymbols.otf?raw=true

これを windows 用の truetype フォントに変換します。変換は Web サービスで行うのが手軽でしょう。調べればそれっぽいサービスがいくつか引っかかります。

http://www.freefontconverter.com/

作成した ttf フォントファイルをインストールします。

フォントリンク

作成したパッチ用のフォントを、対象のフォントに fontlink させます。
例えば Consolas で行う場合、レジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink
に複数行文字列として新たに Consolasという値を追加し、以下の値を書き込みます。

Consolas
PowerlineSymbols.ttf

他に日本語フォント等リンクさせている場合、一番上にパッチ用のフォントを追加します。

Consolas
PowerlineSymbols.ttfMEIRYO.TTC,Meiryo,128,85

ちなみにフォントリンクはリンクさせるフォントのサイズを調整することができます。ここで 85 となっている 4 つめの値を、128 を基準に小さくすれば リンクフォントが大きく、128 より大きくすればリンクフォントが小さくなります。3 つめの値も scaling factor に関係すると説明されているところが多いですが、これはおそらく font charset に関係する値のようなので日本語をリンクさせる場合は 128 を指定しておきます。

メリット・デメリット

Windows ではフォントのエイリアスがうまく表示されず、Inconsolata や Ricty などの他 OS での定番フォントが汚くなりがちですが、この方法だと Windows に最適化されている Consolas を用いる為レンダリングが綺麗です。
また、レジストリを操作する必要はありますが、引き換えにフォントにパッチを当てる必要がありません。

デメリットというより制限事項ですが、追加されたフォントのシンボルと隣の文字が続いて表示されているような箇所では、若干の隙間があるようです。カラースキームによってはこの隙間が見えやすかったり見えにくいことがあります。但しパッチを当てたフォントについてもシンボルとフォントのバランスが取れていなかったり、同様に隙間が見えることもあるようです。

おまけ

少し前に、Vim を VS2013 でビルドする記事を書きました (宣伝)。

http://qiita.com/s_of_p/items/fe522eb6b1d48b8b3885

VAC の記事ではありませんが、よければチェックしてみてください。

以上 Vim Advent Calendar 2013 132 日目の記事でした、次回は現在未定です。

参考

http://www.natzworks.com/digital/2010/454.html
http://msdn.microsoft.com/en-us/library/cc194829.aspx

Vim Tutorial まとめ(akiinu)

$
0
0

※参考:http://uguisu.skr.jp/Windows/vi.html

動作

Vimの起動と終了

  • :e ファイル名:ファイルを開く
  • ESCキー:ノーマルモード
  • :wq:保存して終了
  • :w:保存
  • :q!:保存しないで終了
  • :w ファイル名:名前をつけて保存
  • :!dir:ディレクトリの一覧を表示

移動

  • h→左
  • j→下
  • k→上
  • l→右
  • 0→行頭
  • 数字w→?個前の単語に移動
  • 数字e→?個目の単語の末尾に移動

ファイル内での移動

  • 数字G:?行目に移動
  • gg:ファイルの最初に移動
  • G:ファイルの最後に移動

オプション

  • :set オプション名:オプションの設定
  • :q:閉じる

ヘルプ

  • :help:ヘルプの表示

Vimの設定

  • _vimrc(win向け)を設定

コマンドの呼び出し

  • コマンドの頭文字-Ctrl-D:コマンドの呼び出し

テキスト

戻す

  • u:最後のコマンドを戻す
  • U:行全体の変更を戻す
  • Ctrl-R:戻したものを戻す

テキストの挿入

  • i:カーソルの左から入力開始
  • I:行頭から入力開始
  • a:カーソルの右から入力開始
  • A:行末から入力開始
  • o:下の行から入力開始
  • O:上の行から入力開始

テキストの削除

  • x:削除
  • dw:単語の末尾まで削除
  • d$:行末まで削除
  • dd:行全体を削除
  • d数字w:?個の単語を削除
  • 数字dd:?行を削除

テキストの貼り付け

  • y:コピー
  • p:貼り付け

テキストの検索

  • /<文字列>:文字列を検索する(順方向)
  • ?<文字列>:文字列を検索する(逆方向)
  • n:順方向へ検索する
  • N:逆方向へ検索する
  • %:(,[に対して対応する),]や}を検索
  • Ctrl-O:元の場所に戻る

テキストの削除と挿入

  • cw:単語の末尾までを削除し挿入
  • c$:行末までを削除し挿入

テキストの置換

  • :s/A/B:現在行の最初のAをBに置換する
  • :s/A/B/g:現在行の全てのAをBに置換する
  • :#,#s/A/B/g:?行から?行までのすべてのAをBに置換する
  • :%S/A/B/g:ファイルの中の全ての検索語句を置換する
  • :%s/A/B/gc:cを加えると置換の度に確認を求める
  • r:カーソルの下の文字を置換
  • R:単語の末尾までを置換

テキストの選択・保存・取込

  • v:テキストの選択
  • v-:w ファイル名:選択範囲に名前を付けて保存
  • :r ファイル名:ファイルの中身の取込

vimでマウスクリックを有効にする方法

$
0
0

ホームディレクトリ上に「.vimrc」ファイルを作成

~/.vimrc
if has("mouse") " Enable the use of the mouse in all modes
  set mouse=a
endif

以上。

人類は Java をターミナル内で書く手段を確立していた

$
0
0

X なしで Eclim を使う方法。

導入

Vagrant や Docker の流行により、気軽に仮想マシンを使う時代になっています。すると開発にも仮想マシンを使うようにしてホストマシンはできるだけ汚さない方向に持って行きたいことになる。手軽に使いたいため当然 X 環境などは構築しない。

ここで問題になるのは IDE を前提にした言語。 IDE はウィンドウシステムの中で動くため、仮想マシンを X なしで使うと IDE の機能を使えず開発が厳しくなってくる。

具体的に言うと Java 、ジャバ、ジャヴァである。

書くときはあまりにも長い名前をタイプしたくないため補完が欲しくなり、読むときは名前解決のためのタグジャンプが欲しくなる。

Eclim

Eclimは Eclipse の機能を Vim を始めとする各種エディタで使うインターフェースを提供するソフトウェアです。ネットワーク越しに Eclipse の機能を叩いています。
ウィンドウシステムありの環境においては、 Eclipse と Vim のインターフェースを両方使いたいか否かによって、次の使い方があります。

  1. Eclipse を立ち上げず、 Eclim デーモンを立ち上げて Vim で Eclim と通信
  2. Eclipse を立ち上げて、外部エディタとして Vim で Eclim と通信
  3. Eclipse を立ち上げて、 Eclipse 内に埋め込まれた Vim で Eclim と通信

ここでは X 環境を構築しないので、 1. の使い方をすることになります。

必要なもの

  • Eclipse 4.3.2
  • Eclim 2.3.2
    • 最新版の Eclim 2.3.4 では動かなかった
  • Xfvb
    • 仮想 X サーバ
  • build-essential とかそのへんのやつ

インストール

Ubuntu では

$ sudo apt-get install openjdk-6-jdk xvfb build-essential
$ wget <eclipse_mirror>/eclipse-<version>-linux-gtk.tar.gz
$ tar -zxf eclipse-<version>-linux-gtk.tar.gz
$ java -Dvim.files=$HOME/.vim \
    -Declipse.home=$HOME/eclipse \
    -jar eclim_2.3.2.jar install

こんな感じです。
Eclim 2.3.4 および 2.3.3 では動かなかったので 2.3.2 を使っています。

使い方

Xvfb で仮想 X サーバを立ち上げて、その上で Eclipse および Eclim を起動し Vim から利用します。

$ Xvfb :1 -screen 0 1024x768x24 &$ DISPLAY=:1 ./eclipse/eclimd start

すると Eclim デーモンが立ち上がるので、 Vim を立ち上げて

:PingEclim

でバージョンが返ってくることを確認。

:ProjectCreate /path/to/my_project -n java

でプロジェクト作成。

補完

$ mkdir -p /path/to/my_project/src/a/b/c
$ vim /path/to/my_project/src/a/b/c/X.java
packagea.b.c;classX{publicstaticvoidmain(String[]args){}}

ここまで書いたところで、 mainの中に

System.

と入力して <C-x><C-u>を入力しましょう。すると補完候補が表示されるはず。他にも、次のように

packagea.b.c;classX{privatestaticArrayList<Integer>lst=newArrayList<Integer>();publicstaticvoidmain(String[]args){System.out.println("Hello, Eclim!");}}

ArrayListimport宣言がありませんが、 ArrayListの上にカーソルを持って行き :JavaImportと叩くと importを追加してくれます。また、この lstについて

lst.<C-x><C-u>

ArrayListのメソッドも補完してくれます。

タグジャンプ

packagea.b.c;classYimplementsRunnable{publicvoidrun(){System.out.println("Hello from Y");}}
packagea.b.c;classX{publicstaticvoidmain(String[]args){Yy=newY();y.run();}}

runの上に行き :JavaSearchContextでクラス Yrun()メソッドにジャンプできます。

他の言語

http://eclim.org/vim/index.htmlによると

  • C/C++
  • Html / Css
  • Java
  • Javascript
  • Php
  • Python
  • Ruby
  • Scala
  • Xml / Dtd / Xsd

に対応しているらしい。僕も Scala で使いたいので試してみる。

コマンド一覧

http://eclim.org/cheatsheet.htmlを一通り見ておくと良いと思います。

vim-surround の丸括弧で囲むコマンドを使った時にスペースが入らないようにする

$
0
0

カーソルが乗っている単語を丸括弧で囲む場合は ysiw(とコマンドを入力すると、スペース付きの丸括弧で囲まれます。

hoge
( hoge )

個人的には自動挿入されるスペースがとても気になります。スペースを含めない場合は ysiw)と入力することでスペース無しの丸括弧で囲むことができます。

hoge
(hoge)

下記を参考にしました。ありがとうございます。
http://stackoverflow.com/questions/9164405/vim-surround-inserts-extra-space-around-the-word

gitの差分をvimdiffで表示すると見やすい!

$
0
0

こんな感じで差分が表示されます。
左右に並ぶので比較しやすいです。
編集もできるので「あ、変なログが残っちゃってたわ」みたいなときササッと直せます。

スクリーンショット 2014-04-14 19.15.16.png

設定手順

STEP1

.gitconfigに以下の設定を追加します。

.gitconfig
[diff]external=git_diff_wrapper[pager]diff=

STEP2

以下の様なgit_diff_wrapperというファイルを作成し、PATHの通っている場所に置きます。
私の場合/usr/local/binに置きました。

git_diff_wrapper
#!/bin/sh
vimdiff "$2""$5"

あとはいつも通りgit diffをすればOK!

※git_diff_wrapperに実行権限エラーがでたらchmood a+x git_diff_wrapperとかで実行権限を追加。

Vim 英数入力に自動で切り替える神スクリプト

$
0
0

Vim のノーマルモードであぁぁー!ってなってイライラすることありますよね。

ググっても、なかなか理想的なソリューションが見つからず諦めていましたが、
英数入力に切り替えるのは AppleScript 使えばいい感じにできんじゃね?と思いついてしまいました。

次に2つの場合に自動的に切り替えられます。

  • インサートモードを抜けてノーマルモードになった時
  • アプリケーション移動で Vim にフォーカスが移った時
if executable('osascript')lets:keycode_jis_eisuu =102letg:force_alphanumeric_input_command ="osascript -e 'tell application \"System Events\" to key code " . s:keycode_jis_eisuu . "' &"inoremap<silent><Esc><Esc>:call system(g:force_alphanumeric_input_command)<CR>

  autocmd!FocusGained *
    \ call system(g:force_alphanumeric_input_command)endif

実は、入力ソースを切り替える方法でかなり試行錯誤しました。
例えば、ここにある方法では、
ATOK や Google 日本語入力を入れている場合では入力ソースの名前が異なるため厄介なのと、
GUI 操作をするので、Accessibility で許可しなければならない上処理が遅い問題がありました。
そこで、「英数に切り替えるためのキーコード」をシステムに送信するという全く異なるアプローチを取ることにしました。

ちなみに、私の vimrc は Github で公開されていますのでよかったらご参考に。

creasty/dotfiles


[一日一Vim](その1)Align

$
0
0

Align

CSVやらTSVやらの整形に特化したプラグイン。

a,bb,ccc,dddd,
eeee,ffffff,ggggg,
hh,iii,jjjj,kk

こんな文書も :Align ,とすると

a    , bb     , ccc   , dddd , 
eeee , ffffff , ggggg , 
hh   , iii    , jjjj  , kk

こうなります。

こちらのgithubを NeoBundle.vimでインストールするとすぐに使えて簡単です。

私はもっぱら Cucumber の テーブル整形とかに重宝しそうだなぁと思って入れました。
(まだ使ってませんが、きっといい感じだと思ってます)

雑談

ここ二年くらいVimを使っていますが、基本動作もよくわからない状態が続いているので、ここらでちょっと基礎からやったほうがいいのかな?と思ってました。

んで、ふと、一日一個なにか新しいVimの知識を取り入れて、一年間続けたら、結構な知識量になってるんじゃないかなぁと。ただ続けるのもアレなので、記事でも書いてできるだけ三日坊主で終わらせないようにしたいなぁと思ってます。

[一日一Vim](その2)便利な選択法

$
0
0

ビジュアルモード

基本中の基本ですが、ノーマルモード中にvを押すとビジュアルモードになります。
ある文字を選択してコピー&ペースト。文章編集のよくある動作だと思います。

最近知ったのですが、vの後に続けるコマンドによって、色々できるみたいです。
例えばvの後にiwと打てば、現在カーソルが当たっている単語を選択することができるようです。

他にもvi"と打てば、ダブルクオテーションでくくられている文字の中を選択することができるよう。

ほかにもiの代わりにaを使って、va"とするとダブルクオテーションを含めた文字の選択ができるようです。

vの代わりにdを使うと、選択ではなく、削除ができるようです。

最近でびっくりしたのは、vitと打つと、XMLやHTMLのインナーテキストを選択してくれることです。プラグインではなく、デフォルトで入っているのは意外でした。

この辺り、まとまったサイトを昔に見つけたのですが、どこだったのか忘れてしまいました。残念。。。

[一日一Vim](その3)検索した文字を置換する

$
0
0

まず検索

まず/で何かしら検索します。

置換

次に:%sで置換をするのですが、今まで私は検索した文字を手入力してましたが、そんなことしなくても:%s//{置換文字}/と、検索文字部分を何も記述しないと、以前に検索した文字を検索文字の対象にするそうです。

次のような文字列があったとして

test hoge fuga test hoge fuga

/testとして検索

その後で:%s//TEST/gとすると

TEST hoge fuga TEST hoge fuga

と以前に検索した文字が置換されました。ちなみに置換コマンドの最後のgヒットした文字列を全て置換するという意味になります。

[一日一Vim](その4)大文字小文字変換

$
0
0

小文字を大文字に変換する

Wireshark で HEX String を見ると小文字だったりします。
私は HEX は大文字で書きたい派なので、大文字変換はよくします。

vで ヴィジュアルモードに移行して任意の範囲を選択します。
その後、Uすると選択範囲が大文字になります。

大文字を小文字に変換する

小文字はUの替わりにuを使います。さっき知りました。
uはアンドゥのイメージが強く、ヴィジュアルモードとノーマルモードがごっちゃになってました。

ノーマルモードのuはアンドゥ
ヴィジュアルモードのuは小文字変換
覚えときましょう。(言い聞かせ)

ちなみにリドゥはノーマルモードで<C-r>ですね。
ノーマルモードのUは「行に対して行った変更の全てを取り消す」らしいです。

参考サイト:
http://advweb.seesaa.net/article/286507.html
http://archiva.jp/web/tool/vim_basic.html

.vimrc

$
0
0
.vimrc
"---------------------------------------------------------------------------


" Copyright (C) 2011 KaoriYa/MURAOKA Taro


"#####表示設定#####
set title "編集中のファイル名を表示
syntax on "コードの色分け
set tabstop=4 "インデントをスペース4つ分に設定
set smartindent "オートインデント

"#####検索設定#####
set ignorecase "大文字/小文字の区別なく検索する
set smartcase "検索文字列に大文字が含まれている場合は区別して検索する
set wrapscan "検索時に最後まで行ったら最初に戻る
"--------------------
"" 基本的な設定
"--------------------
"新しい行のインデントを現在行と同じにする
set autoindent 

"バックアップファイルのディレクトリを指定する
set backupdir=$HOME/vimbackup
"
""クリップボードをWindowsと連携する
set clipboard=unnamed

"vi互換をオフする
""スワップファイル用のディレクトリを指定する
set directory=$HOME/vimbackup

"タブの代わりに空白文字を指定する
set expandtab
"
""変更中のファイルでも、保存しないで他のファイルを表示する
set hidden

"インクリメンタルサーチを行う
set incsearch
"
""行番号を表示する
set number

"閉括弧が入力された時、対応する括弧を強調する
set showmatch
"
""新しい行を作った時に高度な自動インデントを行う
set smarttab

" grep検索を設定する
set grepformat=%f:%l:%m,%f:%l%m,%f\ \ %l%m,%f
set grepprg=grep\ -nh
"
" " 検索結果のハイライトをEsc連打でクリアする
nnoremap <ESC><ESC> :nohlsearch<CR>
" mapping関連カスタマイズ
map ¥ <leader>
noremap ; :
noremap : ;
if has('vim_starting')
          set runtimepath+=~/.vim/bundle/neobundle.vim/
  endif

call neobundle#rc(expand('~/.vim/bundle/'))
" let NeoBundle manage NeoBundle
NeoBundle 'Shougo/neobundle.vim'
"
" add plugins
"
filetype plugin on
"
NeoBundleCheck
NeoBundle 'davidhalter/jedi-vim'
NeoBundle 'Shougo/neocomplete.vim'
NeoBundle 'haya14busa/vim-easymotion'
NeoBundle 'thinca/vim-quickrun'
NeoBundle 'Shougo/neocomplcache'
NeoBundle 'nathanaelkane/vim-indent-guides'

let g:jedi#auto_vim_configuration = 0

if !exists('g:neocomplete#force_omni_input_patterns')
                  let g:neocomplete#force_omni_input_patterns = {}
          endif

let g:neocomplete#force_omni_input_patterns.python = '\h\w*\|[^. \t]\.\w*'

" ホームポジションに近いキーを使う
let g:EasyMotion_keys='hjklasdfgyuiopqwertnmzxcvbHJKLASDFGYUIOPQWERTNMZXCVB'
" 「'」 + 何かにマッピング
let g:EasyMotion_leader_key="'"
" " 1 ストローク選択を優先する
let g:EasyMotion_grouping=1
" " カラー設定変更
hi EasyMotionTarget ctermbg=none ctermfg=red
hi EasyMotionShade  ctermbg=none ctermfg=blue
autocmd FileType python let b:did_ftplugin = 1


let g:lightline = {
      \ 'colorscheme': 'powerline',
      \ 'mode_map': {'c': 'NORMAL'},
      \ 'active': {
      \   'left': [ ['mode', 'paste'], ['fugitive', 'filename', 'cakephp', 'currenttag', 'anzu'] ]
      \ },
      \ 'component': {
      \   'lineinfo': ' %3l:%-2v',
      \ },
      \ 'component_function': {
      \   'modified': 'MyModified',
      \   'readonly': 'MyReadonly',
      \   'fugitive': 'MyFugitive',
      \   'filename': 'MyFilename',
      \   'fileformat': 'MyFileformat',
      \   'filetype': 'MyFiletype',
      \   'fileencoding': 'MyFileencoding',
      \   'mode': 'MyMode',
      \   'anzu': 'anzu#search_status',
      \   'currenttag': 'MyCurrentTag',
      \   'cakephp': 'MyCakephp',
      \ }
      \ }


function! MyModified()
  return &ft =~ 'help\|vimfiler\|gundo' ? '' : &modified ? '+' : &modifiable ? '' : '-'
endfunction

function! MyReadonly()
  return &ft !~? 'help\|vimfiler\|gundo' && &readonly ? ' ' : ''
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') && strlen(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

function! MyCurrentTag()
  return tagbar#currenttag('%s', '')
endfunction

function! MyCakephp()
  return exists('*cake#buffer') ? cake#buffer('type') : ''
endfunction

NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/vimproc'
NeoBundle 'majutsushi/tagbar'
NeoBundle 'itchyny/lightline.vim'

let g:lightline = {
      \ 'colorscheme': 'wombat'
      \ }
set list
set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%
" 全角スペース・行末のスペース・タブの可視化
if has("syntax")
    syntax on

    " PODバグ対策
    syn sync fromstart

    function! ActivateInvisibleIndicator()
        " 下の行の" "は全角スペース
        syntax match InvisibleJISX0208Space " " display containedin=ALL
        highlight InvisibleJISX0208Space term=underline ctermbg=Blue guibg=darkgray gui=underline
        "syntax match InvisibleTrailedSpace "[ \t]\+$" display containedin=ALL
        "highlight InvisibleTrailedSpace term=underline ctermbg=Red guibg=NONE gui=undercurl guisp=darkorange
        "syntax match InvisibleTab "\t" display containedin=ALL
        "highlight InvisibleTab term=underline ctermbg=white gui=undercurl guisp=darkslategray
    endfunction

    augroup invisible
        autocmd! invisible
        autocmd BufNew,BufRead * call ActivateInvisibleIndicator()
    augroup END
endif

" 文字コードの自動認識
if &encoding !=# 'utf-8'
  set encoding=japan
  set fileencoding=japan
endif
if has('iconv')
  let s:enc_euc = 'euc-jp'
  let s:enc_jis = 'iso-2022-jp'
  " iconvがeucJP-msに対応しているかをチェック
  if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'eucjp-ms'
    let s:enc_jis = 'iso-2022-jp-3'
  " iconvがJISX0213に対応しているかをチェック
  elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'euc-jisx0213'
    let s:enc_jis = 'iso-2022-jp-3'
  endif
  " fileencodingsを構築
  if &encoding ==# 'utf-8'
    let s:fileencodings_default = &fileencodings
    let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
    let &fileencodings = &fileencodings .','. s:fileencodings_default
    unlet s:fileencodings_default
  else
    let &fileencodings = &fileencodings .','. s:enc_jis
    set fileencodings+=utf-8,ucs-2le,ucs-2
    if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$'
      set fileencodings+=cp932
      set fileencodings-=euc-jp
      set fileencodings-=euc-jisx0213
      set fileencodings-=eucjp-ms
      let &encoding = s:enc_euc
      let &fileencoding = s:enc_euc
    else
      let &fileencodings = &fileencodings .','. s:enc_euc
    endif
  endif
  " 定数を処分
  unlet s:enc_euc
  unlet s:enc_jis
endif

" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
  set ambiwidth=double
endif

"---------------------------------------------------------------------------


" Copyright (C) 2011 KaoriYa/MURAOKA Taro


"#####表示設定#####
set title "編集中のファイル名を表示
syntax on "コードの色分け
set tabstop=4 "インデントをスペース4つ分に設定
set smartindent "オートインデント

"#####検索設定#####
set ignorecase "大文字/小文字の区別なく検索する
set smartcase "検索文字列に大文字が含まれている場合は区別して検索する
set wrapscan "検索時に最後まで行ったら最初に戻る
"--------------------
"" 基本的な設定
"--------------------
"新しい行のインデントを現在行と同じにする
set autoindent 

"バックアップファイルのディレクトリを指定する
set backupdir=$HOME/vimbackup
"
""クリップボードをWindowsと連携する
set clipboard=unnamed

"vi互換をオフする
""スワップファイル用のディレクトリを指定する
set directory=$HOME/vimbackup

"タブの代わりに空白文字を指定する
set expandtab
"
""変更中のファイルでも、保存しないで他のファイルを表示する
set hidden

"インクリメンタルサーチを行う
set incsearch
"
""行番号を表示する
set number

"閉括弧が入力された時、対応する括弧を強調する
set showmatch
"
""新しい行を作った時に高度な自動インデントを行う
set smarttab

" grep検索を設定する
set grepformat=%f:%l:%m,%f:%l%m,%f\ \ %l%m,%f
set grepprg=grep\ -nh
"
" " 検索結果のハイライトをEsc連打でクリアする
nnoremap <ESC><ESC> :nohlsearch<CR>
" mapping関連カスタマイズ
map ¥ <leader>
noremap ; :
noremap : ;
if has('vim_starting')
          set runtimepath+=~/.vim/bundle/neobundle.vim/
  endif

call neobundle#rc(expand('~/.vim/bundle/'))
" let NeoBundle manage NeoBundle
NeoBundle 'Shougo/neobundle.vim'
"
" add plugins
"
filetype plugin on
"
NeoBundleCheck
NeoBundle 'davidhalter/jedi-vim'
NeoBundle 'Shougo/neocomplete.vim'
NeoBundle 'haya14busa/vim-easymotion'
NeoBundle 'thinca/vim-quickrun'
NeoBundle 'Shougo/neocomplcache'
NeoBundle 'nathanaelkane/vim-indent-guides'

let g:jedi#auto_vim_configuration = 0

if !exists('g:neocomplete#force_omni_input_patterns')
                  let g:neocomplete#force_omni_input_patterns = {}
          endif

let g:neocomplete#force_omni_input_patterns.python = '\h\w*\|[^. \t]\.\w*'

" ホームポジションに近いキーを使う
let g:EasyMotion_keys='hjklasdfgyuiopqwertnmzxcvbHJKLASDFGYUIOPQWERTNMZXCVB'
" 「'」 + 何かにマッピング
let g:EasyMotion_leader_key="'"
" " 1 ストローク選択を優先する
let g:EasyMotion_grouping=1
" " カラー設定変更
hi EasyMotionTarget ctermbg=none ctermfg=red
hi EasyMotionShade  ctermbg=none ctermfg=blue
autocmd FileType python let b:did_ftplugin = 1


let g:lightline = {
      \ 'colorscheme': 'powerline',
      \ 'mode_map': {'c': 'NORMAL'},
      \ 'active': {
      \   'left': [ ['mode', 'paste'], ['fugitive', 'filename', 'cakephp', 'currenttag', 'anzu'] ]
      \ },
      \ 'component': {
      \   'lineinfo': ' %3l:%-2v',
      \ },
      \ 'component_function': {
      \   'modified': 'MyModified',
      \   'readonly': 'MyReadonly',
      \   'fugitive': 'MyFugitive',
      \   'filename': 'MyFilename',
      \   'fileformat': 'MyFileformat',
      \   'filetype': 'MyFiletype',
      \   'fileencoding': 'MyFileencoding',
      \   'mode': 'MyMode',
      \   'anzu': 'anzu#search_status',
      \   'currenttag': 'MyCurrentTag',
      \   'cakephp': 'MyCakephp',
      \ }
      \ }


function! MyModified()
  return &ft =~ 'help\|vimfiler\|gundo' ? '' : &modified ? '+' : &modifiable ? '' : '-'
endfunction

function! MyReadonly()
  return &ft !~? 'help\|vimfiler\|gundo' && &readonly ? ' ' : ''
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') && strlen(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

function! MyCurrentTag()
  return tagbar#currenttag('%s', '')
endfunction

function! MyCakephp()
  return exists('*cake#buffer') ? cake#buffer('type') : ''
endfunction

NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/vimproc'
NeoBundle 'majutsushi/tagbar'
NeoBundle 'itchyny/lightline.vim'

let g:lightline = {
      \ 'colorscheme': 'wombat'
      \ }
set list
set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%
" 全角スペース・行末のスペース・タブの可視化
if has("syntax")
    syntax on

    " PODバグ対策
    syn sync fromstart

    function! ActivateInvisibleIndicator()
        " 下の行の" "は全角スペース
        syntax match InvisibleJISX0208Space " " display containedin=ALL
        highlight InvisibleJISX0208Space term=underline ctermbg=Blue guibg=darkgray gui=underline
        "syntax match InvisibleTrailedSpace "[ \t]\+$" display containedin=ALL
        "highlight InvisibleTrailedSpace term=underline ctermbg=Red guibg=NONE gui=undercurl guisp=darkorange
        "syntax match InvisibleTab "\t" display containedin=ALL
        "highlight InvisibleTab term=underline ctermbg=white gui=undercurl guisp=darkslategray
    endfunction

    augroup invisible
        autocmd! invisible
        autocmd BufNew,BufRead * call ActivateInvisibleIndicator()
    augroup END
endif

" 文字コードの自動認識
if &encoding !=# 'utf-8'
  set encoding=japan
  set fileencoding=japan
endif
if has('iconv')
  let s:enc_euc = 'euc-jp'
  let s:enc_jis = 'iso-2022-jp'
  " iconvがeucJP-msに対応しているかをチェック
  if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'eucjp-ms'
    let s:enc_jis = 'iso-2022-jp-3'
  " iconvがJISX0213に対応しているかをチェック
  elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'euc-jisx0213'
    let s:enc_jis = 'iso-2022-jp-3'
  endif
  " fileencodingsを構築
  if &encoding ==# 'utf-8'
    let s:fileencodings_default = &fileencodings
    let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
    let &fileencodings = &fileencodings .','. s:fileencodings_default
    unlet s:fileencodings_default
  else
    let &fileencodings = &fileencodings .','. s:enc_jis
    set fileencodings+=utf-8,ucs-2le,ucs-2
    if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$'
      set fileencodings+=cp932
      set fileencodings-=euc-jp
      set fileencodings-=euc-jisx0213
      set fileencodings-=eucjp-ms
      let &encoding = s:enc_euc
      let &fileencoding = s:enc_euc
    else
      let &fileencodings = &fileencodings .','. s:enc_euc
    endif
  endif
  " 定数を処分
  unlet s:enc_euc
  unlet s:enc_jis
endif

" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
  set ambiwidth=double
endif
Viewing all 5770 articles
Browse latest View live
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>