Vim

【一人 vimrc advent calendar 2017】ディレクトリをオプションに設定した場合にディレクトリも生成する【7日目】

Vim

一人 vimrc advent calendar 2017 7日目の記事になります。 'backupdir' や 'undodir' などでディレクトリを設定する場合の注意 さて、、Vim では 'backupdir' や 'undodir' などディレクトリを設定するオプションがいくつかあります。 "バックアップファイ…

【一人 vimrc advent calendar 2017】vimrc で起動時にのみ実行するスクリプトを記述する【6日目】

Vim

一人 vimrc advent calendar 2017 6日目の記事になります。 vimrc で環境変数などに追記する設定を記述する さて、以前『vimrc で安全に autocmd を設定する』記事でも書いたのですが、vimrc は再読込される可能性を考慮する必要があると書きました。 同様に…

【一人 vimrc advent calendar 2017】Windows ライクなキーマッピングを使う【5日目】

Vim

一人 vimrc advent calendar 2017 5日目の記事になります。 今回は Windows ライクなキーマッピングのお話。 Vim でも Windows ライクなキーマッピングを行いたい さてさて、Windows ユーザが Vim を使うとお馴染みの Ctrl + x:切り取り Ctrl + c:コピー C…

【一人 vimrc Advent Calendar 2017】vimrc から別のスクリプトファイルを読み込む【4日目】

Vim

一人 vimrc Advent Calendar 2017 4日目の記事になります。 今回は vimrc から別のスクリプトファイルを安全に読み込みます。 任意のスクリプトファイルを読み込む さて、vimrc が少し大きくなってくると プラグイン キーマッピング コマンド filetype みた…

【一人 vimrc Advent Calendar 2017】vimrc で安全に autocmd を設定する【3日目】

Vim

一人 vimrc Advent Calendar 2017 3日目の記事になります。 今回は autocmd について書きます。 autocmd とは autocmd とは『任意のタイミング』に処理をフックするための機能です。 例えば、 『バッファに入る度にバッファ名をフルパスで表示する』 みたい…

【一人 vimrc Advent Calendar 2017】set nocompatible とは【2日目】

Vim

一人 vimrc Advent Calendar 2017 2日目の記事になります。 今回は vimrc の設定でよくみかける(気がする) set nocompatible について簡単に解説します。 set nocompatible とは set nocompatible とは 'compatible' オプションを無効にするため設定です。…

【一人 vimrc Advent Calendar 2017】vimrc をつくろう【1日目】

Vim

この記事は 一人 vimrc Advent Calendar 2017 1日目の記事になります。 一人 vimrc Advent Calendar 2017 とは vimrc を整理しながら vimrc や Vim の Tips をだらだら書いていこうかなーというような Advent Calendar になります。 特にネタも決めてないの…

Vim で :terminal の使い勝手をよくした

Vim

重い腰を上げてやっと Vim の :terminal を使ってみたんですが、いろいろと使い勝手が悪かってので魔改造しました。 いろいろと便利な設定を書こうと思ったら完全に煽り記事みたいになってしまい大変申し訳無くry。 :terminal を真面目に触ってからまだ半日…

Vim で1行がとてつもなく長い場合に描画を軽くする

Vim

例えば、JavaScript で minify されているコードは1行が途轍もなく長いです。 こういうコードを Vim で開く場合、シンタックスハイライト回りが非常に遅く、Vim 自体が重くなってしまう事があります。 'synmaxcol' を設定する そのような場合に 'synmaxcol' …

第33回 PORTもくもく会に行って LT してきた

第33回 PORTもくもく会に行ってもくもくするついでに LT してきました!! もくもく もくもく会っていうことで一応 Ruby のコードを書く予定だったんですが、結局午後からはほとんど LT のスライドを書いてました…。 いや、スライド自体は事前に用意していた…

Vim でシンタックスハイライトが突然オフになる現象の対処方法

Vim

覚書っていうか情報共有というか。 Vim の syntax が突然オフになる現象にお困りの方へ* パッチ 8.0.0647~8.0.1132 の方 → 8.0.1133 以降にアップデート* 8.0.1133 以降の方 → redrawtime の値をデフォルト値に戻してみて下さい— mattn (@mattn_jp) 2017年9…

最新版の Vim で :terminal コマンドを使えるようにする

Vim

最近何かと話題の Vim の :terminal ですが、使用する場合は最新版のソースコードからビルドする他にも configure 時に --enable-terminal を追加する必要があります。 $ ./configure --with-features=huge --enable-terminal これで :terminal コマンドが使…

unite-oldfiles つくった

Vim

最近 v:oldfiles というのが流行ってるらしいのでつくった。 [プラグイン] osyo-manga/unite-oldfiles NeoBundle "osyo-manga/unite-oldfiles" 最近は unite.vim よりも denite.nvim が主流らしいがわたしは使用していない。

Vim の map() や filter() に渡すラムダ内で v:val や v:key が使用できる

Vim

ちょっとした小ネタですが、従来、map() や filter() に渡す文字列式の中では v:val や v:key を使用することが出来ます。 echo map([1, 2, 3], "v:val + v:val") " => [2, 4, 6] echo filter({ "mami" : 1, "mado" : 2, "homu" }, 'v:key =~ ''^m''') " => …

Vim 8.0 で追加された関数 json_decode()/json_encode()

Vim

