test post
test
.vimrcの設定
" display settingsetnumberset title
set tabstop=4set smartindent " indent automaticaly
syntax oncolorscheme molokai
set t_Co=256" search settingset wrapscan "returnfirst result if last
【Vim重症患者に朗報】WebサイトのTextAreaの内容をターミナル上のVimで編集する方法
Vim重症患者に朗報
一日の大半を ターミナルあるいは Vimで過ごす人は、徐々に指の動きがVimキーバインドで侵されていきます。
Vim使いは誰でもきっと以下のような症状に悩まされているはずです。
- エクセルを使っていたら、いつの間にか jjjや kkkのような文字がセルに入力されていた
- ブラウザで上下するときについつい jや kを入力してしまう
- Webサイトの入力フォーム上でVimキーバインドが使えずイライラする
プライベートだけではなく、ビジネス上でもWebの入力フォームにコミュニケーション情報をプロットすることが多い近年、 (3)のイライラは少しつづ精神を蝕んでいきます。
これは良くない!ということでなんとかできないか改善してみました。
GhostText
ぴったりなプラグインに出会う。
以下のようなシステム構成で、Chorme上に表示されている TextAreaの内容を ターミナル上のVimで編集できる事がわかりました。
+-----------------------------+ +----------------------------+
| GhostText(Chrome Extension) | =[localhost:4001]=> | ghost-text.vim(Vim Plugin) |
+-----------------------------+ +----------------------------+
Chrome拡張である GhostTextがサーバとなり、 Vimプラグインである ghost-text.vimと通信しあうことで TextAreaを編集できるということ。
早速試してみた。
必要なもの
- Chrome
- Vim
※自分は手元にMacしかなかったため試せていないが、WindowsやLinuxでも動くのではないでしょうか。
インストール
GhostText(Chorme拡張)
GhostText - Chrome Web Storeより、拡張をインストール
ghost-text.vim(Vimプラグイン)
GitHub - pandysong/ghost-text.vim: support for ghost-text in regular vimより。
- dein.vmを使っている場合は以下の1文を
.vimrc
に記載しておけばOK。call dein#add('pandysong/ghost-text.vim')
websockets(Python3)
pandysong/ghost-text.vimのページには、 Python3の websocketsパッケージが必要、という記載もあるので、これもインストール。
$ python3 --version
Python 3.7.0
$ pip3 --version
pip 10.0.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)$ pip3 install websockets
Requirement already satisfied: websockets in /usr/local/lib/python3.7/site-packages (6.0)
すでにインストールされていた。
その他
- Vimのサポートにもいくつか制約があった。
python3
がサポートされていること、channel
がサポートされていること、
% vim --version| grep -e python -e channel
+channel +iconv +packages -toolbar
+comments +libcall -python +viminfo
+conceal +linebreak +python3 +vreplace
幸い、いずれも要件を満たしていた。
使い方
- Vimを起動
- ノーマルモード状態で
:GhostTextStart
と入力 - TextAreaが配置されているページをChromeで開く
- GhostText拡張アイコン(右上)を押す
これで、Vim上に TextArea上の内容が表示される。編集するとWebページ上の TextAreaの値もリアルタイムで変更される。
XcodeでVimを使う
環境
- Xcode10.1
- OSX 10.14.1 Mojave
XVim2をcloneしてmake
※ Xcode は終了しておいておいてください。
自分は~/Develop ディレクトリを作ってそこにクローンしました。
$ git clone git://github.com/XVimProject/XVim2 XVim2
$ cd XVim2
$ make
他の記事とかでは証明書が必要とか書いてあるようですが、多分それはXVimだと思います。特に必要ありませんでした。
Xcodeに適用
update_xcode_pluginsなるものを使います。
sudo gem install update_xcode_plugins
でインストールできる。
update_xcode_plugins --unsign
を叩く。このときXcodeを複数バージョン入れてると選択を迫られる模様。選択してエンター。
ここまで終わったら、Xcodeを起動する。Load bundle, Skip bundle を聞かれるらしいが、なぜか、自分は聞かれなかった。
上のメニューのEdit > Xvimがあればちゃんとできてる。
参考
XVim2, update_xcode_pluginsのgithubのURL
Macのvimは古いということなので最新のvimを入れることにした。
はじめに、
元の状態を覚えておく。
設定ファイルの退避。(インストールする際に上書きされそうだよねという通常(?)の感覚)
which vim
/usr/bin/vim
cd
cp -b .vimrc .vimrc_backup
最新のvim確認しておく。↓8.1らしい。
brew search vim
~略~
brew info vim
vim: stable 8.1.0500 (bottled), HEAD
(( git-cloneしてmakeするか、一手間簡単にbrew installするか
https://www.vim.org/git.php ))
インストールする。
brew install vim --with-lua --with-override-system-vi
--with-override-system-vi
オプションをつければ、パス設定を省略できるようです。既存のvimはそのままに、いままでのviコマンドで今回インストールするvimを起動できるようにされます。--with-lua
オプション。蛇足なんですが、luaを有効にして何かのプラグインを試そうかと思い...。
( vimのパス設定についてはどこで設定されてるのか探してみたけどよく分からなくて;;export PATH=/usr/local/bin:/usr/bin
を設定する方法でも可能なのでそうしてもいいですし。)
base16を入れて最高にカッコいいターミナル環境を作る
base16って最高
base16を知っていますか?
これを入れると、誰でも簡単にターミナルとvimの配色を
コマンド一つで手軽に変更して利用できます。今までのターミナルの設定から変更したり、
.vimrcにcolorschemeを書いていた煩わしい作業とこれでおさらば出来ます!
solarized-dark
青い感じが結構クール。vimで人気な配色です。目に優しそう。
monokai
molokaiの系譜である黒ベースの配色。僕はこいつが一番お薦めです。
インストール
shell
git clone https://github.com/chriskempson/base16-shell.git ~/.config/base16-shell
gitからcloneして.configの下に展開する。
# Base16 ShellBASE16_SHELL="$HOME/.config/base16-shell/"[-n"$PS1"]&&\[-s"$BASE16_SHELL/profile_helper.sh"]&&\eval"$("$BASE16_SHELL/profile_helper.sh")"
bashとzshのどちらかを利用しているなら、.bashrcまたは.zshrcに入力。
# Base16 Shellif status --is-interactiveset BASE16_SHELL "$HOME/.config/base16-shell/"source"$BASE16_SHELL/profile_helper.fish"
end
fishを使っているなら.config/fish/config.fishに入力。
vim
Plug 'chriskempson/base16-vim'
vim plugを利用しているなら、これを入力して:PlugInstall
そうじゃない人はここから探してください
if filereadable(expand("~/.vimrc_background"))let base16colorspace=256
source ~/.vimrc_background
endif
あとはこいつを.vimrcに書き込むとシェルの変更と同期してくれます。
使い方
base16-solarized-dark #solarizedのクールな色味に!
base16-monokai #monokaiのリッチな色味に!
shellでbase16-solarized-darkやbase16-monokaiと入力するだけです。
base16 まで入力してtabを押すと色々候補が出て幸せになれます。
色々使ってみて、ぜひクールなターミナルライフを送ってください!
ちょうどいい.vimrc
ガチの開発マシンではないけど、サーバ上でちょっとしたファイルをいじるときの、.vimrc の設定。 ちょっとしたファイルとは言うものの、ruby スクリプトをいじることはすごく多いという人向け。
"-----------------------------
" apperance
"-----------------------------
set title "タイトルをウィンドウ枠に表示
set number "行番号を表示する
set title "編集中のファイル名を表示(タブに表示される)
set showmatch "カッコ入力時に対応するカッコに一瞬フォーカスを映して強調
set smartindent "改行の時に、インデントに合わせて次の行の開始をオートインデントする
set expandtab "挿入モードでTabキーを押したら半角スペースが入力されるようにする
set tabstop=2 "インデントをスペース2つ分に設定"
set shiftwidth=2 "インデントを半角スペース2文字に指定
set nrformats= "vimで数を増減するときに10進数として扱う(右辺は空でOK)
set hlsearch "検索時に対象文字列をハイライトする
set incsearch "インクリメントサーチをON
set noundofile
set noswapfile
syntax enable
set background=dark
colorscheme hybrid
"-----------------------------
" search
"-----------------------------
set ignorecase "大文字/小文字の区別なく検索する
set smartcase "検索文字列に大文字が含まれている場合は区別して検索する
set wrapscan "検索時に最後まで行ったら最初に戻る
"-----------------------------
" other
"-----------------------------
set nobackup "vimのファイル保存時にバックアップファイル(*.*~というファイル名)を作成しない
~/.vim/colors/
の下にカラースキーマを置く。
https://github.com/w0ng/vim-hybrid
┗colors
┗hybrid.vim (edited)
centOS7x64にvim8.1+lua+pythonプラグイン環境を構築するぞ
標準vimはあかんねん
標準で入っているvim
はバージョンが7.4
と古くlua
やpython
とも連携していないため、vim
の便利なpluginが使えません。
今回はタイトル通り、centOS7環境にvim8.1+lua+python3.6環境を作っていきたいと思います。1
やること
- iusリポジトリのインストール
- python3.6のインストール
- 標準vimの削除
- rubyのインストール
- 後の作業に必要なパッケージ群
前提パッケージ、リポジトリ準備
sudo yum install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install openssl-devel readline-devel zlib-devel
perlのインストール
vimのコンパイル時にこれが無いとエラります
sudo yum install perl-ExtUtils-Embed
vim-enhancedの削除
vim-commonとか入っているかもしれないけど、vim-enhanced
だけ削除すればよろしい
sudo yum list installed | grep vim
sudo yum remove vim-enhanced
python3.6のインストール
sudo yum install python-devel python36u python36u-libs python36u-devel python36u-pip
luaのインストール
sudo yum install lua-devel ncurses-devel
rubyのインストール
もとから入っているやつは化石みたいなバージョンなので、最新版を入れましょう
cd /tmp
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo'export PATH="$HOME/.rbenv/bin:$PATH"'>> ~/.bash_profile
source ~/.bash_profile
rbenv -v
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
sudo ~/.rbenv/plugins/ruby-build/install.sh
rbenv install-l
rbenv install 2.5.3
echo'eval "$(rbenv init -)"'>> ~/.bash_profile
source ~/.bash_profile
rbenv global 2.5.3
ruby -v
vim8.1のインストール
make installする前に、lua, python, rubyが'+'になっているかを確認すること!!
cd /tmp
git clone https://github.com/vim/vim
cd git
sudo ./configure --enable-fail-if-missing--with-features=huge --disable-selinux--enable-luainterp--enable-perlinterp--enable-pythoninterp=dynamic --with-python-config-dir=/usr/lib64/python2.7/config --enable-python3interp=dynamic --with-python3-config-dir=/usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu --enable-rubyinterp=dynamic --with-ruby-command=/home/'あなたのユーザ名'/.rbenv/shims/ruby --enable-cscope--enable-fontset--enable-multibytevi_cv_path_python3=/usr/bin/python3.6
sudo make
# ↓↓↓make installする前に、lua, python, rubyが'+'になっているかを確認すること↓↓↓
./src/vim --version# ↑↑↑make installする前に、lua, python, rubyが'+'になっているかを確認すること↑↑↑sudo make install
つつがなく終わったら、vim --version
で確認。画像の通りになっていますか?- lua
にとかになっていたら失敗しているので、もう一度やりましょう...
終わりに
ビルドに失敗したら、以下のコマンドで全てをなかったことにしましょう
sudo rm-rf /usr/bin/vim
sudo rm-rf /usr/local/share/vim
cd /tmp/vim/src
sudo make distclean
とりあえず過去のコマンドを見ながら思い出しつつ書いているので、間違っていたらどんどん教えてください。 ↩
【homeディレクトリが共用の人へ】.vimrcの設定
Vim patchダイジェスト [2018/11] (仮)
Vimのリリースされたpatchの要約です。
(8.1.0503~ 8.1.0526)
WIP: -
- 8.1.0526: Solaris: RealWaitForChar()でsignal用のスタックを食い潰してクラッシュする場合があったのを修正しました。
- 8.1.0523:
'hidden'
をセットしてquickfixからウィンドウを開くと、空のバッファが残ってしまう件を修正しました。 - 8.1.0522:
:terminal
が末尾の空行を表示しない件を修正しました。(関連patch: 8.1.0524, 8.1.0525) - 8.1.0519:
gettagstack()
とsettagstack()
を追加しました。タグスタックの情報を取得/設定できます。 - 8.1.0516:
:move
コマンドでバッファに変更がない時は'modified'
をセットしないようにしました。 - 8.1.0515:
スクリプト再読み込み時、既存の(
!
の付いていない)関数でエラーE122
にならないようにしました。そのスクリプトで以前定義されていた関数は、静かに置き換えられます。 - 8.1.0514: 無名の代替バッファの場合、
CTRL-W ^
が動作しない件を修正しました。 - 8.1.0513:
set diffopt+=algorithm:
がエラーにならない件を修正しました。 - 8.1.0511: 範囲外の行番号指定(
:range
)で関数を呼び出すとml_getエラー(E315)が発生するのを修正しました。 - runtimeファイル更新:
ファイルタイプ RAMLのsyntaxファイルとindentファイルを追加。
- Todo更新。
- helpファイル更新。他。
- 8.1.0507:
拡張子 .raml のファイルタイプをRAMLとして認識するようにしました。(今まではYAMLとして認識していた)
- 8.1.0504: インサートモードでマップ経由で
<C-C>
が入力されると、InsertLeave
イベントが発生してしまう件を修正しました。
凡例
表記 | 意味 |
---|---|
![]() | 新機能、大幅な仕様変更 |
![]() | Vim開発者向けの追加、変更 |
'hoge' | オプション (:h options 参照) |
:hoge | Exコマンド (:h :index 参照) |
hoge() | 組み込み関数 (:h functions 参照) |
v:hoge | Vim定義済変数 (:h v: 参照) |
+hoge | feature (:h +feature-list 参照) |
方針
こちらを参照。
viエディタの意味
主旨
開発をしているとどうしても避けて通れないviエディタについて、まとめてみました。
viエディタを使う意味
- UNIX系OSには必ずインストールされている そのため、レンタルサーバーなど自由にアプリケーションのインストールが出来ない場合でもvimは入っている。
- サーバーの管理者権限がなくても扱える。 そのため、緊急事態ですぐに使える。逆に、FTPの場合は管理者権限が必要。
- マウス操作不要 テンキーやショートカットがたくさんあるため、マウス操作なしでも高速に操作が可能。ただし慣れが必要。
モードの切り替え
"i", "Esc", ":"を押して、モードを切り替えます。
ノーマルモード
↓("i"を押す)
インサートモード(入力可能な状態)
↓("esc"を押す)
ノーマルモード
↓(":"を押す)
コマンドモード(ファイルを保存、終了するためのモード)
コマンド
キー入力内容 | 意味 |
---|---|
x | 1文字消す |
dd | 1行消す |
●yy | ●行コピーする(yankする) |
p | yankしたものを貼り付ける |
a | 次に1文字入力する(インサートモード) |
i | 現在位置に入力する(インサートモード) |
o | 次の行の先頭から文字を入力 |
shift + d | カーソル位置から最後まで削除 |
h,j,k,l | 左下上右 に移動 |
:w | 上書き保存 |
:q | 保存せずに終了(保存しなくてよいか確認が出る) |
:wq | 上書き保存して終了 |
:q! | 保存せずにとにかく一発で終了 |
他にもありますが、主だったものは以上です。
Vimの標準文字コードを設定する方法
Vim/ALE/PHP-CS-FixerでPHPソースを自動整形する
VimでPHPを書く際、ファイル保存時に自動でコードフォーマットして欲しくなったのでそのときの備忘録です。
利用するツール
設定手順
ALE
vim/nvimの非同期コードチェックプラグインであるALE(Asynchronous Lint Engine)を導入します。
GitHubに記載の導入手順に沿って導入します。
PHP-CS-Fixer
次にPHPのコード整形ツールであるPHP-CS-Fixerをお使いのPCにインストールします。
手順は同じくGitHubに記載のインストール手順に従ってインストールします。ComposerやHomeBrewでインストール可能です。
Vimの設定
あとはお使いの環境に沿って.vimrc等に以下の設定を加えてvimを再起動すれば、保存時に自動的にソースが整形されます。
let g:ale_fixers = {}
let g:ale_fixers['php'] = ['php_cs_fixer']
let g:ale_fix_on_save = 1
まとめ
記載内容に誤りなどございましたら、ご指摘頂けると助かります。
閲覧いただき、ありがとうございました。
vimで飛び回りたい(ctagsを使用して定義元にジャンプしたい)
概要
クラスや関数、定数などの定義元にジャンプできるようにする
※exuberant-ctagsではなくuniversal-ctagsを使用しています。設定ファイルの場所が異なりますので注意。
ctagsのインストールはこちらから
exuberant-ctagsじゃなくて、universal-ctagsをインストールしたい
ctagsの設定ファイル
~/.ctags.d/<名前任意>.ctags
に設定を書けば、読み込んでくれる
(exuberant-ctags を使用している場合は~/.ctags
に設定)
--php-kinds=cdfin
上記は、「PHPのタグファイルを作成する際、クラス・定数・関数・インタフェース・ネームスペースのタグを作ってね」という設定
念のためコマンドたたいて確認してみる
ctags --list-kinds=php
指定したもの以外は[off]になっているのが分かります。
c classes
d constant definitions
f functions
i interfaces
l local variables [off]
n namespaces
t traits [off]
v variables [off]
a aliases [off]
タグファイル作成
プロジェクトのルートディレクトリで
ctags -R--languages=php
今回はPHPのファイルのみに対して作成するため --languages=php
のオプションを指定。tags
というファイルが作成される(ファイル名を指定したい場合は、-f
オプションで指定可能)
.vimrcに設定を記載
タグファイルのパス指定
tags
ではなく./tags
と指定すると、カレントディレクトリではなく開いているファイルのディレクトリからtagsファイルを探してくれる;$HOME
とすることで、ホームディレクトリまで遡ってtagsファイルを探してくれる
settags=./tags;$HOME
候補が複数ある場合は一覧表示
nnoremap <C-]>g<C-]>
inoremap <C-]><ESC>g<C-]>
レッツジャンプ
キー | 動作 |
---|---|
Ctrl + ] | 宣言元へジャンプ |
Ctrl + t (または Ctrl + o ) | 戻る |
便利です~~~~。
参考
過去のコミットのファイルをvimで開く
Gitで過去のバージョンのファイルを単体で見たいときは,
git show <コミットのハッシュ値>:<開きたいファイル(相対パス)>
で見ることができます. (ファイル名は.gitが置いてあるディレクトリからみた相対パス)
これをハイライト付きで見たいときはパイプで渡して,
git show <ハッシュ値>:<開きたいファイル> | vim -c"file ${1##*/}"-c'filetype detect' -
とすることでvimで表示できます.
毎回打ち込むのは手間なので.bashrcなどに設定しておくと楽です.
function vimgitshow(){
git show "$1" | vim -M-c'set nomod'-c"file ${1##*/}"-c'filetype detect' -
}
vimgitshow <ハッシュ値>:<開きたいファイル>
参考URL
標準入力を読み込んで編集
https://vim-jp.org/vimdoc-ja/starting.html#vim-arguments
編集できないようにする
https://vim-jp.org/vimdoc-ja/starting.html#-M
https://vim-jp.org/vimdoc-ja/starting.html#-c
https://vim-jp.org/vimdoc-ja/options.html#'nomod'
filetypeを設定する
https://vim-jp.org/vimdoc-ja/editing.html#:file
https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html#Shell-Parameter-Expansion
https://vim-jp.org/vimdoc-ja/filetype.html#filetype-detect
[Vim] json形式の文字列を整形する
はじめに
Vimはファイルを開いた状態で外部シェルコマンドを実行することができるので、
プラグインを使用したり自前で関数を作成しなくてもjson形式の文字列の整形が簡単にできます。
私はcurlとかでAPIたたいた時とかによく使います。
vimでjson形式の文字列を整形する
前提条件
- json形式の文字列を整形できるコマンドがOSで使用できること (例:
jq
コマンド)
$cat hoge.json | jq
- もしくは、pythonの標準ライブラリであるjsonが使えること
$cat hoge.json | python -m json.tool
pythonの標準ライブラリjsonに関してはPython ドキュメント jsonをご覧ください。
https://docs.python.jp/3/library/json.html
jq
コマンドはinstallされていない場合があるので、
私はpythonの方をよく使っています。
ではどうすれば出来るのか?
まずvimでjsonファイルを開く
$cat sample.json
{"names":["sato", "tanaka", "yamada"]}
$ vim sample.json
vimで外部シェルコマンドをたたく。
例 :% !python -m json.tool
そうするとjson形式の文字列が整形されます。
{"names": ["sato","tanaka","yamada"]}
結果はこんな感じ。
文字化けしたファイルをvimのコマンドモードから変換してみる
- iso-2022-jpのファイルをutf-8に変換
- 適宜,文字コードは書き換え
:e++enc=iso-2022-jp |set fenc=utf-8|wq
- 本当はもっと簡単にする方法がありそうなものだが,スクリプト化するとか?
- 個人的にはここくらいまでの半自動くらいが好きだけど
- コメントあればお願いします
[Python] jqコマンドが使えない場合にjson整形で使えるスクリプト
はじめに
コマンドラインでjsonを整形したい時、よく使われる手段としてはjq
コマンドがあげられる。
しかし、jq
コマンドはOS標準で用意されているコマンドではないので、サーバによってはインストールされていない場合もある。
その場合の代替え案としてpythonの標準ライブラリであるjsonを使う案がある。
$echo'{"name":"Sato"}' | python -m json.tool
{
"name": "Sato"
}
しかし、非ascii(日本語等)がjson内に含まれているとその文字が \uXXXX
のように出力されてしまう。
$echo'{"name":"佐藤"}' | python -m json.tool
{
"name": "\u4f50\u85e4"
}
日本語が\uXXXX
のように出力されずに、日本語として出力してくれるjson整形用のpythonスクリプトを作成した。
(python3系ではデフォルトがutf8になったので、日本語で表示されるかと期待したけど試してみたら同じ結果だった。)
検証環境
CentOS 7.5
Python 2.7.5
Python 3.6.5
スクリプトのソースコード
Python2系の場合
#!/usr/bin/env python# coding: utf-8importsysimportcodecsimportjson# 標準出力をラップして常にutf-8で出力するsys.stdout=codecs.getwriter("utf-8")(sys.stdout)# パイプで渡された値を受け取るstandard_output_value=sys.stdin.readline()# 文字列がjson形式かチェックtry:# 文字列をjsonデコードjson_string=json.loads(standard_output_value)exceptValueError:# 文字列がjson形式でないことをターミナルに出力sys.stdout.write("No JSON object could be decoded")# エラーコードを返し処理を終了sys.exit(1)# jsonを整形する# ensure_asciiをFalseにすることで非asciiに対応させるformatted_json=json.dumps(json_string,ensure_ascii=False,indent=4,separators=(',',': '))# ターミナルに整形したjsonを出力するsys.stdout.write(formatted_json)# 正常コードを返し処理を終了sys.exit(0)
Python3系の場合
#!/usr/bin/env python3.6# coding: utf-8importsysimportjson# パイプで渡された値を受け取るstandard_output_value=sys.stdin.readline()# 文字列がjson形式かチェックtry:# 文字列をjsonデコードjson_string=json.loads(standard_output_value)exceptValueError:# 文字列がjson形式でないことをターミナルに出力sys.stdout.write("No JSON object could be decoded")# エラーコードを返し処理を終了sys.exit(1)# jsonを整形する# ensure_asciiをFalseにすることで非asciiに対応させるformatted_json=json.dumps(json_string,ensure_ascii=False,indent=4,separators=(',',': '))# ターミナルに整形したjsonを出力するsys.stdout.write(formatted_json)# 正常コードを返し処理を終了sys.exit(0)
使い方
その1
python scriptに対して標準出力してあげる。
$echo'{"name":"佐藤"}' | python format_json.py
{
"name": "佐藤"
}
その2
まず$HOME/binにPATHを通す。
PATH=$PATH:$HOME/bin
$ls-la$HOME/bin
total 8
drwxr-xr-x 2 xxxx xxxx 4096 Nov 16 09:26 .
drwxr-xr-x 7 xxxx xxxx 4096 Nov 16 11:13 ..
lrwxrwxrwx 1 xxxx xxxx 49 Nov 16 09:26 fj -> /path/to/format_json.py
そうすると下記のような感じで使うことができる。
(PATHを通す場合はスクリプトのshebangを適切なものに変更してください。)
$echo'{"name":"佐藤"}' | fj
{
"name": "佐藤"
}
このスクリプトを使ってVimでもjsonを整形
Vimは外部シェルを実行できる機能をもっているので、
外部シェルでこのスクリプトを使えばjsonファイルを整形することができる。
$ vim sample.json
{"names":["山田","佐藤","鈴木"],"class":1}
PATHを通していれば:% !fj
PATHを通していなければ:% !python format_json.py
のように外部シェルコマンドを起動すれば
{"names":["山田","佐藤","鈴木"],"class":1}
と整形できる。
nerdtreeでファイルやディレクトリ名の先頭が表示されない
こんなときの対処法
ディレクトリの名前がうまく表示されていない。こちらのissueによれば環境ごとに設定が必要らしい。
Missing first character in tree structure
そこで.vimrc
に上記issueにある通りに記述する。
let NERDTreeNodeDelimiter ="\t"
なおった。
もう一度ウィンドウ操作を考え直してみる
前にもやったんですけど、ウィンドウ操作に関していろいろと見つめ直して業界で言う「質実剛健な」vim使いを突き詰めてみようということで…あと転職活動中でヒマつぶししたいんですよ。
あと、当時は任意のバッファを開くために:sb
からいろいろと覚えようとしていたけど無理でした。そこは割り切って別な方法を…
ウィンドウ分割くらいキーマップでなんとかせい
当時の表をちょっと加工して再掲…
command | key map |
---|---|
:sp | <C-w> <C-s> |
:vs | <C-w> <C-v> |
:new | <C-w> <C-n> |
:on[ly] | <C-w> <C-o> |
横ペインに慣れてしまった現代の私たちは:vs
を多用しようとしていたせいで無駄に:vne
を覚えてなんとかしようとしていたのですが、覚えることが増えただけでした。素直に垂直分割してから新しいバッファにしましょう…ということで覚える必要があったのはこのくらいでした…その上で<C-w>
絡みのキーマップが別にCtrlを引っ掛けていても全く問題がないのも忘れずに…
バッファの移動もスイスイできればいいんだけど…
まーーーー:sbなんちゃら
とかは無理でした。じゃあまず:ls
すればいいじゃないということにしてしまうのが良さそうです。
そもそも本当にコマンドでやるの?
本当に質実剛健にvimを操作できるわけではない現在、:b
や:ls
を使う大方の原因はバッファの行方不明というのが現状です。それをわざわざバッファを探すのに:ls
するくらいならちゃんと<C-o>
、<C-i>
で辿って戻ればええんです。
編集中に覚えたりしたこと
ghostTextは確かに便利だけど…
何が悪いのか、よくvimが落ちる様子。クセで:w
してしまうと途端に挙動が変になるのでファイル書き込みを強制的に留めてしまうのが一番…ということでオートコマンドの出番なんですけど…
augroup toggleGhost
autocmd!ifv:servername =='GHOSTTEXT'auVimEnter * calls:toggleGhost()auBufWinEnter~/vimfiles/ghosttext/*.txt setlocal buftype=nowrite
endif
augroup END
これがBufWinEnterの方だけ動かないわけです。うーん…