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

vimの設定衝突?【私的メモ】

$
0
0

よくある「カーソルキーでABCDが出てくるよ問題」が発生、そういやcompatibleだったかと

:set nocompatible

を設定。
これだけで見事消えた!かとおもいきや、微妙に出てくる時がある。

おんやぁ?
いろいろ調べると

Esc→カーソルキーのときに出てくるよう。ちなみにマウスホイールでもEscと組み合わせると出てきた。

ということはEsc周りの設定と衝突?
確認したら

nnoremap <silent><Esc><Esc> :<C-u>set nohlsearch<CR>

とかぶってるから?っぽい。
消してみたらABCD出てこなくなった。

:nohはEscにバインドしないで自分で打とうということで一旦Escバインド消して解決。
Escバインドは気をつけたほうがいいんですかね。時間ある時にもうちょっと見たい。


個人的な Neovim のインストール方法

$
0
0

自分が使っているインストール用のスクリプトを貼っときます.

環境

  • Ubuntu 16.04

スクリプト

~/opt/pyenv/binにはパスが通っている.

#!/bin/bashversion="$1"# 3系sudo apt install-y libbz2-dev libreadline-dev libsqlite3-dev

if![-d ~/opt/pyenv ];then
  git clone https://github.com/pyenv/pyenv.git ~/opt/pyenv
fi

pyenv install${version}
pyenv global ${version}if! which apt-add-repository > /dev/null;then
  sudo apt install-y software-properties-common
fi
sudo apt-add-repository -y ppa:neovim-ppa/unstable
sudo apt update
sudo apt install-y neovim
pip install neovim

VSCodeでVim風のカーソル移動

$
0
0

【背景】

Sublime Textでvim風・Emacs風カーソル移動

この記事を参考にSublimeでVim風のカーソル移動を設定していたのですが、VSCodeでもこの設定をしたい。カーソル移動しんどい、でもVim操作をするほどVimを使ってないという問題がありました。
Key設定なんて調べればわかるものですが、上記のような記事に助けられた身としては非常に手間が省ける。

というわけで

【目的】

VSCodeでVim風のカーソル移動を設定

【方法】

  1. ⌘+K,⌘+SでKeyboard Shortcutsエディターを開き、keybindings.jsonをクリック
  2. 下記のコードを追加して保存し、キーバインドを上書きする。

[
    { "key": "ctrl+l","command": "cursorRight","when":"textInputFocus" },
    { "key": "ctrl+h","command": "cursorLeft","when": "textInputFocus" },
    { "key": "ctrl+k","command": "cursorUp","when": "textInputFocus" },
    { "key": "ctrl+j","command": "cursorDown","when": "textInputFocus" }
]

同様にEmacs風にもできます。

なお

  • "key": 割り当てるキー
  • ”command”: 実行するコマンドの名前
  • "when": キーがアクティブになるときの条件

です。

【参考】

(Sublimeの設定とキーバインドを入れたので初期設定かわかりませんが)
初期でctrl+j,ctrl+k,ctrl+hには他のショートカットが割り当てられていました。
使いたいものがあれば他の割り当てを推奨します。
また念の為、以前割り当てられていたショートカットを外す記述もしました。

    { "key": "ctrl+j","command": "-editor.action.joinLines","when": "textInputFocus" },
    { "key": "ctrl+k","command": "-deleteAllRight","when":"textInputFocus" },
    { "key": "ctrl+h","command": "-deleteLeft","when": "textInputFocus" },

  //ctrl+kに割り当てられてたdeleteALLRight(カーソルの右側を全消し)を使いたかったのでctrl+deleteに割り当てました
    { "key": "ctrl+delete","command": "-deleteRight","when": "textInputFocus" },
    { "key": "ctrl+delete","command": "deleteAllRight","when": "textInputFocus" }

【結論】

Sublimeのときと同じ要領でキーの割当が可能であるが上書きすることになるので、必要なショートカット華道家の確認が必要。
ショートカットキーは⌘+K,⌘+SででてくるKeyboard Shortcutsエディターで探せます。

MacのVimでクリップボードを共有する

$
0
0

Vimのバージョンを調べて-clipboardとなっていたらクリップボードの共有ができません。

vim --version

そんな時は最新のVimをbrewでインストールします。ケツにつけてるオプションがMac上で新しいVimにパスを通してくれるようです。

brew install vim --with-override-system-vi

そして.vimrcに下記を追加して完了です。

set clipboard+=unnamed

MacではCommand+CでMacVim上の文字列をコピーできるんで、クリップボードを共有しないことが何かと便利だったんですが、Vim上で普通にクリップボード共有すればMacVimを入れなくてもいいかなーと今更思い始めてクリップボードを共有することにしました。

他人にはLinuxを勧めておいて、結局事務的な作業をいろいろするとなるとMacを使うしかなくて申し訳ない。

参考

vimのコマンド

$
0
0

viモード(制御モード)の基本コマンド

コマンド意味
h左に1文字移動
l右に1文字移動
w右に1ワード移動
b左に1ワード移動
W次のノンブランクワードの先頭へ移動
B前のノンブランクワードの先頭へ移動
e現在のワードの末尾へ移動
E現在のノンブランクワードの末尾へ移動
Oコマンドラインの先頭へ移動
^コマンドラインの最初のノンブランク文字へ移動
$コマンドラインの末尾へ移動

vimモードの入力モードへ移行するコマンド

コマンド意味
i現在の文字の前にテキストを挿入
a現在の文字の後ろにテキストを挿入
Iコマンドラインの先頭にテキストを挿入
Aコマンドラインの末尾へテキストを挿入
R既存のテキストを上書きする

viモードの削除コマンド

コマンド意味
dh後方に1文字削除
dl前方に1文字削除
db後方に1ワード削除
dw前方に1ワード削除
dB後方に1ノンブランクワード削除
dW前方に1ノンブランクワード削除
d$コマンドラインの末尾まで削除
dOコマンドラインの先頭まで削除

VSCodeからVimに乗り換えた話

$
0
0

モチベーション

  • 最近ipadから自宅のPCにsshして作業することが増えてきた
  • ssh上のコンソールで使えるエディタは強い
  • ノートPCならGUIのアプリ使えるけどipadとかでやろうとするとデスクトップ共有しなきゃいけなくて無駄に重い
  • これはVimmerになるしかない

スペック

要件定義

  • IDEっぽい感じにしたい
  • シンタックスハイライトでおしゃれに
  • 見た目はsublimeが好き
  • とりあえずVSCodeでできるスニペットまじ便利だから必須
  • まあ大体VSCodeにしたい

