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

test


.vimrcの設定

$
0
0
" 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で編集する方法

$
0
0

Vim重症患者に朗報

一日の大半を ターミナルあるいは Vimで過ごす人は、徐々に指の動きがVimキーバインドで侵されていきます。

Vim使いは誰でもきっと以下のような症状に悩まされているはずです。

  1. エクセルを使っていたら、いつの間にか jjjkkkのような文字がセルに入力されていた
  2. ブラウザで上下するときについつい jkを入力してしまう
  3. 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のページには、 Python3websocketsパッケージが必要、という記載もあるので、これもインストール。

$ 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

幸い、いずれも要件を満たしていた。

使い方

  1. Vimを起動
  2. ノーマルモード状態で :GhostTextStartと入力
  3. TextAreaが配置されているページをChromeで開く
  4. GhostText拡張アイコン(右上)を押す

これで、Vim上に TextArea上の内容が表示される。編集するとWebページ上の TextAreaの値もリアルタイムで変更される。

XcodeでVimを使う

$
0
0

環境

  • 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を入れることにした。

$
0
0

はじめに、
元の状態を覚えておく。
設定ファイルの退避。(インストールする際に上書きされそうだよねという通常(?)の感覚)

shell
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を入れて最高にカッコいいターミナル環境を作る

$
0
0

base16って最高

base16を知っていますか?
これを入れると、誰でも簡単にターミナルとvimの配色を
コマンド一つで手軽に変更して利用できます。今までのターミナルの設定から変更したり、
.vimrcにcolorschemeを書いていた煩わしい作業とこれでおさらば出来ます!

image.png
solarized-dark
青い感じが結構クール。vimで人気な配色です。目に優しそう。

image.png
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と入力するだけです。

image.png
base16 まで入力してtabを押すと色々候補が出て幸せになれます。
色々使ってみて、ぜひクールなターミナルライフを送ってください!

ちょうどいい.vimrc

$
0
0

ガチの開発マシンではないけど、サーバ上でちょっとしたファイルをいじるときの、.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プラグイン環境を構築するぞ

$
0
0

標準vimはあかんねん

標準で入っているvimはバージョンが7.4と古くluapythonとも連携していないため、vimの便利なpluginが使えません。
今回はタイトル通り、centOS7環境にvim8.1+lua+python3.6環境を作っていきたいと思います。1

やること

  1. iusリポジトリのインストール
  2. python3.6のインストール
  3. 標準vimの削除
  4. rubyのインストール
  5. 後の作業に必要なパッケージ群

前提パッケージ、リポジトリ準備

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が'+'になっているかを確認すること!!

vim.jpg

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

  1. とりあえず過去のコマンドを見ながら思い出しつつ書いているので、間違っていたらどんどん教えてください。 


【homeディレクトリが共用の人へ】.vimrcの設定

$
0
0

homeディレクトリが共有なっているなど、トリッキーな環境で開発する人用。

.bash_profileへ書き込むこと

vim コマンドを打つ際に.vimrcを読み込むようにする。
.vimrcは自分の作業用ディレクトリなどに置くとよい。
.bash_profile
alias vim="vim -u /パス名/.vimrc"

.vimrcに書くこと

vimのプラグインを使いたいときの設定。

set runtimepath+=/パス名/.vim

.vim以下にDLしたものを保存すすればOK

Vim patchダイジェスト [2018/11] (仮)

$
0
0

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: :four_leaf_clover:gettagstack()settagstack()を追加しました。タグスタックの情報を取得/設定できます。
  • 8.1.0516: :four_leaf_clover::moveコマンドでバッファに変更がない時は'modified'をセットしないようにしました。
  • 8.1.0515: :four_leaf_clover:スクリプト再読み込み時、既存の(!の付いていない)関数でエラーE122にならないようにしました。そのスクリプトで以前定義されていた関数は、静かに置き換えられます。
  • 8.1.0514: 無名の代替バッファの場合、CTRL-W ^が動作しない件を修正しました。
  • 8.1.0513: set diffopt+=algorithm:がエラーにならない件を修正しました。
  • 8.1.0511: 範囲外の行番号指定(:range)で関数を呼び出すとml_getエラー(E315)が発生するのを修正しました。
  • runtimeファイル更新:
  • 8.1.0507: :four_leaf_clover:拡張子 .raml のファイルタイプをRAMLとして認識するようにしました。(今まではYAMLとして認識していた)
  • 8.1.0504: インサートモードでマップ経由で<C-C>が入力されると、InsertLeaveイベントが発生してしまう件を修正しました。

