Vim」カテゴリーアーカイブ

MacOS + Vim + im_control.vim + im-select の設定方法

MacVim で <C-^> による IME 制御が効いていないみたいなので、im-select を使って解決したよ、という話。

使うもの

  • MacVim (Homebrew cask の “macvim”)
  • im_control.vim
    https://github.com/fuenor/im_control.vim
  • im-select
    https://github.com/daipeihust/im-select

手順

  1. vim + im_control.vim をインストール
  2. im-select のインストール (/usr/local/bin/ に配置)
  3. .vimrc に以下のように書く
if (g:os == "Darwin")
  let IM_CtrlMode = 1
  inoremap <silent> <C-j> <C-r>=IMState('FixMode')<CR>
  function! IMCtrl(cmd)
    let cmd = a:cmd
    if cmd == 'On'
      let res = system('im-select com.apple.inputmethod.Kotoeri.RomajiTyping.Japanese > /dev/null 2>&1')
    elseif cmd == 'Off'
      let res = system('im-select com.apple.keylayout.ABC > /dev/null 2>&1')
    elseif cmd == 'Toggle' " dummy
      let res = system('im-select > /dev/null 2>&1')
    endif
    return ''
  endfunction
endif

IM_CtrlMode を 1 にしているので、IMCtrl()は ‘On’ か ‘Off’ を引数に呼ばれるので ‘Toggle’ は真面目に実装する必要はない。

【解決済】vimtex 更新で vim + vimtex + latexmk + (p)latex + dvipdfm(x) 環境が壊れる問題

すぐに修正されると良いのだけれど・・・。

https://github.com/lervag/vimtex/commit/144e60649a0214b09ee78d3aeff4eb569daea194

のコミットで、vimtex から latexmk を使う場合に自動で -pdf オプションが付加されるようになりました。

platex + dvipdfmx の組み合わせは、日本語文書を作成に今もよくつかわれているので注意が必要。

とりあえず直したい、という場合には、vimtex がインストールされているディレクトリで、

$ git checkout 774e0309b1e4b30310ed8b5764cd131014148288

とする。これで、原因となっている変更前の状態に戻すことができる。
(ただし、git pull で最新にすることができなくなる。修正されたら、git で操作するか、インストールし直せば OK)

Issue を立ててみたので、どうなるか見守ってみる。

https://github.com/lervag/vimtex/issues/1142

これを機に LuaLaTeX 等に切り替えるべきなのかもしれない・・・。

6/22/2018  追記:

https://github.com/lervag/vimtex/commit/9d62a40af7bf141e0020cb264c202ee66830ce90

で修正されました。

https://github.com/lervag/vimtex/issues/1142

にある通り、以下を .vimrc に追加する。

let g:vimtex_compiler_latexmk_engines = { '_' : '-pdfdvi' }

【解決済】MSYS2 + gVim + vim-fugitive on Windows

vim-fugitive めっちゃ使いやすい。Vim のキラープラグインの1つではないかと思う。Windows での CUI 環境を MSYS2 に移行したくらいから、gVim で :GStatus が使えなくなって、CUI 版の Vim を使っていた。今回その理由に気づいたので、メモとして残しておく。

症状

元々の環境

症状

  • CUI からは、:Gstatus も動く
  • GUI からは、:Gstatus すると、/home から始まって、C: で終わる変なパスとともに、No such file or directory のエラーが表示される。

直し方だけ知りたい人は、解決策へ。 続きを読む

Vim の ft-tex-syntax で \reffig も \ref と同様にハイライトする方法

Vim で LaTeX を書く、とにかく書く、はい、書きましょう。

\ref は、\label で設定した章や図表の番号を参照するための LaTex コマンドです。例えば、図の場合、

Figure~\ref{fig:bird}

みたいに書くと参照できますが、

プリアンブル部(main.tex の \documentclass から \begin{document} までの間の部分)に、

\newcommand{\reffig}[1]{Figure~\ref{#1}}

とか書いておくと、

\reffig{fig:bird}

だけで上記の Figure~\ref{fig:bird} と書いた時と同じになったりするんですね。とまぁ、ここまでは知ってる人も使ってる人も多いと思います。

問題は、\reffig に対して、\ref で行われるようなシンタックス処理が行われないことなんです。例えば、ラベルに _(アンダースコア)を使った場合、LaTex では、アンダースコアは特別な意味を持っているので、エラーとして表示されてしまいます。そんなの気にならない、という人は、ここまで読んでそっとこのページを閉じてください。「あ、それ、気になってた!」という人は続きを読んでください。

先に結論を書くと、.vimrc の syntax on の後?に、

autocmd FileTYpe tex syntax region texRefZone matchgroup=texStatement
      \ start="\\ref\(fig\|tab\|sec\|eqn\|chap\|alg\){"
      \ end="}\|%stopzone\>"
      \ contains=@texRefGroup

と書くと、reffig, reftab, refsec, refeqn, refchap, refalg が、ref と同じようにシンタックス処理されるようになります。別のファイルに書く方法もありますが、設定ファイルを増やしたくない場合はこれがおすすめです。

Vim ft-tex-syntax の設定

Vim を使って LaTeX 文章を書く、これがルーティーンという人のためのポスト。

さて、今時の Vim で LaTeX 文書を開くと、高度な syntax 設定によってコマンドや環境の色付けはもちろん、数式($a$とか)や、文字装飾(\textbf{}など)が展開されて、解釈した結果のように見えるようになっています。そして、その行にカーソルがあるときには、入力された通りの文字列が表示されます。

これはこれでスゲー!ってな話ではあるんですが、書くときにはちょっと不便なこともあります。見た目と、実際に入力されている文字が一致していないので、カーソルをその行に持っていくと文字が移動するのはなんかめんどいのです。そもそも論的に、エディタで入力されている文字と表示されている文字が一致していないというのはいかがなものか、と思う人も多いでしょう。 続きを読む

【解決済】MacVim を CUI で動かすと has(‘mac’) が 0 になる問題

has(‘mac’) や has(‘macunix’) が 0 を返してしまって、.vimrc などが正しく挙動してくれなくなった。

調べると、以下のサイトが参考になった。

Detect OS in Vimscript

if !exists("g:os")
    if has("win64") || has("win32") || has("win16")
        let g:os = "Windows"
    else
        let g:os = substitute(system('uname'), '\n', '', '')
    endif
endif

みたいな感じで OS 情報を取得すればOK。

【解決済】Windows で vimtex 使ってたら main を見つけてくれなくなった話

vimtex いい。ところが、プラグインをアップデートしたら Windows 環境で main を見つけてくれなくなってしまった。それまではできていたはずなのに・・・

調べてみたら、以下のコミットが原因。
https://github.com/lervag/vimtex/commit/68e6e3b27a04b518d64a9d67c4d987cedf80ff85

[prism field=”vimtex-file_reaches_current” language=”vim” class=”line-numbers” data_start=683]

windows 環境下だと、isfname に { や } が含まれているので } が正規表現にマッチしてしまうのが理由。
正規表現の最後に } を書いてくれればそれで良いのだけど、調べてみると以下の記述を発見。

[prism field=”vimtex-faq-isfname” language=”txt”]

ということで、 .vimrc に追記した。

[prism field=”vimrc_vimtex_1″ language=”vim”]