注意点

dotfiles

shoichi1023/dotfiles

結果得られたもの

  • ファイルツリー
  • vimでタブを増やした際のファイルツリーの共有
  • カラーテーマはsublime-monokai
  • シンタックスハイライト
  • 入力補完
  • スニペット
  • 構文チェック
  • mdプレビュー
  • indent可視化
  • AutoCloseTag
  • surround

KeyBind

tmux

prefix :

水平分割 : -
垂直分割 : \

ペイン移動
上 : k
下 : j
左 : l
右 : h

vim

prefix : s

水平分割 : -
垂直分割 : \

ペイン移動
上 : k
下 : j
左 : l
右 : h

タブ幅
上 : K
下 : J
左 : L
右 : H

新規タブ : t
次のタブへ : n
前のタブへ : p

:q : q
:w : w
:wq : wq
:q! : Q

ファイルツリー : (prefixなし)

コードの展開 : (prefixなし)

Tagバーを表示 : (prefixなし)

vで選択した文字列を任意の文字で囲う : S<任意の文字>(prefixなし)
囲われた文字列を別の文字で囲う : cs<任意の文字>(prefixなし)
囲われた文字列の囲いを外す : ds<今囲われている文字>(prefixなし)

一単語を任意の文字で囲う : ysiw<任意の文字>(prefixなし)

参考

IDEっぽいvim環境を構築する.vimrcを書いた

Vimの便利な画面分割&タブページと、それを更に便利にする方法

Vimでタブ使ってる人におすすめのやつ

みなさんもよいVimライフを!!

windowsでgit hookを使用してtagsファイル作成(自己流)

$
0
0

最初ctagsを導入して、vimプラグインを使用して自動更新する方法を調べていたら、

gitから自動で更新する記事を目にして、こちらの方も調べて導入する時に Linuxやmacの書き方はいくつも見つかったが、

Windowsの書き方がいまいち分からなかった。

調べていくうちに、Pythonで書くことが出来るのが判って、希望どうりの動きをしてくれている物を書くことが出来た。

Git Hooks (Part II) – Implementing Git hooks using Python — Omer Katz — A Blog about Software Development, DevOps, Source Control, SCM, ALM & other related topics.

前提

  • windows
  • git
  • python
    インストールしてコマンドラインからも呼び出せるようになっていること

hooksファイルを作成

そもそも、hooks/$ git initしたら .git/内に作成される。
git で merge, pull, commit, checkoutなどが実行されたら、

記載されている動作を実行するようになる。

しかし、$ git initするたびに hooks/内のファイルを書き換えるのは面倒なので、

テンプレートを作成して、$ gint initしたらテンプレートをコピーしてくれるように設定する。

  1. 新しくフォルダを .git_tmp/hooks/などと作成
  2. hooks/内に、post-merge, post-commit, post-checknutを作成
  3. post-*すべてのファイル内容を下記のコードにする
#!/usr/bin/env python

import os
import subprocess

tags = '.git/tags'

if os.path.exists(tags):
os.remove(tags)

cmd = 'ctags -R --sort=yes --append=no -f ' + tags + ' %CD%'
returncode = subprocess.Popen(cmd, shell=True)

動作は.git/tagsファイルが存在していれば削除して新しくctagsで.git内にtagsファイルを作成する。

  1. $ git initするたびに hooksの内容を .git_tmp/hooks/の中身で作成されるようにする。
    コマンドラインなどで $ git config --global init.templatedir .git_tmpを実行

これで、git initしたら、 .git_tmp/hooks/の内容で .git/hooks/が作成される。

参考

gitのhookでtags作成 - Qiita

ctagsと連携するように環境を構築する - Qiita

GitHub - AdaCore/git-hooks: Git hooks Python-based scripts

Pythonからコマンドを呼び出す(Windows編) - Qiita

トラブル

  • .git_tmpがコピーされない。
  • .gitconfigを直接開いて、templatedir = ‘./.git_tmp‘から templatedir = .//.git_tmpに変更したらうまくコピーした。
  • tagsファイルが読み込まれない。(Error: E429: File "project/.git/lib\util.php" does not exist)
  • vim-fugitive でおかしくなっている?
  • tagsファイルをそのまま.gitから出して、projectフォルダに移動させたら正常に動いた。
  • tagsファイル内のパスがおかしい のか? lib\util.phpではなく ..\lib\util.phpだと動作した。
  • つまりは、 project/.git/lib/.git/部分が余計なのかな?
  • 解決:フルパスで作成するようにしたら、問題なく動いた。ソースコードを更新

vim + Markdownで講義ノートを取る & gitで管理する

$
0
0

ポエム

人類はMarkdownで講義ノートを取りたい
人類はvimを使いたい
人類はHot Reloadしたい
人類はTeX記法で数式を書きたい

ヤッゾ

Vundle

vundleを入れていない人はいれる。
https://github.com/VundleVim/Vundle.vim#quick-start
これでよい。

vim-instant-markdown

いろいろ入れる
gem install redcarpet pygments.rb
npm -ginstall instant-markdown-d

そのままだとたぶん数式がレンダリングできないので,

vim $(npm root -g)/instant-markdown-d/index.html

してからこうする。

index.html
--- index.html.old      2018-10-27 19:31:33.000000000 +0900
+++ index.html  2018-10-27 19:33:00.000000000 +0900
@@ -14,12 +14,19 @@
       padding: 30px;
     }
   </style>
