vim関連のあれこれ

開いているファイルの文字コードの確認

set fileencoding?

デフォルトの文字コードをUTF8にする

set encoding=utf-8
set fileencodings=utf-8

vim-refでriを検索する

vim-refはRubyに限らずvimでリファレンスを参照するプラグイン、そこからRubyのリファレンス参照コマンドのriを使うプラグインが vim-ref-ri

[[Uniteを使ってriを検索できるvim-ref-riというプラグインを作った|http://yuku-tech.hatenablog.com/entry/20120429/1335628327]

使い方は簡単。vim-refとして検索するなら

:Ref ri NAME

Uniteインタフェースでインクリメンタルに検索したいなら

:Unite ref/ri

と実行する

vim-refで辞書を引く

※ 一通り、動作するように設定できてから気づいた… これは、tmuxで範囲を選択し、翻訳できた方が汎用性が広い…

:Ref alc hello

などとして、vim-refにalcが定義されていた時代もあったのだが、アルクから指摘があり、コードから削除した背景があったようだ

今のvim-refは webdictというソースに変更され、これを設定することで複数ソースに対応している(上記URLのすぐ次のエントリで対応している)

設定方法はvim-refの環境を整えるを参考にした

"webdictサイトの設定
let g:ref_source_webdict_sites = {
\   'je': {
\     'url': 'http://dictionary.infoseek.ne.jp/jeword/%s',
\   },
\   'ej': {
\     'url': 'http://dictionary.infoseek.ne.jp/ejword/%s',
\   },
\   'wiki': {
\     'url': 'http://ja.wikipedia.org/wiki/%s',
\   },
\ }

"デフォルトサイト
let g:ref_source_webdict_sites.default = 'ej'

"出力に対するフィルタ。最初の数行を削除
function! g:ref_source_webdict_sites.je.filter(output)
  return join(split(a:output, "\n")[15 :], "\n")
endfunction
function! g:ref_source_webdict_sites.ej.filter(output)
  return join(split(a:output, "\n")[15 :], "\n")
endfunction
function! g:ref_source_webdict_sites.wiki.filter(output)
  return join(split(a:output, "\n")[17 :], "\n")
endfunction

nmap <Leader>rj :<C-u>Ref webdict je<Space>
nmap <Leader>re :<C-u>Ref webdict ej<Space>

vimのリストいろいろ

2007-01-22 - 窓の外に出てみれば リストいろいろ

    :history
    :registers
    :marks
    :ls (:buffers)
    :args
    :jumps
    :changes
    :tags

OmniSharpによるインテリセンスを使う

https://blog.yucchiy.com/2018/07/01/omnisharp-vim-with-roslyn/ 結構、時間かかる、exeファイルのビルド、ビルド後のバイナリのテストなどで1hはかかる

途中、サーバのレポジトリは下記コマンドでcloneした

ghq get https://github.com/OmniSharp/omnisharp-roslyn.git

結果的に決まるパスは下記のdeinの設定ファイルで指定している。 omnisharp-roslyn の exeファイルのパスになる。

~/.config/dein/plugins.toml

下記も必要

brew install mono
brew cask install mono-mdk

neovim関連エラー

No module named neovim

というエラーが出た場合、

pip3 --no-cache-dir install -I neovim

とpythonモジュールをインストールすることで改善する

ジャンプ

「ジャンプ」とは次のコマンドのどれかを意味します: 新しいファイルの編集を始める コマンドと、"'", “`”, “G”, “/”, “?”,“n”, “N”, “%”, “(”, “)”, “”, ”?”, “{”,"}", “:s”, “:tag”, “L”, “M”, “H” です。

おおまかに、left-right-motions, up-down-motions, word-motions 以外

ジャンプリストは、' マークの履歴。 ジャンプリストの履歴は重複しない。 同じ行の履歴が追加された場合は、古いものが削除される。 CTRL-o で履歴を遡った状態のときにジャンプすると、 履歴の位置は最後の行に戻る。

変更リストは、. マークの履歴。 変更リストの履歴は重複する。 同じ行の履歴が追加されても、古いものは削除されない。

g; で履歴を遡った状態のときに何か変更を行うと、 履歴の位置は最後の行に戻る。

    ^o
    ^i
    g;
    g,

Vim-users.jp - Hack #115: Vimのバージョンや拡張機能をチェックする

バージョンチェック

v:version変数をチェックすればよいです。百の位がVimのメジャーバージョン、十の位と一の位がマイナーバージョンを表します。例えばVim 7.2で:echo v:versionすると、702が表示されます。720ではありません。Vimがバージョン7以上であることをチェックするには次のようにします。

if v:version < 700
    echoerr 'Does not work this version of Vim "' . v:version . '".'
    finish
endif

ちなみに、パッチレベルはhas(‘patch100’)などでチェックします。詳しくは、:help has-patchを参照してください。 vim vimprocがencodingを変更するようにいってきた

# encoding を utf-8 にする

.vimrc のエンコーディングを utf-8 にする

私の設定ファイルもeuc-jpだったので、

lv -Iej -Ou8 .vimrc > .vimrc.new && mv .vimrc.new .vimrc

として変換し、vimを起動しなおした

vim起動時はtmuxのステータスラインを非表示にする

    " vim起動時はtmuxのステータスラインを非表示にする
    " http://qiita.com/items/89aa2e4b55ea51ecdd59
    if !has('gui_running') && $TMUX !=# ''
    augroup Tmux
    autocmd!
    autocmd VimEnter,VimLeave * silent !tmux set status
    augroup END
    endif

HTMLなどの編集に便利なvimrcの設定例

Command Line で使用しているツールまとめ vol.3 #tmux #blogger #Vim #Mac #Zsh - Qiita

~/.vimrc

" ### プラグイン bundle"{{{
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" プラグイン管理
Bundle 'gmarik/vundle'
"Bundle 'Shougo/neobundle.vim'

Bundle 'YankRing.vim'
Bundle 'Shougo/neocomplcache'
Bundle 'Shougo/neocomplcache-snippets-complete'
Bundle 'Smooth-Scroll'
Bundle 'smartword'
Bundle 'thinca/vim-quickrun'
Bundle 'tpope/vim-markdown'
Bundle 'Shougo/unite.vim'
Bundle 'mrtazz/simplenote.vim'
Bundle 'yuratomo/w3m.vim'
Bundle 'Shougo/vimfiler'
Bundle 'mattn/zencoding-vim'
Bundle 'mattn/excitetranslate-vim'

filetype plugin indent on"}}}

"### プラグイン設定 plugin"{{{1
"## str2htmlentity.vim "{{{2
"" 範囲指定し sx でHTMLの特殊文字を変換する
" http://www.serendip.ws/resource/str2htmlentity.vim
vmap <silent> sx :Str2HtmlEntity<cr>
vmap <silent> sr :Entity2HtmlString<cr>

"}}}
"}}}

"### 基本設定 setting"{{{
" :CopyCmdOutput でコマンド欄をクリップボードへコピー
" http://d.hatena.ne.jp/hide04/20111223/1324621495
func! s:func_copy_cmd_output(cmd)
redir @*>
silent execute a:cmd
redir END
endfunc
command! -nargs=1 -complete=command CopyCmdOutput call 
<SID>func_copy_cmd_output(<q-args>)

" F5 でHTMLのプレビュー for Safari
" http://vim.wikia.com/wiki/Preview_current_HTML_file
nnoremap <F5> :!open -a Safari %<CR><CR>

" foldmethod の折りたたみ
set foldmethod=marker

" カッコ内に自動的に移動、カッコを補完、カッコを範囲指定する。
" http://d.hatena.ne.jp/spiritloose/20061113/1163401194
inoremap { {}<LEFT>
inoremap [ []<LEFT>
inoremap ( ()<LEFT>
inoremap " ""<LEFT>
inoremap ' ''<LEFT>
vnoremap { "zdi^V{<C-R>z}<ESC>
vnoremap [ "zdi^V[<C-R>z]<ESC>
vnoremap ( "zdi^V(<C-R>z)<ESC>
vnoremap " "zdi^V"<C-R>z^V"<ESC>
vnoremap ' "zdi'<C-R>z'<ESC>

"}}}

参考

https://qiita.com/lighttiger2505/items/bf4755cd912f7272ba60

http://qiita.com/wadako111/items/5eb8e30aca1737ba6ba5