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

Vim+LaTeXでVimのConceal機能を上手に使うプラグインを作った

$
0
0

VimのConceal機能

【VIM】新機能“CONCEAL”構文属性を使う」でも紹介されているように,Vimのsyntax情報を使って,特定の文字列を別の文字列に置き換えるなど,コードを見やすくするもの...

なのですが,「【Vim】Conceal機能ってぶっちゃけ見にくいと思う」にもあるように,世間の評価はそんなに良くもなく(たぶん..),僕も昔使った時は「ないな..」と感じ,これまではこの機能を無効にしていました.

Conceal機能を見直してみる

とはいえ,式が複雑になってくるとやっぱりソースコードを見るのは辛いです.特に僕の場合は,下付きまたは上付きの非斜体や,ボールド体が多く,例えば

output.png

のような,そこまで複雑じゃない式を書くにも

\begin{equation}\bm{F} = \bm{F}^\mathrm{e}\cdot\bm{F}^\mathrm{p}\end{equation}

Second-Piola Kirchhoff stress tensor $\bm{S} =\bm{F}^{-1}\cdot\bm{\tau}\cdot\bm{F}^\mathrm{-T}$\begin{equation}\mathscr{F} (\bm{\tau},\alpha) = \|\mathrm{dev}[\bm{\tau}]\| - \sqrt{\frac{2}{3}}\left[\sigma_Y + K\alpha\right]\le 0
\end{equation}

こんなにソースコードは長くなり,見ただけでは何が書いてあるのか本当に分かりにくい..

この\mathrm\bmなどはソースコードを本当に見づらくするので,今回の主な目標はこいつらをConceal機能を使って見やすくすることです.

プラグイン「tex-conceal.vim」を作ってみた

ということで,Vimのプラグインを作ってみました.まず,上のソースコードはConceal機能を使わないとVim上ではこんな感じです.
normal.png

デフォルトのConceal機能を使うと,
conceal.png
こんな感じになり,少しマシになりました.ただ,やっぱり\mathrmなどが長くて邪魔ですね.マクロを定義して短くする方法もありますが,たくさんあると結局見にくいことには変わりません.

それが,今回作ったプラグインを導入すると,
conceal_plugin.png
こうなります!かなりスッキリしましたね!今度はソースコードを見ても何が書いてあるのか随分わかりやすいと思います.

僕の使っているカラースキームでは,\mathrmの場所はテキストと同じように白色で,\bmを使っている場所では,ギリシャ文字でなければボールド体になります.ギリシャ文字もボールドにしたいという場合は,luaLaTeXを使って\tauではなく,τと直に打てばボールド体になります.

使い方

インストール方法

使ってるプラグインマネージャに合わせて,以下のような感じでインストールしてください.

~/.vimrc
Plugin 'KeitaNakamura/tex-conceal.vim'" for Vundle
or
Plug   'KeitaNakamura/tex-conceal.vim', {'for': 'tex'} " for VimPlug

設定

~/.vimrc
setconceallevel=2letg:tex_conceal="adgmb"

と設定すればOKです.上記の設定の2行目では,デフォルトの上付き,下付きの設定を無効にしています.これは,例えば

$x^\alpha$$x^{\alpha}$

と書くと,それぞれConceal機能がONの状態では

$x^α$$x\alpha$

という風に見えてしまうためです.1つ目は問題ないですが,{}を使った方では何故か^も消えてしまい,x×\alphaの掛け算に見えてしまいます.上付き,下付きはこういうような問題が生じやすいので,デフォルトの機能はOFFにして,単純なx^2など(1~9まで)のみ上付きで表示されるように再定義しています.あと,x^{-1}は上の写真にもあるように上付き表示されるようになっていますが,今のところマイナスはこれしか定義していません(-9~-1まで定義しようか悩み中です).\mathrm{T}\mathrm{-T}も僕がよく使うので特別に定義しています.これは,テンソルの転置の意味ですが,そうじゃない場合もあるかもしれないので,この部分は選択できるようにしようと思っています.

あと,僕はカーソルのある行だけConceal機能が無効化されるように設定しています(カーソルのある行は生のソースコードが見れます).というか,デフォルトではそういう設定になっているはずです.心配であれば,

~/.vimrc
setconcealcursor=""

とすれば良いです.

あとがき

今回,自分でConcealの設定をしてみて僕はこの機能が大好きになりました.敬遠してる人や,昔使ってみて合わないなと感じた人もこれを機に是非使ってみて下さい.


Eclipseでもvimを使いたい!なのでVrapper

$
0
0

vimmerはもてるんだって
とういうわけでEclipseもvimライクにつかいます

Vrapperのインストール

Eclipseでソフトウェアのインストールをします
1. 「ヘルプ」⇒「新規ソフトウェアのインストール...」
インストールダイアログが表示されます
2. 「追加(A)...」ボタンをクリック
すると、リポジトリーの追加ダイアログが表示されます
3. 名前は適当に"Vrapper"などにしておいて、ロケーションに
http://vrapper.sourceforge.net/update-site/stable
と入力して「OK」
作業対象.PNG
4. Vrapperにチェックを入れて「次へ(N)>」をクリック
vrapper選択.PNG

依存関係とかのチェックをしてくれます
5. インストール詳細が表示されます
「次へ(N)>」をクリック
6. ライセンスのレビューが表示されます
「・・・同意します」にチェックを入れて「完了(F)」をクリック

これでOK

キーバインドの変更