+  <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+  <script type="text/x-mathjax-config">
+    MathJax.Hub.Config({
+      tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}
+    });
+  </script>
<script src="/socket.io/socket.io.js"></script>
   <script>
     var socket = io.connect('http://localhost:8090/');
     socket.on('connect', function () {
       socket.on('newContent', function(newHTML) {
         document.querySelector(".markdown-body").innerHTML = newHTML;
+        MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
       });
       socket.on('die', function(newHTML) {
         window.open('', '_self', '');

vimrcはこんな感じでええやろ

~/.vimrc
"" Vundle.vim"set nocompatible
filetype off

set rtp+=~/.vim/bundle/Vundle.vim/call vundle#begin()

Plugin 'VundleVim/Vundle.vim'
Bundle 'Markdown'
Bundle 'suan/vim-instant-markdown'call vundle#end()filetype plugin indent on

で,:BundleInstallするともう.mdはきみのものだ

git

まあ適当に.gitignoreを書けばいいんだが,アホ向けに

.gitignore
*
!*/
!/.gitignore
!*.md

VimでPHPを書くならPhpactorを使うと便利そう(入力補完・ジャンプ・リファクタリング)

$
0
0

1. はじめに

私は職場でVimを使ってPHP(Laravel)を書いています。今回、VimをPHP開発環境として整備したいと思いこちらの記事を読んでいましたら、Phpactorというプラグインが割りと推しで紹介されていました。

Phpactorは入力補完やリファクタリング、定義ジャンプなどが可能なとても高機能そうなプラグインなんですが、日本語の記事が非常に少なかったので簡単にご紹介します。

2. Phpactorとは

百聞は一見にしかずといいますので、Phpactorを軽く動かしてみたところを撮影したGIFを貼ります。Phpactorの機能を利用している箇所は、右上に青字でその機能名を記載しています。

Phpactor Introduction

↑のGIFでおこなっているのは、

  1. 新しいクラスApp\Models\ItemExampleを作成するため、ファイルapp/Models/ItemExample.phpを開く
  2. Phpactorで空のクラス定義を生成(ClassNew)。この際、なぜかファイル名がItem.phpに変わっています(^^;
  3. Kernelインタフェースを実装するimplementsを追記(Completion (Class Name))。Phpactorの入力補完を使うことで、useによる名前空間のインポートも自動でやってくれます。
  4. Kernelインタフェースで定義されているメソッドを、作業中のファイルに取込む(Import Contract)。{@inheritDoc}つきでインポートしてくれます。
  5. コンストラクタを入力。引数のタイプヒントでPhpactorの入力補完を使い、ここでもPhpactorがuseを追加してくれています。
  6. コンストラクタの引数を同名のプロパティに代入する記述と、プロパティの定義(宣言?)の補完(Complete Constructor)。
  7. Kernelインタフェースのソースコードに画面を割ってジャンプ。ジャンプもできますよ、という実演のためなのですぐ閉じています。
  8. プロパティへのアクセサ(ゲッタ)を同名のメソッドとして作成(Generate Accessor)。
  9. コンストラクタに処理を記述する際にPhpactorの入力補完を利用(Completion)。
  10. 追記した処理をビジュアルモードで選択し、$is_jsonという名前の変数に代入(Extract Expression)。

という操作です。

多機能さをご理解いただけるかなと思います。スマートな入力補完やリファクタリング、コード一部の生成代行など、IDEを知らない私にとっては驚愕でした。

公式ドキュメントによると、Phpactorは高機能な入力補完とリファクタリングツールであり、次のような特長を備えています。

  • 発音は「Phpactor」で「ふぁくたー」
  • 文脈を考慮したスマートな入力補完
  • Composerに最適化されており、リアルタイムで高速に動作する
  • クラスやメソッド定義元へのジャンプ機能
  • クラスの移動、コンストラクタ補完、メソッド生成などのリファクタリング機能
  • 公式でVimをサポート(Emacsサポートは目下製作中)
  • コマンドライン上で実行するツールとしても使用可能
  • 自身と似たプロジェクトとして、PHP Language Serverを挙げている

GitHubを見ると、現在は開発段階で最新リリースは0.9.0(2018-09-13)です。

3. Phpactorの導入

動作には

  • PHP7.0以上
  • Composer
  • Vim8 / Neovim

が必要になります。参考までに、私の環境は

  • Ubuntu 18.04 / CentOS7
  • Vim 8.1
  • PHP 7.2
  • Composer 1.6.3
  • Python3.6 / Python3.4

です。

3.1. インストール

私はプラグイン管理にdein.vimを利用しています。tomlにこんな具合に書いて保存してVimを再起動し、:call dein#install()でインストールできました。

[[plugins]]repo='phpactor/phpactor'on_ft=['php']build='composerinstall'

:call phpactor#Status()で、きちんとPhpactorが導入できたか確認できます。パフォーマンスの関係で、Phpactorは既定の動きではXDebugを無効にします。

Info
----
Version: a516257 (7 days ago) Change-visiblity-617
Work dir: /home/cyrt/wk/repo/laravel5-5-example

Diagnostics
-----------
[✔] Composer detected - faster class location and more features!
[✔] Git detected - enables faster refactorings in your repository scope!
[✔] XDebug is disabled. XDebug has a negative effect on performance.

Config files
------------
[✘] /etc/xdg/phpactor/phpactor.yml
[✘] /home/cyrt/.config/phpactor/phpactor.yml
[✘] /home/cyrt/wk/repo/laravel5-5-example/.phpactor.yml

3.2. キーマップ

Phpactorは導入時に独自のキーマップを定義しませんので、自分で設定してやる必要があります。
公式には、設定例として<Leader>をプリフィクスにしたキーバインド例がのっています。以下はそれを少しだけ書きかえたものです。<Leader>oで定義元へのジャンプができますが、私は窓を分割してジャンプすることが多いため、<Leader>o<C-w><Leader>oの2種類のジャンプを用意しています。

function! DefinitionJumpWithPhpactor()
    split
    call phpactor#GotoDefinition()endfunction

aug enablePhpactorKeyBindings
    au!" useの補完
    nmap <Leader>u:<C-u>call phpactor#UseAdd()<CR>" コンテキストメニューの起動(カーソル下のクラスやメンバに対して実行可能な選択肢を表示してくれます)
    nmap <Leader>mm :<C-u>call phpactor#ContextMenu()<CR>" ナビゲーションメニューの起動(クラスの参照元を列挙したり、他ファイルへのジャンプなど)
    nmap <Leader>nn :<C-u>call phpactor#Navigate()<CR>" カーソル下のクラスやメンバの定義元にジャンプ
    nmap <Leader>o:<C-u>call phpactor#GotoDefinition()<CR>" split → jump
    nmap <C-w><Leader>o:<C-u>call DefinitionJumpWithPhpactor()<CR>" 編集中のクラスに対し各種の変更を加える(コンストラクタ補完、インタフェース実装など)
    nmap <Leader>tt :<C-u>call phpactor#Transform()<CR>" 新しいクラスを生成する(編集中のファイルに)
    nmap <Leader>cc:<C-u>call phpactor#ClassNew()<CR>" 選択した範囲を変数に抽出する
    nmap <silent><Leader>ee :<C-u>call phpactor#ExtractExpression(v:false)<CR>" 選択した範囲を変数に抽出する
    vmap <silent><Leader>ee :<C-u>call phpactor#ExtractExpression(v:true)<CR>" 選択した範囲を新たなメソッドとして抽出する
    vmap <silent><Leader>em:<C-u>call phpactor#ExtractMethod()<CR>
aug END

3.3. 設定ファイル

設定ファイルを記述することで細かい挙動の制御ができますが、リファレンスを見た限りでは特に設定を書く必要はなさそうだったので、なにも設定は記述しませんでした。以下をコンフィグファイルとして認識するようです。

  • /etc/xdg/phpactor/phpactor.yml
  • ~/.config/phpactor/phpactor.yml
  • プロジェクトのルートディレクトリ/.phpactor.yml

4. ざっくり機能紹介

基本的には入力補完、ジャンプ、リファクタ機能に大別できます。
このうち、ジャンプとリファクタ機能は↓でご紹介のコンテキストメニューから選択肢を辿って実行することができます。そのため、慣れないうちは「コンテキストメニューを各所で立上げて、おこないたい処理を選んで実行」という使い方をおすすめします。

他にもNavigation機能(うえのキーマップでは<Leader>nn)があるんですが、使いどころを間違えているのかどこで立上げても「選択肢はありません」と表示されてしまうため、ただいま調査中です。

4.1. 入力補完

入力補完については、.vimrcに次のように記述することで、Vimの組込みオムニ補完でPhpactorを利用できます。

.vimrc
" <C-x><C-o>で補完候補を表示できます。
autocmd FileType php setlocal omnifunc=phpactor#Complete

導入さえしてしまえれば、Composerプロジェクトでなくても入力補完機能の大部分は使えるようです(未検証)。ただ、動作が多少遅くなるかもしれないそうです。

自動補完を有効にするため、入力補完プラグインを使うことができます。公式に対応している入力補完プラグインとして、

が記載されています。

ncm2ではVim8への対応はおまけのようだったので("Note that vim8 support is simply a bonus."とある)、deoplete.nvimを使ってみることにしました。私はこれまでneocomplete.vimを使い続けてきたので、これを機にようやくdeoplete.nvimに移行することができました。lua(neocomplete.vim)のためにVimを自前ビルドする生活とはこれでお別れしました。

deoplete.nvimでphpactorの補完を利用する場合は、deoplete-phpactorをあわせてインストールします。 正しくインストールできていれば、次のようにグレートな補完ライフを享受することができるようになります。

補完の様子

ちゃんとDocコメントを見て補完してくれています。

とはいえ、deoplete.nvimで常時自動の補完候補表示を有効にしておくとカクつきは否めないかな~というところですね。また、タイプヒントに対する補完を呼ぶ際は手動でオムニ補完を呼ぶ必要があります。
個人的にはオムニ補完の設定だけやっておいて、あとは補完がほしいときだけ呼ぶ、というかたちで十分かなという気がします。

4.2. ジャンプ

冒頭のGIFでちょこっと定義元ジャンプを使ってソースコードの移動をおこなっています。この他にも、編集中のクラスに対応する単体テストへのジャンプ(要設定)や親クラスへのジャンプなどができます。

4.3. リファクタリング

4.3.1. コンテキストメニュー

操作をおこないたいクラスやメンバにカーソルを置いた状態で<Leader>mmを入力するとコンテキストメニューが立上がり、状況に応じて実行可能な操作の一覧を表示してくれます。立上げたメニューのキャンセルは<C-c><C-[>の2回打ちでできるようです。

あまり詳しく調べていませんが、上でキーマップがあてられている他の機能もだいたい呼出せるみたいなので、とりあえず迷ったら<Leader>mmしておけばいいように思います。

変数にカーソルを置いた状態でメニューを立上げると、次のようなメニューが表示されます。ここではメソッドローカル変数reqnew_reqへのリネームをしています。

context_menu_for_variable

変数にカーソルを置いた状態でメニューを立上げると、次のようになりました。find referenceを実行しCategoryクラスを参照している箇所をソースコードから検索してQuickFixにして表示してくれます。
gtagsにも同様の機能があるので比較がてら直後に実行していますが、候補の表示量にだいぶ差がありますね…。

context_menu_finding_reference

4.3.2. クラス整形

メニューが開き、編集中のファイルに対する各種の整形がおこなえます(Transformを「整形」としました)。

コンテキストメニューからも辿れますが、キーマップ<Leader>ttで直接整形に関するメニューを開くことができます。

class_transform

ここでは、

  • Composerのautoload設定やファイル名に基づいて名前空間・クラス名を修正
  • コンストラクタの補完
  • 宣言なしに使われているプロパティ宣言の生成
  • インタフェースで宣言されているメソッドを編集中のクラスへ取込み

が候補として表示されています。うしろ3つの処理については冒頭のGIFのなかで実行しているので、そちらを参考にしてください。

名前空間の修正について、次のGIFではapp/Models/NewItem.phpの誤った名前空間App\Models\IncorrectNamespaceを、ファイルパスを見てApp\Modelsに修正しています。

fix_namespace.gif

ファイルの移動やクラス名・名前空間の変更などをおこなった際に役立つかもしれません。

4.4. 他の機能

useの追加はタイプヒントの入力補完の際にもやってくれますが、useの追加だけでひとつの操作としておこなうことができます。うえのキーマップでは<Leader>uにあてられています。下のGIFではRequestをインポートする様子です。複数候補がある場合は選択するよう促されます。

useの補完の様子

5. おわりに

うえで紹介したほかにも、紹介しきれない各種のIDE的機能が備わっています。開発段階であるとはいえ様々な機能が用意されていますので、興味のある方はさわってみてはいかがでしょうか?

6. 参考

公式です。

GitHubのリポジトリです。

この記事でPhpactorを知りました。Phpactorを"phpactor is simply a must have."と紹介していたり、他の箇所では「怪物」と評しているので、気になってPhpactorを使うきっかけになりました。
vim-bbyeなど、他にも日本では知名度が低いが便利そうなプラグインが紹介されています。

Phpactorの紹介スライド。

日本語記事そのいち。

日本語記事そのに。Phpactor以外にも、PHP開発で役立つツールを紹介されています。

vim のコード補完プラグインYouCompleteMe クイックインストールガイド

$
0
0

クイックリンク

YouCompleteMe とは

vim のためのコード補完プラグインです。
YouCompleteMe を使うとEclipse やIDEA のようにリアルタイムにコードの候補を検索して以下の画面のように入力の手助けをしてくれるようになります。


YouCompleteMe クイックインストール

YouCompleteMe のGitHub リポジトリを見ると結構ドキュメントがいっぱい…そこで、みなさんがよく使うであろうMac 及び主要なLinux ディストリビューション上で、簡単にYouCompleteMe が使えるように、またあやたが普段使用している.vimrc に簡単に導入できるよう、可能な限り少ない設定内容且つコマンドでインストールできるようまとめてみました。

vim バージョンとコンパイルオプションの確認

vimversion確認
$ vim --versionVIM - Vi IMproved 8.0 (2016 Sep 12, compiled Apr 10 2018 21:31:58)
Included patches: 1-1453
Modified by pkg-vim-maintainers@lists.alioth.debian.org
Compiled by pkg-vim-maintainers@lists.alioth.debian.org
Huge version with GTK2 GUI.  Features included (+) or not (-):
+acl               +farsi             +mouse_sgr         -tag_any_white
......
+comments          +libcall           -python            +vreplace
+conceal           +linebreak         +python3           +wildignore    <- Python 3 サポートあり
+cryptv            +lispindent        +quickfix          +wildmenu
......

python のサポートについてはvim を開いて以下のコマンドを実行して、1 が表示されるかどうかで確認することもできます。

vimを開いて確認する方法
:echo has('python') || has('python3')

Ubuntu 16.04 以降、Fedora 27 以降であれば最新版でインストールされたvim を使うことで条件を満たせます。
それ以外の場合はvim をソースコードからコンパイルする必要があります。

YouCompleteMe に依存するパッケージ類のインストール

YCM をコンパイルするためにコンパイラ cmake 等の必要なパッケージをインストールします。

Mac
$ brew install cmake

※Mac の場合は事前にMacVim もインストールしておいてください。
https://stackoverflow.com/a/21012284

Ubuntu18.04
$sudo apt-get install-y build-essential cmake python3-dev libclang-dev
Fedora28
$sudo dnf install cmake gcc-c++ make python3-devel
Arch
$sudo pacman -Sy cmake gcc make python3 clang

今回はvim のパッケージマネージャとしてvim-plug を使っていることを想定しています。
vim-plug のインストール

$ curl -fLo"${HOME}/.vim/autoload/plug.vim"--create-dirs"https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"

以下記述を.vimrc に追加します。

~/.vimrc
call plug#begin('~/.vim/plugged')
Plug 'Valloric/YouCompleteMe'
call plug#end()
let g:ycm_global_ycm_extra_conf = '${HOME}/.ycm_extra_conf.py'
let g:ycm_auto_trigger = 1
let g:ycm_min_num_of_chars_for_completion = 3
let g:ycm_autoclose_preview_window_after_insertion = 1
set splitbelow

上記YouCompleteMe のオプションの簡単な説明は以下のとおりです。

  • オプション説明
    オプション説明
    g:ycm_global_ycm_extra_conf CやC++ 等のコンパイルに関するオプション等が定義してあるpython スクリプトを指定します
    g:ycm_auto_trigger YouCompleteMe を自動的に起動するかどうかを設定します。1 を設定すると自動起動するようになります
    g:ycm_min_num_of_chars_for_completion識別子補完機能が起動するのに、ユーザが入力していなければならない文字数の最小
    g:ycm_autoclose_preview_window_after_insertion 1 に設定すると、vim のインサートモードを抜けた後にプレビューウィンドウを自動的に閉じるようになります。

なお、set splitbelowについては補完機能が起動して関数や変数の説明が表示されるとき、その説明ウィンドウが下に表示されるようにするためのオプションです。
その他のオプションについては公式のGitHub サイトに載っていますので、そちらを参考にしてください。

.ycm_extra_conf.py ファイルの準備

YouCompleteMe ではC 言語系のソースコードを編集しているときにリアルタイムにコンパイルエラー等を検知してユーザに知らせることができます。
そのC 語系のソースコードをコンパイルするときのルールオプションを指定するファイル.ycm_extra_conf.pyを準備します。

今回はhttps://github.com/Valloric/ycmd GitHub リポジトリ内のそれを使わせていただくことにします。

.ycm_extra_conf.pyの準備
$ curl -fLo"${HOME}/.ycm_extra_conf.py""https://raw.githubusercontent.com/Valloric/ycmd/master/.ycm_extra_conf.py"

準備ができたら、次はYouCompleteMe をインストールします。
今回はパッケージマネージャとしてvim-plug を使う場合を例に進めていきます。その他Vundle やpathogen を使った例は本記事の最後に載せておきますので参考になればと思います。

YouCompleteMeインストール
$ vim +PlugInstall +"sleep 1000m" +qall
$cd ~/.vim/plugged/YouCompleteMe
$ python3 install.py --clang-completer--system-libclang

以上でインストールは完了です。
試しに簡単なプログラムを書いてvim の補完が効くか確かめてみましょう。

YouCompleteMe でvim によるハッピーなプログラミングを加速させましょう!!

おまけ: Vundle を使う場合

vim-plug の場合との違いは主にVundle の仕様による部分がほとんどですので、細かい説明は割愛させていただきます。
備忘録としてインストールコマンドのみを貼り付けておきます。

Vundleを使う場合のインストール
$cd"${HOME}"$sudo apt-get install-y build-essential cmake python3-dev libclang-dev
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
$cat<<EOF> .vimrc
>set rtp+=~/.vim/bundle/Vundle.vim
>call vundle#begin()
>Plugin 'VundleVim/Vundle.vim'
>Plugin 'Valloric/YouCompleteMe'
>call vundle#end()
>filetype plugin indent on
>>let g:ycm_global_ycm_extra_conf = '${HOME}/.ycm_extra_conf.py'
>let g:ycm_auto_trigger = 1
>let g:ycm_min_num_of_chars_for_completion = 3
>let g:ycm_autoclose_preview_window_after_insertion = 1
>set splitbelow
>EOF
$ curl -fLo"${HOME}/.ycm_extra_conf.py""https://raw.githubusercontent.com/ramkalath/config_files/master/nvim/.ycm_extra_conf.py"$ vim +PluginInstall +"sleep 1000m" +qall
$cd .vim/bundle/YouCompleteMe/
$ python3 install.py --clang-completer--system-libclang

おまけ: pathogen を使う場合

vim-plug の場合との違いは主にpathogen の仕様による部分がほとんどですので、細かい説明は割愛させていただきます。
備忘録としてインストールコマンドのみを貼り付けておきます。

pathogenを使う場合のインストール
$cd"${HOME}"$sudo apt-get install-y build-essential cmake python3-dev libclang-dev
$ curl -fLo ./.vim/autoload/pathogen.vim --create-dirs https://tpo.pe/pathogen.vim
$cat<<EOF> .vimrc
>execute pathogen#infect()
>>let g:ycm_global_ycm_extra_conf = '${HOME}/.ycm_extra_conf.py'
>let g:ycm_auto_trigger = 1
>let g:ycm_min_num_of_chars_for_completion = 3
>let g:ycm_autoclose_preview_window_after_insertion = 1
>set splitbelow
>EOF
$ curl -fLo"${HOME}/.ycm_extra_conf.py""https://raw.githubusercontent.com/ramkalath/config_files/master/nvim/.ycm_extra_conf.py"$ git clone https://github.com/Valloric/YouCompleteMe .vim/bundle/YouCompleteMe
$cd .vim/bundle/YouCompleteMe/
$ git submodule update --init--recursive$ python3 install.py --clang-completer--system-libclang

参考

vim超入門まとめ[.vimrcの例]

$
0
0

はじめに

私自身vimを使い始めたのは最近のことですので、詳しい方からしたら今更感のあるものとなってしまうと思います。
また、見様見真似で覚えたことが多いので、粗もあるかと思います。ここはこうした方がよいなどございましたら更新していくつもりですので、コメントいただけると幸いです。

vimとは

テキストエディタの一つで、ターミナル上で動作する。

vimを使い始めたきっかけ

Ubuntuを使い始めたこと

vimの利点[主観]

・ターミナル上で動作するため、ssh接続でテキスト編集ができる。
・キーボードのみで操作可能なので、ターミナル操作からの流れでキーボードから手を話すことなく作業が可能。
・コピー&ペーストが素早く、自分のソースコードを再利用したりオープンソースを活用しやすい。
.vimrcというファイルによって簡単に設定ができる。

vimの欠点[主観]

・メモ帳のイメージで使用するととてつもなく不便。
・コマンドを覚えるまでのハードルが(少し)高い。
・vim以外のテキストエディタを使えなくなる。(笑)

vim入門

1.基本操作

・基本的な移動は←↓↑→の順にh,j,k,l
iを押すとインサートモード。ここではメモ帳のようにテキスト編集可能。移動は十字キー
Escを押すとノーマルモードに戻る
:wで保存
:qでvimを閉じる
:wqで保存して終了

2.カット&ヤンク&ペースト

1行

コマンド動作
ddカット
yyヤンク
pペースト

n行 (コマンドのnには任意の数字を入れてください)

コマンド動作
nddカット
nyyヤンク
pペースト

ビジュアルモード

視覚的に見ながら複数選択ができるモード

wordでいうところの、Shiftキーを押したまま矢印キーを押すもの。
マウスで左を押したままカーソルを移動するもの。

vでビジュアルモードに移行
・ノーマルモードと同じ移動ができる
・選択中にyでヤンク、dでカット、自動でノーマルモードに戻るのでそのままpでペーストできる
Escでノーマルモードに戻ることができる

このとき、よく使うのがggvGyで、これは一番上から一番下までヤンクという意味です。:%yもほぼ同じですが、こちらの方が打ちやすく個人的には好きです。このとき、最後の行の1文字目までしか選択してくれないことには注意してください。

3.他のファイルからヤンク&ペースト

ここまで、コピーやペーストのやり方を記してきましたが、別でvimを起動すると貼り付けることができません。
そこで、vim上で他のファイルを開く必要があります。

vimを分割

そのまま別ファイルを開いても構いませんが、vimを分割した方が使いやすいです。

コマンド動作
:split縦に一つタブを作成して同一ファイルを開く
:vsplit横に一つタブを作成して同一ファイルを開く
:new縦に分割して新規ファイルを開く
:vnew横に分割して新規ファイルを開く

分割したタブへ移動したい時はCtrl+w wCtrl+w hCtrl+w jCtrl+w kCtrl+w lで移動できます。
分割したタブを閉じたい時は:qで閉じることができます。変更を加えていた場合は:wqとなります。

別ファイルを開く

:open filenameで指定したファイルを開く
:open path/to/filenameで別ディレクトリのファイルを開ける

このとき、開きたいファイル名やパスがわからない時は:open .のようにするとフォルダの中身の一覧が見られるし、ディレクトリ移動もできます。

4..vimrcについて

.vimrcとはvimを設定するファイルのことです。基本的にはホームディレクトリに置きます。ドットがついているので$ lsをした時には表示されないので邪魔にはならないので心配しないでください。もしあるか不安なら$ ls -aで存在を確認できます。

.vimrcの例

私が現在使用しているものです。他の方のものを見て好きなものを抜き出しているので、パクリがあるかもしれません。何かあれば消させていただきますので、ご指摘ください。

" タブ入力を複数の空白入力に置き換える
set expandtab
" 画面上でタブ文字が占める幅
set tabstop=2
" 連続した空白に対してタブキーやバックスペースキーでカーソルが動く幅
set softtabstop=2
" 改行時に前の行のインデントを継続する
" set autoindent
" 改行時に前の行の構文をチェックし次の行のインデントを増減する
" set smartindent
" smartindentで増減する幅
" set shiftwidth = 2
" 行を表示
set number

if has("autocmd")
  " ファイルタイプの検索を有効にする
  filetype plugin on
  " ファイルタイプに合わせたインデントを利用
  filetype indent on
  " sw=softtabstop, sts=shiftwidth, ts=tabstop, et=expandtab
  autocmd FileType c           setlocal sw=4 sts=4 ts=4 et
  autocmd FileType html        setlocal sw=4 sts=4 ts=4 et
  autocmd FileType ruby        setlocal sw=2 sts=2 ts=2 et
  autocmd FileType js          setlocal sw=4 sts=4 ts=4 et
  autocmd FileType zsh         setlocal sw=4 sts=4 ts=4 et
  autocmd FileType python      setlocal sw=4 sts=4 ts=4 et
  autocmd FileType scala       setlocal sw=4 sts=4 ts=4 et
  autocmd FileType json        setlocal sw=4 sts=4 ts=4 et
  autocmd FileType html        setlocal sw=4 sts=4 ts=4 et
  autocmd FileType css         setlocal sw=4 sts=4 ts=4 et
  autocmd FileType scss        setlocal sw=4 sts=4 ts=4 et
  autocmd FileType sass        setlocal sw=4 sts=4 ts=4 et
  autocmd FileType javascript  setlocal sw=4 sts=4 ts=4 et
endif


" インクリメンタルサーチ(1文字入力ごとに検索する)
set incsearch
" 検索パターンに大文字小文字を区別しない
set ignorecase
" 検索パターンに大文字を含んでいたら大文字小文字を区別する
set smartcase
" 検索結果をハイライト
set hlsearch
" Escキー2度押しでハイライトの切り替え
nnoremap <silent><Esc><Esc> :<C-u>set nohlsearch!<CR>
" 行が折り返し表示されていた場合、行単位ではなく表示行単位でカーソル移動
nnoremap j gj
nnoremap k gk
nnoremap <down> gj
nnoremap <up> gk


" コマンドモードの補完
set wildmenu
" 保存するコマンド履歴の数
set history=5000


" マウスの有効化(カーソル移動・スクロール移動)
if has('mouse')
  set mouse=a
  if has('mouse_sgr')
    set ttymouse=sgr
  elseif v:version > 703 || v:version is 703 && has('patch632')
    set ttymouse=sgr
  else
    set ttymouse=xterm2
  endif
endif


" ペースト設定(クリップボードからコピーする際の自動インデント無効化)
if &term =~ "xterm"
  let &t_SI .= "\e[?2004h"
  let &t_EI .= "\e[?2004l"
  let &pastetoggle = "\e[201~"

  function XTermPasteBegin(ret)
    set paste
    return a:ret
  endfunction

  inoremap <special> <expr> <Esc>[200~ XTermPasteBegin{""}
  endif


" 自己流ショートカット
" コメントアウト
nnoremap <C-i> 0i//<Esc>
" アンコメントアウト
nnoremap <C-s> 0xx
" 空白行を追加するがノーマルモードを維持
nnoremap <S-o> o<Esc>

" カーソルの左右移動で行末から次の行への移動を可能にする
set whichwrap=b,s,h,l,<,>,[,],~
" カーソルラインをハイライト
color desert
set cursorline
" カレント行ハイライトを下線の代わりに文字強調にする
hi CursorLine term=bold cterm=bold guibg=Grey40

~/以外に置きたい場合は、任意の場所に.vimrcを置いて、開き方を$ vim -u path/to/.vimrc filenameとするとできます。

5.ここまでくればもうvimの良さに気がつくと思います!

 おまけ

その他のコマンド

先程は、触れやすくするために似たような動作をするコマンドを省略しましたので、それらを少しだけ紹介しておきます。

コピー系

コマンド動作
:set number行番号を表示
:n,m yn行からm行までヤンク
:n,m dn行からm行までカット
npn個ペースト

移動系

コマンド動作
Ctrl+d半ページダウン
Ctrl+u半ページアップ
Ctrl+f1ページダウン
Ctrl+b2ページアップ
zzカーソル行を中心
ztカーソル行を一番上

検索&置換系

コマンド動作
/namenameという文字列を検索
:s/before/afterカレント行の先頭のbeforeをafterに置換
:s/before/after/gカレント行のすべてのbeforeをafterに置換
n検索結果を次へ
Shift+n検索結果を前へ

矩形選択モード

一斉に字下げする際に重宝します。
Ctrl+vで矩形選択モードに移行
$で長さの違う行をすべて選択
yでヤンク、dでカット
Escでノーマルモードに戻る

WSL+Vim+YouCompleteMe+Unityの罠

$
0
0

注意書き

Vim以外のエディタに宗教上の理由で触れません。GUIを使いたくありません。
shellの黒い画面に引きこもって開発したいです。
育ちが悪いので言葉がアレです。用法用量に注意してお読みください。

なんでWSL?

今までMac+UnityでiOSやAndroidの開発してたんですが、仕事がVRになりました。
そう、VRの開発=Windows
Macに親しんだ人ならわかってくれると思うんですがWindowsは開発環境構築がメンドウクサイ…
まだ環境は定まっているわけではないのですが、似たような状況の人はきっといるだろうと思い、
ハマった罠についてアウトプットします。
WindowsでMacみたいな爆速zsh環境がいつか来るといいなぁ…。頑張れWSLもっと頑張れ。

Windows+Unityで生成した.slnをUbuntuのVim+YouCompleteMeで

Unityは.slnをプロジェクトからよしなに生成してくれます。
VisualStudioで読み込んですぐバリバリ開発できますねヤッタァー
あんかクソ重いエディタ使えるか。テキストオブジェクト使えないとか化石

さてWSLをいれてUbuntu内でVim+YouCompleteMeでプロジェクトを読み込んでみましょう。
自前で作成したクラス群は補完がちゃんと効くと思いますが、
UnityEngineなどUnityEngine.dllで定義されてるクラス群が補完できませんね。
諦めてVisualStudioしないでください。訓練されたVimmerは諦めない。

Vim内で:YcmDebugInfoだッ!

上記コマンドを叩くと読み込んだslnのpathやlogのpathが表示されます。
今回見るべきはOmniSharp logfile: /path/to/hogefugapiyo_stdout_hogehoge.logになります。
そのlogを追ってみるとUnityEngine.dllがLoad Errorになっているログが吐かれています。
そのpathを見るにC:\path\to\Unity\になっていませんか?
WSLの設定にもよるかと思うのですが少なくとも自分はUbuntu側からのpathは
/mnt/c/path/to/Unity以下略にUnityEngine.dllがいなければならないはず。
犯人はこいつです。

というわけで修正です。
Unityはよしななタイミングで.slnや.csprojを更新するのでテキトーなFunctionでも作っておいて、
即座に修正できるようにしておきましょう。

command! ModifyCSProjFile :call ModifyCSProjFile()function! ModifyCSProjFile():!find .-maxdepth 2-name "*.csproj"| xargs sed -i-e's/C:/\/mnt\/c/g':!find .-maxdepth 2-name "*.csproj"| xargs sed -i-e's/D:/\/mnt\/d/g':YcmCompleter ReloadSolution
endfunction

あんまりVimScript感がありませんが動いてるからイイノデス。
Vimmerのツッコミ歓迎 :sunglasses:

vimでHTMLのタグ補完

$
0
0

最近純粋なvimでは飽きたらずついにプラグインに手を出してしまいました。
そこで今回はHTMLでタグ補完を行える「emmet-vim」をご紹介

対象

Mac

neobundleって何?

NeobundleはShougoさんによって作られた、vimプラグインのパッケージマネージャーです。
日本人発のOSSはどこか惹かれますね

Neobundleのインストール

$ curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh > install.sh
$ bash ./install.sh

上記を実行する事でvimrcに書くべき内容が出力されます。
私の環境だと下記のようになっています。
これをvimrcの先頭に追加してください。

"NeoBundle Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath+=/Users/Ryuichi/.vim/bundle/neobundle.vim/

" Required:
call neobundle#begin(expand('/Users/Ryuichi/.vim/bundle'))

" Let NeoBundle manage NeoBundle
" Required:
NeoBundleFetch 'Shougo/neobundle.vim'

" Add or remove your Bundles here:
NeoBundle 'Shougo/neosnippet.vim'
NeoBundle 'Shougo/neosnippet-snippets'
NeoBundle 'tpope/vim-fugitive'
NeoBundle 'ctrlpvim/ctrlp.vim'
NeoBundle 'flazz/vim-colorschemes'

" You can specify revision/branch/tag.
NeoBundle 'Shougo/vimshell', { 'rev' : '3787e5' }

" Required:
call neobundle#end()

" Required:
filetype plugin indent on

" If there are uninstalled bundles found on startup,
" this will conveniently prompt you to install them.
NeoBundleCheck
"End NeoBundle Scripts-------------------------

上記でneobundleの設定は完了です。
ここからはHTML用の補完プラグインを追記します。

下記をvimrcへ追記してください

NeoBundle 'mattn/emmet-vim'

あとは適当にテキストを開くのみで適用されます。

を入力後に「,」を実行することでタグが自動展開されます

index.html
<!-- 展開前 -->
html<C-y>,

<!-- 展開後 --><html></html>

ファイル単位でシンタックスを変更したりスペースを変更する方法

$
0
0

概要

認識しない拡張子に出会ったり、スペースを4→2に変更した場合にどうするかの内容です。

一言で

<!-- vim:set ts=2 sw=2 ft=html -->

モードラインを使う。

解決策

モードラインというファイルに設定を書ける機能があります。

<!-- vim:set ts=2 sw=2 ft=html -->

コメント内にvim:setをスペース区切り1で、設定を書いていきます。

サンプル

<!DOCTYPE html><htmllang="ja"><head><metacharset="UTF-8"><title></title></head><body></body></html><!-- vim:set ts=2 sw=2 ft=html: -->

詳しくは

:h vim:に書いてあります。紛らわしいことに、:h :vimもあるので注意してください。

ヘルプにも書いています。

なにもかも忘れた場合は、ヘルプの下を見るといいです。

 vim:tw=78:ts=8:ft=help:norl:

  1. :でも区切れたり、setを省略できたり色々方法はありますが割愛します。 

Alacritty!iTermより早いよ!

$
0
0

以前から入れてはいたが日本語入力に対応していなかったので使ってはいなかった。(fontいれると表示はできていた)
なにやらいつのまにか対応してる情報が入ってきたので再度触ってみました。

Alacritty 結論

  • 日本語入力中は表示されないのでちょっと待ち、できることはできる
  • 早い!!

iTerm2

iterm.gif

Alacritty

alacritty.gif

*右(l)キー押しっぱなしにしています
*両方とも実際もっと早いです、gifにしてるからかな、差だけわかれば。
*設定は同じです
キーボード.png

rust install

curl https://sh.rustup.rs -sSf | sh

選択肢がでた、とりあえずEnter

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation

完了したっぽい。

This path will then be added to your PATH environment variable by modifying the
profile files located at:

  /Users/xxx/.profile
  /Users/xxx/.zprofile

とでていて2つとも

export PATH="$HOME/.cargo/bin:$PATH"

と書かれていた。
個人的には.zshrcで完結させたいため写す。
他は消す。

.zshrc

# Rust # Alacritty
export PATH="$HOME/.cargo/bin:$PATH"

Alacritty install

git clone https://github.com/jwilm/alacritty.git
cd alacritty
# build
make app
cp-r target/release/osx/Alacritty.app /Applications/

install 完了

alacritty設定file

$XDG_CONFIG_HOME/alacritty/alacritty.yml

$XDG_CONFIG_HOME/alacritty.yml

$HOME/.config/alacritty/alacritty.yml

$HOME/.alacritty.yml

alacritty起動時にどこかに作られている
.config/alacritty/alacritty.ymlにあった。

日本語入力できるようになってる(2018/10/31)
ただ入力中に表示されないのでまだ完璧ではない

なんか右移動だけ明らかに早くなったw
上下左は体感変わらなかった。

カスタマイズ

~/.config/alacritty/alacritty.yml編集

font

font:
  # Normal (roman) font face
  normal:
    # family: Menlo
    family: Monaco
    # The `style` can be specified to pick a specific face.
    #style: Regular

  # Italic font face
  bold:
    # family: Menlo
    family: Monaco
    # The `style` can be specified to pick a specific face.
    #style: Bold

  # Italic font face
  italic:
    # family: Menlo
    family: Monaco
    # The `style` can be specified to pick a specific face.
    #style: Italic

theme

Color schemes · jwilm/alacritty Wiki · GitHub
copyして置き換え

size

window:
  # Window dimensions (changes require restart)
  #
  # Specified in number of columns/lines, not pixels.
  # If both are `0`, this setting is ignored.
  dimensions:
    columns: 200
    lines: 48

opacity

background_opacity: 0.7

# vimは透過されないのでしたければVIMRCに下記追記
# colorscheme xxx より後に書くこと

highlight Normal ctermbg=NONE guibg=NONE
highlight NonText ctermbg=NONE guibg=NONE
highlight SpecialKey ctermbg=NONE guibg=NONE
highlight EndOfBuffer ctermbg=NONE guibg=NONE # 個人的にここはNONEだと目立つのでグレーにしときたい

vim画面でscrollさせたくない

faux_multiplier: 0

デュアルディスプレイの際に、起動するときポインタが当たってるディスプレイでしっかりと表示されているが、別ディスプレイに移動させるとfontの大きさが調整されてしまう。設定でなんとかできるのであれば教えてください。

またAlacrittyの今後に注目します。

追記

限界突破設定してなかったのでさらに早くなりました。満足。easymotion使わなくなりそう、、

defaults write -g InitialKeyRepeat -int 12 # normal minimum is 15 (225 ms)
defaults write -g KeyRepeat -int 1 # normal minimum is 2 (30 ms)

.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重症患者

$
0
0

【Vim重症患者に朗報】WebサイトのTextAreaの内容をターミナル上のVimで編集する方法

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を編集できるということ。

早速試してみた。

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を押すと色々候補が出て幸せになれます。
色々使ってみて、ぜひクールなターミナルライフを送ってください!

Viewing all 5727 articles
Browse latest View live


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