凡例

表記意味
:four_leaf_clover:新機能、大幅な仕様変更
:alien:Vim開発者向けの追加、変更
'hoge'オプション (:h options参照)
:hogeExコマンド (:h :index参照)
hoge()組み込み関数 (:h functions参照)
v:hogeVim定義済変数 (:h v:参照)
+hogefeature (:h +feature-list参照)

方針

こちらを参照。

viエディタの意味

$
0
0

主旨

開発をしているとどうしても避けて通れないviエディタについて、まとめてみました。

viエディタを使う意味

  1. UNIX系OSには必ずインストールされている そのため、レンタルサーバーなど自由にアプリケーションのインストールが出来ない場合でもvimは入っている。
  2. サーバーの管理者権限がなくても扱える。 そのため、緊急事態ですぐに使える。逆に、FTPの場合は管理者権限が必要。
  3. マウス操作不要 テンキーやショートカットがたくさんあるため、マウス操作なしでも高速に操作が可能。ただし慣れが必要。

モードの切り替え

"i", "Esc", ":"を押して、モードを切り替えます。

ノーマルモード
↓("i"を押す)
インサートモード(入力可能な状態)
↓("esc"を押す)
ノーマルモード
↓(":"を押す)
コマンドモード(ファイルを保存、終了するためのモード)

コマンド

キー入力内容意味
x1文字消す
dd1行消す
●yy●行コピーする(yankする)
pyankしたものを貼り付ける
a次に1文字入力する(インサートモード)
i現在位置に入力する(インサートモード)
o次の行の先頭から文字を入力
shift + dカーソル位置から最後まで削除
h,j,k,l左下上右 に移動
:w上書き保存
:q保存せずに終了(保存しなくてよいか確認が出る)
:wq上書き保存して終了
:q!保存せずにとにかく一発で終了

他にもありますが、主だったものは以上です。

Vimの標準文字コードを設定する方法

$
0
0

Vimの文字コードを設定する方法

>echo"set encoding=utf-8"> ~/.vimrc ;source ~/.vimrc

※次回以降は自動的に設定される

環境変数の文字コードを設定する場合

echo "export LANG=ja_JP.UTF-8" > ~/.bashrc ; sourch ~/.bashrc

Vim/ALE/PHP-CS-FixerでPHPソースを自動整形する

$
0
0

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を使用して定義元にジャンプしたい)

$
0
0

概要

クラスや関数、定数などの定義元にジャンプできるようにする
exuberant-ctagsではなくuniversal-ctagsを使用しています。設定ファイルの場所が異なりますので注意。

ctagsのインストールはこちらから

exuberant-ctagsじゃなくて、universal-ctagsをインストールしたい

ctagsの設定ファイル

~/.ctags.d/<名前任意>.ctagsに設定を書けば、読み込んでくれる
(exuberant-ctags を使用している場合は~/.ctagsに設定)

~/.ctags.d/config.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ファイルを探してくれる
.vimrc
settags=./tags;$HOME

候補が複数ある場合は一覧表示

.vimrc
nnoremap <C-]>g<C-]>
inoremap <C-]><ESC>g<C-]>

レッツジャンプ

キー動作
Ctrl + ]宣言元へジャンプ
Ctrl + t (または Ctrl + o )戻る

便利です~~~~。

参考

CtagsでVimにタグジャンプ機能を追加する - Qiita
ctagsをちゃんと使う - Qiita

過去のコミットのファイルをvimで開く