Vim 8.0 では JSON 形式のデータを扱う機能が追加されました。 [注意] Vim のヘルプを日本語翻訳してるvimdoc-jaですが、まだ最新版の Vim のヘルプに追従しておらず jsondecode()、jsonencode() と表記されていますが、正しくは json_decode() と json_enco…

Vim 8.0 で追加された定数 v:t_TYPE

Vim

Vim 8.0 では新しく type() が返す値が v:t_xxx のような定数として追加されました。 v:t_bool Value of Boolean type v:t_channel Value of Channel type v:t_dict Value of Dictionary type v:t_float Value of Float type v:t_func Value of Funcref type…

Vim の funcref() した関数を削除した時の挙動

Vim

ふと、気になったので試してみました。 [funcref() した後に :delfunction する] function! Test() return "test" endfunction let F = funcref("Test") delfunction Test echo F() " E933: 関数は削除されました: Test " E15: 無効な式です: F() まあ、これ…

Vim 8.0 で追加された関数 funcref()

Vim

Vim 8.0 で新しく funcref() という関数が追加されました。 これは function() と同じように関数参照を取得する関数になりますが、『関数が上書きされても元の関数を呼び出す』という違いがあります。 function! Test() return "Test" endfunction let Funct…

Vim 8.0 で追加された機能 closure

Vim

Vim 8.0 では関数に closure 機能が追加されました。 これは、関数外のローカル変数をキャプチャするための機能です。 function! s:init() let value = 0 " closure キーワードを追加することで関数外のローカル変数をキャプチャできる function! s:count() …

Vim 8.0 で追加された機能 タイマーを一時停止する

Vim

前回書き忘れたので追記。 timer_pause() を使用します。 " 一時停止 call timer_pause(timer_id, 1) " 再開 call timer_pause(timer_id, 0) これで一時的にタイマーを停止したり、任意のタイミングで再開する事が出来ます。

Vim 8.0 で追加された機能 タイマー

Vim

Vim 8.0 ではついに Vim script にタイマー機能が追加されました! この機能を使用することで処理をブロックしないで関数を呼び出すことが出来ます。 [基本的な使い方] タイマーは timer_start() 関数を使用して任意の関数を n 時間後に呼び出す事が出来ます…

Vim 8.0 で強化された機能 辞書関数

Vim

さて、以前の辞書関数は次のように call() と辞書を経由して呼び出す必要がありました。 let s:dict = { "value" : 0 } function! s:dict.up() let self.value += 1 return self.value endfunction let s:f = s:dict.up echo call(s:f, [], s:dict) " => 1 e…

Vim 8.0 で追加された Vim script の機能 Lambda

Vim

Vim 8.0 ではついに Vim script に Lambda が追加されました! Lambda を定義する場合は { args -> expr } という構文を使用します。 " Lambda は関数参照を返す " epxr にはその名の通り "式" のみ書くことができる let F = { a, b -> a + b } echo F(1, 2)…

Vim 8.0 で追加された新しいシンタックス

Vim

Vim 8.0 では新しく以下の言語に対応しました。 New Syntax/Indent/FTplugin files: AVR Assembler (Avra) syntax Arduino syntax Bazel syntax and indent and ftplugin Dockerfile syntax and ftplugin Eiffel ftplugin Euphoria 3 and 4 syntax Go syntax…

Vim 8.0 で追加された機能 function() 関数

Vim

Vim 8.0 では function() 関数の引数が新たに追加されました。 [引数の束縛] function() の第二引数に第一引数に渡す関数の引数を渡すことで、引数の束縛を行うことができるようになりました。 function! Plus(a, b) return a:a + a:b endfunction " 第一引…

Vim 8.0 で追加された機能 :smile

Vim

Vim 8.0 で :smile というコマンドが追加されました。 このコマンドを実行すると以下のような出力がされます。 それだけ。 [コマンドが追加された経緯] :smile コマンドは次のような経緯で追加されたらしいです。 @pink_bangbi neovim 出てきたりして空気が…

Vim 8.0 で追加された機能 EndOfBuffer ハイライトグループ

Vim

Vim 8.0 で EndOfBuffer というハイライトグループが追加されました。 これはバッファ外に表示されてる ~ の部分を制御するハイライトグループになります。 以下のようにハイライトを設定することで ~ のハイライトを無効にすることが出来ます。 highlight l…

Vim 8.0 で追加された機能 v_<C-a>/v_<C-x>

Vim

カーソル下の数字などをインクリメントする <C-a> が Visual モードでもできるようになりました。 選択した範囲の数字に対してインクリメントをすることが出来ます。 [v_g<C-a>/v_g<C-x>] これと似た機能で v_g<C-a>/v_g<C-x> というのも追加されました。 これは 1. 1. 1. 1. というよ</c-x></c-a></c-x></c-a></c-a>…

Vim 8.0 で追加された機能 'breakindent'

Vim

Vim 8.0 で 'breakindent' というオプションが追加されました。 これは、行を折り返しするときにインデントを考慮するようになるオプションになります。 [set nobreakindent] [set breakindent] 便利。

Vim 8.0 がリリース!!

Vim

ついに Vim 8.0 がリリースされました!!! https://groups.google.com/forum/#!topic/vim_dev/CmiGxtJ7fn4 Vim 7.0 がリリースされたのが 2006年5月になるので、約10年ぶりのメジャーアップデートとなります。 わたしは Vim 7.3 あたりから Vim を使い始め…