Eclipseのショートカットとvimのキーバインドがかち合ったりすることがあります
その場合はEclipseのショートカットを切るか、あきらめるかです
Eclipseのショートカットの設定は
「ウィンドウ」→「設定」→「一般」→「キー」
で編集できます
例えば
Ctrl+[ を無効にしたりとか・・・

vrapperrcについて

vimでいうところの"vimrc"が"vrapperrc"です
ファイル名を"_vrapperrc"として
C:\Users\ユーザ名
の直下に置けば読込んでくれます

Ctrl+v のペーストは残しておきたかったので

"<space>v で矩形選択
noremap <Space>v <C-v>

とかにしてSpace+vで矩形選択を出来るようにしたりしています

参考

http://yuroyoro.hatenablog.com/entry/20100218/1266477264
https://runble1.com/eclipse-colortheme-keybinding-vim/

CygwinのVimに関連付けする

$
0
0

Cygwinのvimにファイルを関連付ける方法。

WindowsユーザでCUI版vimが大好きな人向け。
.cppとか.hをダブルクリックするとCygwinのvimで開くことができるようになる。

以下のようなcmdファイルをパスが通っているフォルダに作成する。1

vim.cmd
REM @echo offif"%1"==""gotostartsetarg="%1"setstr1=%arg:\=/%setstr2=%str1:C:=/cygdrive/c%
C:\cygwin64\bin\mintty -e /bin/bash -l -c "vim %str2%"gotoend:start
C:\cygwin64\bin\mintty -e /bin/bash -l -c "vim":end

関連付けたいファイルを右クリックして
プログラムから開く(H) > 規定プログラムの選択(C) > 参照(B)
と選択して、上記ファイルを関連付けをする。


  1. Cygwinの32ビット版を使っている人はcygwin64をcygwinへ書き換える。 

MacVim-KaoriYa の gVim 起動が遅かったので一時的な対処法を調べてみた

$
0
0

最近の MacVim-KaoriYa で gVim の起動が遅かったので調査してみた。

環境

  • OS X El Capitan Version 10.11.6
  • MacVim-KaoriYa 20161013

起動処理の経過時間のメッセージをファイルに書き出す方法

--startuptime file_name.logオプションを付けて gVim を起動し、起動処理をファイルに書き出し調査する。

ちなみに、Vim 起動時の他オプションとして、

引数vimrcファイルプラグイン
なしyesyes
-u NONEnono
-u NORCnoyes
--nopluginyesno

があるので、自分の .vimrc やプラグイン環境が原因の場合とそうでない場合を切り分けて検証できる。

実際に書き出す

$ gvim test.txt --startuptime before.log
before.log
timesinmsecclockself+sourcedself:sourcedscriptclockelapsed:otherlines000.005000.005:---VIMSTARTING---()034.969028.270000.935:sourcing$VIM/vimrc036.213000.392000.392:sourcing/Users/user_name/.vim/dein/repos/github.com/Shougo/dein.vim/autoload/dein.vim038.989001.656001.656:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/ftoff.vim039.236002.555000.899:sourcing/Users/user_name/.vim/dein/state_Vim.vim061.339000.473000.473:sourcing/Users/user_name/.vim/dein/.dein/ftdetect/ftdetect.vim061.907000.430000.430:sourcing/Users/user_name/.vim/dein/.dein/ftdetect/ftdetect.vim065.970001.423001.423:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/lang/menu_ja_jp.utf-8.macvim.vim066.055000.025000.025:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/lang/menu_ja_jp.utf-8.vim066.868000.054000.054:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/autoload/paste.vim8456.5698394.3998392.897:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/menu.vim8456.6088417.140021.838:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/filetype.vim8456.790000.021000.021:sourcing/Users/user_name/.vim/dein/.dein/ftplugin.vim8456.858000.008000.008:sourcing/Users/user_name/.vim/dein/.dein/ftplugin.vim8456.908000.010000.010:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/ftplugin.vim8457.087000.010000.010:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/indent.vim()8840.837000.003:---VIMSTARTED---

/Applications/MacVim.app/Contents/Resources/vim/runtime/menu.vim の読み込みに非常に時間が掛かっていることが分かる。

調査

以前は起動に1秒も掛かっていなかったので https://github.com/macvim-dev/macvim
の直近のコミットログを辿ったところ、https://github.com/macvim-dev/macvim/pull/331/filesにて読み込みに時間が掛かりそうな

menu.vim
+let s:n .= globpath(&packpath, "pack/*/{opt,start}/*/colors/*.vim")

の差分があった。

カラースキーム読み込みの走査が、 :echo &packpathによると

/Users/user_name/.vim,
/Applications/MacVim.app/Contents/Resources/vim/vimfiles,
/Applications/MacVim
.app/Contents/Resources/vim/runtime,
/Applications/MacVim.app/Contents/Resources/vim/vimfiles/afte
r,
/Users/user_name/.vim/after

で追加で行われるようになっていたので、試しに該当箇所をコメントアウトして gVim を再起動してみた。

修正後

$ gvim test.txt --startuptime after.log
after.log
timesinmsecclockself+sourcedself:sourcedscriptclockelapsed:otherlines000.007000.007:---VIMSTARTING---()038.875027.662001.341:sourcing$VIM/vimrc039.870000.348000.348:sourcing/Users/user_name/.vim/dein/repos/github.com/Shougo/dein.vim/autoload/dein.vim043.204002.049002.049:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/ftoff.vim043.492002.976000.927:sourcing/Users/user_name/.vim/dein/state_Vim.vim065.683000.461000.461:sourcing/Users/user_name/.vim/dein/.dein/ftdetect/ftdetect.vim066.249000.426000.426:sourcing/Users/user_name/.vim/dein/.dein/ftdetect/ftdetect.vim069.583001.117001.117:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/lang/menu_ja_jp.utf-8.macvim.vim069.648000.022000.022:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/lang/menu_ja_jp.utf-8.vim070.482000.056000.056:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/autoload/paste.vim086.663020.146018.951:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/menu.vim086.698042.970021.937:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/filetype.vim086.949000.020000.020:sourcing/Users/user_name/.vim/dein/.dein/ftplugin.vim087.032000.009000.009:sourcing/Users/user_name/.vim/dein/.dein/ftplugin.vim087.089000.012000.012:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/ftplugin.vim087.280000.010000.010:sourcing/Applications/MacVim.app/Contents/Resources/vim/runtime/indent.vim()455.765000.002:---VIMSTARTED---

起動時間が9秒未満から0.5秒未満に減った!

一時的な対処法まとめ

MacVim-KaoriYa 20161013 にて、/Applications/MacVim.app/Contents/Resources/vim/runtime/menu.vim の 395 行目の

menu.vim#395
lets:n .= globpath(&packpath,"pack/*/{opt,start}/*/colors/*.vim")

をコメントアウトすると gVim の起動時の遅さが改善される。

ただし、コメントアウトするとパッケージ1ディレクトリ以下のカラースキームがメニューバーの Edit > Color Schemeに表示されないままになる。

MacVim への Issue は、 MacVim-KaoriYa ではなく MacVim にて確認次第 Issue を立てる予定。


  1. Vim 8.0 にて追加された機能。 

Vimの1文字コマンドをまとめてみる (アルファベット編)

$
0
0

概要

このページは、Vimの1文字で操作内容が決まるコマンドをフォーカスしてまとめたページです。

よくあるコマンドの紹介方法として「カーソル操作・編集操作」のようなカテゴリ別があります。基本的な操作の習得に対して優れている一方で、基本的ではないちょっと便利なコマンドなどは紹介されにくいです。
また、その次のステップとして 公式help が紹介されることもあるが、分量が非常に多いため読み切るのは辛いです。

この2つのステップのギャップを少しでも埋めるため、1文字コマンドにフォーカスしたページがあったら便利かなと思い作成しました。
1文字コマンドを選んだ理由は、おそらく重要なコマンドほど少ないタイプ数で打てるように割り当てられているだろうという予測から。

1文字コマンドの定義

1文字目で操作内容が決定するようなコマンドを1文字コマンドとする。
具体的には、次のどちらかの条件を満たすコマンドのことを指す。

  • 1文字で完結するコマンド (a, A, CTRL-A, $, 0, など)
  • 公式helpに 1文字+{***} で載っているコマンド (c{motion}, f{char}, m{A-Za-z}など)

このページでは、ノーマルモードでアルファベットから始まる1文字コマンドをまとめる。
(今後、ctrl, 記号を増やしたい)

予備知識

  • {motion}: カーソル移動系のコマンドを表す。具体的には、表内で太字で示されているコマンド (hjkl...) などを表す
  • {char}: 任意の1文字を表す
  • word単位: vimにおける"word"。空白に加えて、数字やアンダースコア (_)も単語の区切りとする。詳細は:help word参照
  • WORD単位: vimにおける"WORD"。空白のみを単語の区切りとする単位。詳細は:help word参照

ノーマルモード:アルファベット小文字編

太字で示したコマンドは {motion} に対応するコマンドである。
説明に [buffer] のあるコマンドは、コマンドの前にxのようにregisterを指定することができる。

コマンド説明
aカーソルの後ろにテキストを追加
bword単位でカーソルを前へ移動。カーソル位置は先頭文字に合わせる
c{motion}{motion}で指定したテキストを削除した後、挿入モード [buffer]
d{motion}{motion}で指定したテキストを削除 [buffer]
eword単位でカーソルを後ろへ移動。カーソル位置は末尾文字に合わせる
f{char}カーソル位置から右方向にある次の{char}へカーソルを移動
hカーソルを左へ移動
iカーソルの前にテキストを追加
jカーソルを下へ移動
kカーソルを上へ移動
lカーソルを右へ移動
m{A-Za-z}カーソル位置を記録
n最後に行った検索 (/ or ?コマンド)を再実行
oカレント行の下に新しい行を挿入し、テキストを追加
pカーソルの後ろにregister内のテキストを貼り付ける[buffer]
q{0-9a-zA-Z"}文字の入力をregisterに記録 (記録中の場合は、記録を停止)
r{char}カーソル下の文字を{char}に置換。{char}には<CR>も指定可能
sカーソル下の文字を削除し、挿入モード。clで代用可能 [buffer]
t{char}カーソル位置から右方向にある次の{char}の1文字前へカーソルを移動
uアンドゥ
vVisualモード
wword単位でカーソルを後ろへ移動。カーソル位置は先頭文字に合わせる
xカーソル下の文字を削除 [buffer]
y{motion}{motion}で指定したテキストをヤンク [buffer]

※ 1文字コマンドが存在しないアルファベット
g: extended commandに続く
z: z commandに続く

ノーマルモード:アルファベット大文字編

太字で示したコマンドは {motion} に対応するコマンドである。
説明に [buffer] のあるコマンドは、コマンドの前に"xのようにregisterを指定することができる。

コマンド説明
Aカレント行の文末にテキストを追加
BWORD単位でカーソルを前へ移動。カーソル位置は先頭文字に合わせる
Cカーソル下から文末までを削除した後、Insertモード。c$で代用可能 [buffer]
Dカーソル下から文末までを削除。d$で代用可能 [buffer]
EWORD単位でカーソルを後ろへ移動。カーソル位置は末尾文字に合わせる
F{char}カーソル位置から左方向にある次の{char}へカーソルを移動
Gカーソルをファイルの最終行の文頭へ移動
Hカーソルをスクリーンの先頭行の文頭へ移動
Iカレント行の文頭にテキストを追加
Jカレント行とその次の行を連結。なお、連結される行に含まれるインデントは削除される
Kカーソル下の単語を調べるためにプログラムを実行。デフォルトでは :!man キーワードと同一
Lカーソルをスクリーンの最終行の文頭へ移動
Mカーソルをスクリーンの中央行の文頭へ移動
N最後に行った検索 (/ or ?コマンド)を前回と反対方向に再実行
Oカレント行の上に新しい行を挿入し、テキストを追加
Pカーソルの前にregister内のテキストを貼り付ける[buffer]
QExモードに切り替える
RReplaceモードに切り替える
Sカレント行のテキストを全て削除し、Insertモード。ccで代用可能 [buffer]
T{char}カーソル位置から左方向にある次の{char}の1文字後ろへカーソルを移動
Uカレント行における最新の変更を全てアンドゥ
Vlinewise Visualモード
WWORD単位でカーソルを後ろへ移動。カーソル位置は先頭文字に合わせる
Xカーソル下の1文字前を削除 [buffer]
Yカレント行のテキストをヤンク。yyで代用可能 [buffer]

※ 1文字コマンドが存在しないアルファベット
Z: 単体ではなし (2文字ではZZ, ZQ)

動作がわかりにくい 数字+小文字1文字コマンド

上記コマンドは M, Q を除いて、コマンドの前に数字を加えて実行できる。
基本的にコマンドの前に付与される数字は、繰り返し回数や行数の指定となる。
その一方、動作がわかりにくいコマンドもあるので、ここではそのコマンドをまとめる。
なお「わかりにくい」の基準は、筆者の主観で判断した。

a: カーソルの後ろにテキストを追加

カーソル下の文字:!
コマンド:3ahello<ESC>

!hellohellohello

i: カーソルの前に文字を追加

カーソル下の文字:!
コマンド:3ihello<ESC>

hellohellohello!

A: カレント行の文末にテキストを追加

カレント行:hello
コマンド:3A!?<ESC>

hello!?!?!?

I: カレント行の文頭にテキストを追加

カレント行:hello
コマンド:3I><ESC>

>>>hello

o: カレント行の下に新しい行を挿入し、テキストを追加

カレント行:---
コマンド:3ohello<ESC>

---
hello
hello
hello

O: カレント行の上に新しい行を挿入し、テキストを追加

カレント行:---
コマンド:3Ohello<ESC>

hello
hello
hello
---

C: カーソル下から文末までを削除した後、Insertモード

カーソル下の文字:
The quick brown
fox jumps
over the lazy dog
b
コマンド:2C

The quick
over the lazy dog

D: カーソル下から文末までを削除

コマンドCと同様

G: カーソルをファイルの最終行の文頭へ移動

コマンド:3G→ ファイルの 先頭行から3行目 の文頭へ移動。3ggと同一

H: カーソルをスクリーンの先頭行の文頭へ移動

コマンド:5H→ スクリーンの 先頭行から5行下 へ移動

L: カーソルをスクリーンの最終行の文頭へ移動

コマンド:5L→ スクリーンの 最終行から5行上 へ移動

r{char}: カーソル下の文字を{char}に置換。{char}にはも指定可能

カーソル下の文字:helloh
コマンド:3rx

xxxlo

カーソル下の文字:helloe
コマンド:3r<Enter>

h
o

R: Replaceモードに切り替える

カーソル下の文字:abcdefghb
コマンド:3Rxx<ESC>

axxxxxxh

最後に

より正確な情報は :help コマンド or :h コマンド で確認してください。
間違い・誤解しやすい表現がある場合は、ご指摘していただけると幸いです。

Vimで全角空白以外のユニコードの空白文字もハイライト&取り除く

$
0
0

全角空白を可視化する設定はよく見るけど、webからコードをコピペしたら、EN SPACE(Nと同じ幅のスペース)でSPACEと見分けがつかなかったので、それも可視化し、取り除くこともできるようにした。

set list

まず、基本として、以下の設定をしておく。

" 不可視文字の表示setlist" tab: »-" 行末の空白: ・" ノーブレークスペース: ⍽" 画面の右側に文字があるとき: »" 画面の左側に文字があるとき: «setlistchars=tab-,trail:・,nbsp:⍽,extends:»,precedes:«

SHOULDERED OPEN BOX (U+237D)と呼ばれるもので「Graphics for keyboard symbol for no break space」と書いてあるので、これをノーブレークスペースに使った。
あとlistcharsでよくある設定としてeol:↵があるけど、すべての文末に表示されるとうるさいのでやってない。

スペース以外の空白文字をハイライト

全角スペースを許すプログラミング言語まとめ | プログラミング生放送を見ると、PowerShellが一番ゆるそうで、「Any character with Unicode class Zs, Zl, or Zp」がwhitespaceとしてみなされるらしい。
これらの空白文字に対してハイライトすることにする。

それらのユニコード一覧はUnicode Character Categoriesに載っている。
また、空白文字の説明はUnicode spacesが詳しい。
Zs(Separator, Space), Zl(Separator, Line), Zp(Separator, Paagraph)のカテゴリに含まれる文字の中で、SPACEと、NO-BREAK SPACE(listで可視化出来ている)、OGHAM SPACE MARK(で空白ではない)以外の文字をハイライトする。

augroup MyVimrc
    autocmd!
augroup END

augroup MyVimrc
    autocmdColorScheme * highlight UnicodeSpaces cterm=underline ctermfg=59 ctermbg=16gui=underline guifg=#465457 guibg=#000000autocmdVimEnter,WinEnter * match UnicodeSpaces /\%u180E\|\%u2000\|\%u2001\|\%u2002\|\%u2003\|\%u2004\|\%u2005\|\%u2006\|\%u2007\|\%u2008\|\%u2009\|\%u200A\|\%u2028\|\%u2029\|\%u202F\|\%u205F\|\%u3000/
augroup END

" 上の設定より下でcolorscheme<your colorscheme>

ハイライトはSpecialKeyと同じハイライトに下線を入れる設定にした。自分の使っているcolorschemeのSpecialKeyの設定は:highlight SpecialKeyで確認できる。
match部分でハイライトしたい文字の正規表現を設定している。例えば\%u3000はU+3000(IDEOGRAPHIC SPACE、全角空白)を表す正規表現。

行末の空白を削除&スペース以外の空白文字をスペースに変換

行末のSPACE, TABを削除し、ユニコードのカテゴリZs, Zl, Zpの中で、SPACEとOGHAM SPACE MARK以外の空白をSPACEに変換するコマンド。

command!-range=% FixSpaces call<SID>fix_spaces(<line1>,<line2>)function!s:fix_spaces(line1, line2)    " Save the current search and cursor positionlet _s=@/
    letl= line('.')letc=col('.')    " Trim trailing spacessilent! execute ':' . a:line1 . ',' . a:line2 . 's/\s\+$//e'    " Replace unicode spaces to normal spacesilent! execute ':' . a:line1 . ',' . a:line2 . 's/\%u00A0\|\%u180E\|\%u2000\|\%u2001\|\%u2002\|\%u2003\|\%u2004\|\%u2005\|\%u2006\|\%u2007\|\%u2008\|\%u2009\|\%u200A\|\%u2028\|\%u2029\|\%u202F\|\%u205F\|\%u3000/ /ge'    " Restore the saved search and cursor positionlet @/=_s
    call cursor(l,c)endfunction

:FixSpacesでバッファ全体、範囲指定するとその範囲だけ変換する。

ntpeters/vim-better-whitespace: Better whitespace highlighting for Vimのコードを一部参考にした。

ユニコードの文字コードで文字入力

Google日本語入力だとU+3000などと打つと候補にそれを表す文字が表示される。
Vimだと挿入モードで<C-v>u3000で入力できる。

また、ノーブレークスペースはダイグラフの入力ができて、挿入モードで<C-k><Space><Space><C-k>NSで入力できる。

Windows 版 neovim で python3 (deoplete.nvim) を無理やり使う

$
0
0

Windows 版 neovim で python3 (deoplete.nvim) を無理やり使う

どうしても windows 環境を整えたかったので,色々試したらできるようになったものの,正攻法とは言い難いのでメモ書き程度に.
もし,もっと筋の良い解決方法をご存知であれば,コメントしていただけると幸いです.

neovimのインストール

公式に従ってインストール.
特につまづくところはないはず.

has('python3')の返り値を1にする

この Issueに書いてあるように, windows 環境では has('python3')の返り値が 0.
python3 系をインストールして, pip3.exe install neovimを実行する.
このコメントの設定を init.vim に追加する.

letg:python3_host_prog ='C:\Users\username\AppData\Local\Programs\Python\Python35\python.exe'

$VIMRUNTIME\autoload\provider\pythonx.vimに以下のパッチを当てる.

diff --git a/usr/local/share/nvim/runtime/autoload/provider/pythonx.vim b/media/huyu/BEA4-08FB/pythonx.vimindex 6d6b389..0ebae4f 100644--- a/usr/local/share/nvim/runtime/autoload/provider/pythonx.vim+++ b/media/huyu/BEA4-08FB/pythonx.vim@@ -22,7 +22,7 @@ function! provider#pythonx#Require(host) abort

   " Python host arguments
   let prog = (ver == '2' ?  provider#python#Prog() : provider#python3#Prog())
-  let args = [prog, '-c', 'import sys; sys.path.remove(""); import neovim; neovim.start_host()']+  let args = [prog, '-c', '"import sys; sys.path.remove(\"\"); import neovim; neovim.start_host()"']

   " Collect registered Python plugins into args
   let python_plugins = remote#host#PluginsForHost(a:host.name)
@@ -101,11 +101,11 @@ function! s:check_interpreter(prog, major_ver, skip) abort
   "   2  Neovim module cannot be loaded.
   "   Otherwise something else went wrong (e.g. 1 or 127).
   let prog_ver = system([ a:prog , '-c' ,
-        \ 'import sys; ' .-        \ 'sys.path.remove(""); ' .-        \ 'sys.stdout.write(str(sys.version_info[0]) + "." + str(sys.version_info[1])); ' .+        \ '"import sys; ' .+        \ 'sys.path.remove(\"\"); ' .+        \ 'sys.stdout.write(str(sys.version_info[0]) + \".\" + str(sys.version_info[1])); ' .
         \ 'import pkgutil; ' .
-        \ 'exit(2*int(pkgutil.get_loader("neovim") is None))'+        \ 'exit(2*int(pkgutil.get_loader(\"neovim\") is None))"'
         \ ])

   if v:shell_error == 2 || v:shell_error == 0

nvim-qt を起動して :echo has('python3')すると 1 が返ってくる.
dein.vimとか使って deoplete.nvimを導入すると動く.

動作環境

OS: Windows10(Build 14936)
neovim: v0.1.6-833-g35f67ee
python: 3.5.2

[vim] 新たなfiletypeを定義する

$
0
0

vimrcに定義すればOK. 下記の例は.logという拡張子のファイルを"log"というファイルタイプで開くように定義している。
autocmd BufRead,BufNewFile *.log setfiletype log

なお,logというファイルタイプは事前にruntimepath (e,g, /usr/share/vim/vim74/syntax/ とか)にlog.vimで定義する必要がある。

Link : http://vim-jp.org/vimdoc-ja/filetype.html#new-filetype


Vimで全体をリインデント(インデントし直す)するには

Vimでクオートの中身を選択するには

[Atom][Vimmer向け] Windonws環境でAtom環境構築メモ

$
0
0

概要

LinuxではTerminalでvim使えばいいけれども、Windows環境でvimを使うのはShift-JISとか改行とかいろいろでわりとしんどいのでメインエディタとしてはAtomを使うことにした。(開発はLinuxがメインなので、あくまでも補助的な使用を想定)
本記事は vim-mode-plusでのVimキーバインド前提で環境を作る方法のメモになります。(随時更新予定)

インストール方法と日本語化

以下のページなどを参考にインストールして下さい。

超初心者におすすめのhtml・cssテキストエディタAtomをインストールする方法

記事内にも書いてありますが、特にこだわりがなければ日本語化パッケージを入れると良さげです。
japanese-menu

Atom初期設定

以下は個人的なメモ、設定はお好みでどうぞ。

プロキシ環境下での設定

プロキシ環境下でapm installできない - Qiita

スペルチェック無効化

日本語のドキュメント作成時に赤線が出まくるので、スペルチェックを無効化する。
Atomでスペルチェックを無効にする - Qiita

todo: 日本語だけスペルチェック無効化したい

タブ可視化

タブを記号で見えるように変更。
以下の記事がちょっと古いのでエディタ設定がコア設定の中に含まれていますが、設定のEditorを選択すればその中にあります。
Atomテキストエディタで TABスペース・半角スペース・改行 を見えるように設定する方法

vimキーバインドの有効化(Vimmerなら必須)

packageから vim-mode-plusをインストールして下さい。
vimキーバインド使うならvim使えよとは言ってはいけない。

2015年、Atom に乗り換えた。そして vim-mode-plus をリリースした。 - Qiita

その他設定メモ

PlantUML

PlantUMLのプレビューがAtomだと簡単なのでAtomを選んだようなところもあるぐらい便利です。
テキストでUMLを作図できます。詳細は以下のページなどを参照して下さい。

PlantUMLを自動変換してLiveプレビューしてくれるAtom拡張 PlantUML-Viewer がイイ! - pierre3のブログ
PlantUML - シーケンス図 | プログラマーズ雑記帳

vimからxcodeを開くプラグイン

$
0
0

はじめに

xcodeなど使わずにvimでswiftやc++書きたいですよね
でもxcodeに頼らないといけないときもありますよね

機能

  • git管理されているxcodeプロジェクトを開く(プロジェクトのルートにいればgit管理されてなくても良い)
  • 現在開いているファイルをxcodeで開く
  • xcodeにフォーカスを移動する
  • xcodeを閉じる

使い方

zebult/xcode.vim
deinかneobundleとか使っていれたら
好きなようにマッピングしてください

nnoremap<silent><Leader>X :XcodeProjectOpen<CR>nnoremap<silent><Leader>x :XcodeFileOpen<CR>nnoremap<silent><Leader>e :XcodeFocus<CR>nnoremap<silent><Leader>Q :XcodeClose<CR>

quickrun+latexmkの覚書(quickfixを使う)

$
0
0

もう何度目だって感じなんですがquickfixを使っている例を余り見ないので.

方針

  • 共通の設定は~/.latexmkrcに書く.
  • 特別な設定は作業ディレクトリの.latexmkrcに書く
  • quickrunlatexmkを呼び出してタプセットする.
  • 正常終了するときは何も出さない.
  • エラーが出たときはquickfixから該当の行に飛べるようにする.
  • synctex機能を使う.

~/.latexmkrc

~/.latexmkrc
$pdflatex="xelatex -synctex=1 -file-line-error %O %S";$pdf_mode=1;$dvi_mode=$postscript_mode=0;

latexmkの概要については他に記事があると思うので省略.
普段使うのはXeLaTeXなのでそれに合わせて設定する.
latexmk--xelatexオプションを付けたときの動作を少し改造した.
付け加えたのは-synctex=1-file-line-error
前者はsynctexを使うため,後者はquickfixで該当の行に飛べるようにするためのもの.
なおlualatexuplatex等にも同様のオプションがある.

quickrunの設定

インストールはdein.vim使うなりvim-plug使うなり.
こうした.

$MYVIMRC
letg:quickrun_config = {
            \ 'tex':  {
            \ 'command': 'latexmk',
            \ 'exec': ['%c %o %s'],
            \ 'outputter': 'error',
            \ 'outputter/error/success': 'null',
            \ 'outputter/error/error': 'quickfix',
            \ }
            \}

タイプセットに成功したときは何も出さず,失敗するとquickfixを出すような設定.

quickfixから該当の行に飛べる

上のようなソースで<Leader>rするとタイプセットが行われ,
下のquickfix\undefinedが定義されていないというエラーが出る.
quickfixウィンドウでカーソルを合わせてEnterを押すとmain.texの4行目に飛ぶ.

課題

ファイル分割に対応していない.

以下の記事のようにするとよさそう.

TeXをもっと便利に使う!(自動コンパイル・部分コンパイル・分割ファイルから親ファイルのコンパイル)【Vim + vim-quickrun + latexmk】

中間ファイルの削除

タイプセットに成功したときは中間ファイルを削除するようにしたい.
hooksuccessを使ってlatexmk -cをしたいけどよくわからない.

手軽にvimをかっこよくするVim Bootstrap

$
0
0

基本的に開発ではPhpStormを、置換処理などではsublime textを愛用しているが、ちょっとした修正や、terminalから操作したいときはvimを使っている

つまり自分はサブ的に使っているが、使っていくと、結構カスタマイズしてみたくなったりする。

そこで、.vimrcをgenerateしてくれるのがこちらのVim Bootstrap

使い方は簡単で、サイトにから、自分が使いたい言語を選択、Generate!を実行し、ダウンロードされたgenerate.vimをホームディレクトリまで移動して、.vimrcにファイル名を変換すればOK

10月-18-2016 22-16-05.gif

あとは、適当にvimを実行し、plugin等ダウンロードが完了すれば、それなりに格好いいvimの環境の出来上がり。

スクリーンショット 2016-10-18 22.09.39.png

windows環境構築メモ(vim, dein.vim, ckw-mod)

$
0
0

Windows7 32bitを使わなければならないという過酷な運命に立ち向かうべく、
環境を整えたのでメモ

こんな人には参考になるかも?

  • windowsのコーディング環境に不満がある
  • vimmer(私は見習いです)
  • cygwinもいいけど色々あって断念した

おしながき

vim-KaoriYa

  • ダウンロードして解凍したフォルダにパスを通す
    https://www.kaoriya.net/software/vim/

  • "vi"と打っても起動できるようにvi.batを作成して同じフォルダに入れる
    (%5までなのでファイルを5個開ける、けどもっとスマートな書き方あるよね...)コメントを頂いて修正しました

vi.bat
vim %*

dein.vim

ホームディレクトリに.vimrcを作成

  • runtimepathは絶対パスにしないといけなかった、相対パスでは「未定義です」と出る
  • "syntax on"はdein.vimの設定の後でないと反映されない?
~/.vimrc
” 追記します

ckw-mod

設定は好みだと思いますが...
- "Ckw*transp"の値を小さくすると透過していく
- "!"がコメントアウトですかね?
- powershell.exeにパスが通ってなかったので、絶対パスで書きました

あとは毎回ckw.exeを起動するだけです

ckw.cfg
!追記します

つぶやき

  • cygwinでjedi-vimとかめちゃくちゃ重い...
  • あとはpythonの仮想環境を導入したい

【厳選】形から入る人のための  こだわり Vim / NeoVim カラースキーマ まとめ

$
0
0

Colorsheme(カラースキーマ)とは?

エディタの背景色や文字色を色分けして表示してくれるスクリプト。
Vimではデフォルトでいくつか用意されている。

ここでは

  • エディタは形(見た目)から入る人
  • Solarizedなど有名なテーマではなく、人とは違うテーマにしたい人
  • 今のテーマにマンネリ化してきた人

を対象にあくまで個人的に好みのカラースキーマを紹介する。

どうやって使うの?

vimrcなどに

" NeoBundle
NeoBundle 'tomasr/molokai'" dein
[[plugins]]
repo ='tomasr/molokai'

とかで追記してインストールした後、

colorscheme molokai

syntaxon" 256色¬sett_Co=256¬
" truecolor¬set termguicolors
" 背景色¬setbackground=dark¬

こだわりのカラースキーマ

lucius

jonathanfilip/vim-lucius

687474703a2f2f692e696d6775722e636f6d2f486d7738732e706e67.png

一番はじめに一目惚れしたカラースキーマ。
どこかやさしい感じで、目に優しそう。
ベースとなる背景の設定が10種類用意されている。

Statuslineにlightlineを使わせてもらっているが、
lightlineのテーマのwombatと相性が良さそう。

monokai

tomasr/molokai
687474703a2f2f7777772e77696e746572646f6d2e636f6d2f7765626c6f672f636f6e74656e742f62696e6172792f57696e646f77734c6976655772697465722f4d6f6c6f6b6169666f7256696d5f383630322f6d6f6c6f6b61695f6f726967696e616c5f736d616c6c5f332e706e67.png

いわずと知れた有名カラースキーマ。
ビビッドな配色で、だれもが一度は試している?
sublime textのデフォルトテーマでもある。

atom dark

gosukiwi/vim-atom-dark

687474703a2f2f692e696d6775722e636f6d2f7877304f5a48422e706e67.png

GitHubが開発したオープンソースのテキストエディタで知られるAtomの
デフォルトテーマ。
青と緑を貴重としていてクールな印象。
デフォルトのlightlineともマッチしているのがうれしい。

lucario

raphamorim/lucario

vim.png

2011~2012年頃から注目されているフラットデザインで
使われている配色パターンをもとに作成されている。
青がかった背景が特徴で、vim以外のエディタにもテーマが用意されている。

material

jdkanani/vim-material-theme

687474703a2f2f692e696d6775722e636f6d2f564e78637635332e706e67.png

こちらもデザイン手法をもとに作成されたテーマで、
Googleが発表したマテリアルデザインで使われる配色をベースとしている。
モダンな雰囲気をかもしだせる。

tender

jacoborus/tender.vim

7780885a-782e-11e6-8e88-150cfc70e35b.png

僕が現在使用しているテーマ。
githubのトレンドでも上位にきており、
tmuxやiTermでも対応しはじめた24bitでのTrue Colorに対応している。
lightlineとairlineのテーマも用意されている。

Screen Shot 2016-10-19 at 14.43.47.png

こんな感じのUIになっており
次は形から入る人のためのプログラミング用フォントなどをまとめる予定

vimで文字コード確認・変更

$
0
0

現在の文字コードを確認する

:set euc?

開いているファイルを別の文字コードで表示する

:e ++enc=[文字コード]
:e ++enc=euc-jp

保存する文字コードを変更する

:set fenc=[文字コード]

JRuby環境のrubyソースファイルをvimで開くと遅い

$
0
0

概要

  • JRuby環境下のrubyソースコードをvimで開くのが遅い。
  • vimrcでlet g:ruby_path = ""またはlet b:ruby_version = "2.3.1"などと記述することで解消する。
  • しかし、バッドノウハウの類なのでより良い解決方法求む。

現象

rbenvでJRuby環境にあるソースコードをvimで開くと2,3秒かかった(グローバルにJRubyを導入して使っている場合も同様)。
導入した何らかのプラグインが影響しているのではないかと考え、まずvimrcやpluginを取り払って起動してみたが、やはり遅い。
もう一歩踏み込んで、--nopluginオプションを付けて起動したところ、瞬時に起動した。

原因

ということで、原因は標準に付属しているpluginにあると目星が付いた。

/vim74/ftplugin/ruby.vimを調べたところ、rubyコードを読み込むときに有効になっているrubyを起動していることが分かった。
(ver.7.4で調べたが、コードを見た感じver.8.0でもほぼ同様だと思われる)
JRubyはJVMを起動するのに時間がかかるので、とにかく起動が遅い。
さらっと読み流したところ、rubyの標準ライブラリのパスを調べて、そのパスにあるタグファイルをtagsに追加することを目的としているようだ。

対策

次のいずれかで、ひとまず問題は解消される。

  1. /usr/share/vim/vim74/ftplugin/ruby.vimを撤去
    • ただし、標準のプラグインなので、いろいろな影響が出ると思われる。
    • また、便利な機能も一緒に無効になってしまう。
    • もちろん、ruby標準ライブラリへのタグジャンプはできなくなる。
  2. vimrcにlet g:ruby_path = ""と記述
    • ruby標準ライブラリへのタグジャンプはできなくなる。
    • (このパスで指定した)rubyに依存した機能が効かなくなるはず。
    • 標準以外のプラグインでも、このグローバル変数に依存したものが 影響を受ける可能性あり。
  3. vimrcにCRubyのバージョン、例えばlet b:ruby_version = "2.3.1"と記述
    • "2.3.1"と書いた部分には、自身の環境に導入されているJRuby以外の適当なバージョンを指定する。
    • ruby標準ライブラリへのタグジャンプは指定したバージョンのコードへのジャンプとなるはずである。
    • 邪悪な感じの対処なので、いろいろ危ういかも。

1はやり過ぎなので、基本的には2か3の対応となる。

課題

ひとまず、起動が遅い問題自体は解決したが、あまり正当な方法とは言えない。
良い解決方法をお持ちの方は、教えていただけると助かります。

vim で手軽にフォントを調整する

$
0
0

vim 8 の :version 表示をよく読んだら、unix 側でも ~/.vim/vimrc をデフォルトで読むようになっていたので、 \$HOME/.vimrc へのシンボリックリンクにしていた$HOME/.vim/.vimrc を改名していろいろと手直しした。

手直ししたものを Windows 環境にもってきて、フォントの微調整がメニューからではうまく行かないのが気になりだす。ツールを探したり、自作に着手したりしたが、汎用にするとなかなか面倒くさい。

はっと気が付いて、こんな数行を書いてみた。
プラグインとしてきちんと独立させるのも面倒なので、 vimrc のなかの一部として g:loader.ToyTools なんて (perl のクラスのように使っている変態的)辞書のなかに組み込んだが、そこは気にしないでほしい。

高さ(h) と幅(w)、気分によっては Antialias 適用の有無などを画面下部で編集して反映させる簡単な関数を呼び出せるようにした。それだけだ。

command!  FontChange :callg:loader.ToyTools.GuiFontChange()function!g:loader.ToyTools.GuiFontChange()let font = input("NewFont: ",&guifont)let&guifont=font
endfunction

g:loader についてのあれや、これやはまたいつか稿をまとめて

写経で使うツール

$
0
0

他人のコード理解のために写経をやってみています。うまく行かなかった時には、オリジナルのコードと比較する必要がありますが、その時に以下のツールを使っています。

Reindent

Pythonのインデントを整えなおすツールです。参照元のコード、あるいは自分で書いたコードのインデント基準が異なっていると非常に比較しづらいので、これを使って統一しています。
pip install Rindent で"rindent"コマンドが導入されます。実行は引数に整形対象のファイルを指定するだけです。デフォルトでオリジナルファイルのバックアップを作成します。
インデントの整形はPEP8のスペース4文字に統一されます。インデント以外も含めてPEP8に修正するautopep8というツールもあるようです。

gvimdiff

比較にはgvimdiffを使っています。他にもmeld等いくつかツールがあるのですが、いくつか試した結果こちらを使っています。ここは個人の好みもあるでしょう。
gvimdiffのデフォルトはnowrapなので、長い行の折り返しがなされません。単純に.vimrcにset nowrapと書いても有効になってくれませんでした。
StackOverflowに(g)vimdiff起動時のみwrapを有効化する方法が掲載されていたので、それを採用しています。

autocmdFilterWritePre * if&diff|setlocalwrap<|endif

jedi (+ emacs, auto-complete)

コード補完にjediを使っています。emacsのauto-completeと組み合わせると、先に読み込んだ写経元のソース内にある長い変数、関数名なども補完が容易になります。

これ以外にも便利なツールがあったら追記してゆきます。

Viewing all 5755 articles
Browse latest View live


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