$
0
0

Gitで過去のバージョンのファイルを単体で見たいときは,

git show <コミットのハッシュ値>:<開きたいファイル(相対パス)>

で見ることができます. (ファイル名は.gitが置いてあるディレクトリからみた相対パス)

これをハイライト付きで見たいときはパイプで渡して,

git show <ハッシュ値>:<開きたいファイル> | vim -c"file ${1##*/}"-c'filetype detect' -

とすることでvimで表示できます.

毎回打ち込むのは手間なので.bashrcなどに設定しておくと楽です.

.bash_aliases
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形式の文字列を整形する

$
0
0

はじめに

Vimはファイルを開いた状態で外部シェルコマンドを実行することができるので、
プラグインを使用したり自前で関数を作成しなくてもjson形式の文字列の整形が簡単にできます。
私はcurlとかでAPIたたいた時とかによく使います。

vimでjson形式の文字列を整形する

前提条件

  • json形式の文字列を整形できるコマンドがOSで使用できること (例: jqコマンド)
jq
$cat hoge.json | jq
  • もしくは、pythonの標準ライブラリであるjsonが使えること
python
$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のコマンドモードから変換してみる

$
0
0
  • iso-2022-jpのファイルをutf-8に変換
  • 適宜,文字コードは書き換え
vim-command-mode
:e++enc=iso-2022-jp |set fenc=utf-8|wq
  • 本当はもっと簡単にする方法がありそうなものだが,スクリプト化するとか?
  • 個人的にはここくらいまでの半自動くらいが好きだけど
  • コメントあればお願いします

[Python] jqコマンドが使えない場合にjson整形で使えるスクリプト

$
0
0

はじめに

コマンドラインでjsonを整形したい時、よく使われる手段としてはjqコマンドがあげられる。
しかし、jqコマンドはOS標準で用意されているコマンドではないので、サーバによってはインストールされていない場合もある。
その場合の代替え案としてpythonの標準ライブラリであるjsonを使う案がある。

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系の場合

format_json.py
#!/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系の場合

format_json.py
#!/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を通す。

bashの設定ファイル
PATH=$PATH:$HOME/bin
$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
sample.json
{"names":["山田","佐藤","鈴木"],"class":1}

PATHを通していれば:% !fj
PATHを通していなければ:% !python format_json.py
のように外部シェルコマンドを起動すれば

sample.json
{"names":["山田","佐藤","鈴木"],"class":1}

と整形できる。

nerdtreeでファイルやディレクトリ名の先頭が表示されない

$
0
0

こんなときの対処法

スクリーンショット 2018-11-18 16.58.31.png

ディレクトリの名前がうまく表示されていない。こちらのissueによれば環境ごとに設定が必要らしい。

Missing first character in tree structure

そこで.vimrcに上記issueにある通りに記述する。

let NERDTreeNodeDelimiter ="\t"

なおった。

スクリーンショット 2018-11-18 17.01.20.png

もう一度ウィンドウ操作を考え直してみる

$
0
0

前にもやったんですけど、ウィンドウ操作に関していろいろと見つめ直して業界で言う「質実剛健な」vim使いを突き詰めてみようということで…あと転職活動中でヒマつぶししたいんですよ。

あと、当時は任意のバッファを開くために:sbからいろいろと覚えようとしていたけど無理でした。そこは割り切って別な方法を…

ウィンドウ分割くらいキーマップでなんとかせい

当時の表をちょっと加工して再掲…

commandkey 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してしまうと途端に挙動が変になるのでファイル書き込みを強制的に留めてしまうのが一番…ということでオートコマンドの出番なんですけど…

kagome.vim
augroup toggleGhost
    autocmd!ifv:servername =='GHOSTTEXT'auVimEnter * calls:toggleGhost()auBufWinEnter~/vimfiles/ghosttext/*.txt setlocal buftype=nowrite
    endif
augroup END

これがBufWinEnterの方だけ動かないわけです。うーん…

Viewing all 5728 articles
Browse latest View live


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