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

MacとWinそれぞれでgit関連の編集をvim→sublimeに変更する

$
0
0

自分はsublimeが好きなので(というか他の用途と合わせて1つのエディタに集約したい&sublime内のタブでターミナルを起動させられるようにしてるので),コミットメッセージ修正(git commit --amend)などでもvimではなくsublimeに出来るように以下のように設定しました。

■Macのやり方

※ターミナルから「subl」でsublime text3を起動させられるようになっている前提
(そのやり方はこことか見るとできます)

下記を実行

git config --global core.editor "subl -n -w"

■Winのやり方

※sublimeのPathはそれぞれどこにインストールしているか確認して修正してください。
自分の場合は下記にインストールされていました。

下記を実行

git config --global core.editor "'C:\Program Files\Sublime Text 3/sublime_text.exe' -w"

試しにgit logが存在する状態で「git commit --amend」と実行したときにvimではなくsublimeが起動されればOK。ふつーに編集&保存で適用される。


Vimエディタで開いているファイルの文字列検索、一括置換を行う方法

$
0
0

vimエディタで、検索、一括置換を行う方法。

【 ファイルを開いている場合 】

:%s/(検索文字列)/(置換後の文字列)/g

#自分用備忘録

Vimエディタで複数ファイルの文字列を一括置換する方法

$
0
0

1. 置換対象のファイルを引数に設定

:args **/*.csv

※ ** は、カレントディレクトリを指す。

【 ファイルを追加したい場合 】
:argaddで、引数にファイルを追加することが可能。

:argadd ./*.html

2. 引数に登録されているファイルを確認する

引数無しで、:argsを呼び出すと、登録されているファイルが確認できる。

:args

3. それらのファイルを対象に置換処理を行う

:argdoコマンドの後に、実行したいコマンドを引数として渡す。

上記コマンドで変更された内容を保存したい場合は、|updateを追加する。

:argdo %s/(変換前)/(返還後)/g | update

上記コマンドを実行すると、対象ファイルの文字列を一括置換します。

最後に

自分用の備忘録として、Qiitaに書き残しておく。
他に良い方法があれば、教えて頂けますと幸いです。

Bash On Ubntsuでneovimをインストール。そしてpython3の設定

$
0
0

neovimのインストール

$ sudo apt-get install software-properties-common

$ sudo add-apt-repository ppa:neovim-ppa/unstable

$ sudo apt-get update

$ sudo apt-get install neovim

python3サポートの設定

$ sudo apt-get install python3-dev python3-pip

$ sudo pip3 install neovim

neovimを起動して

:echo has('python3')

が1となればOK

Ubuntu 16.04にNeoVim を導入するを参考にさせて頂きました。

Vimエディタでファイルを編集した後に生成される〇〇〇.txt~(チルダ)ファイルの正体

$
0
0

はじめに

Vimエディタを使って、ファイルを編集するのは凄い便利なのですが、
ファイルを編集して保存すると、(編集したファイル名).xxx~のようなファイルが新しく生成されている。
一体このファイルは、どのような意味を持って生成されたファイルなのだろうか?

Windows10で、コマンドプロンプトからVimを使用しているが、
dirコマンドを叩いた際に、~(チルダ)ファイルが邪魔で、イライラするので、
なんとかならないだろうかと調べてみた自分用のメモをQiitaにまとめてみた。

そもそも~(チルダ)ファイルって何のためにあるの?

ファイル名に、「~(チルダ)」が付いたファイルはバックアップ用のファイルです。
ファイルを保存時(:w)に、変更前のファイルを元に生成されます。

万が一、ファイルの編集に失敗しても、このバックアップファイルを使用して、
一つ前の世代までのファイルの状態に戻すことができます。

知らなかったw

~(チルダ)ファイルがそんな意味を持ってたなんて、、、
今までただ邪魔なファイルが生成されたと思っていた自分を恥じる。

簡単な例

$ vim sample.txt

で、Vimエディタを立ち上げ、ファイルを編集し、
:wで閉じ、dirコマンドを叩くと、、

sample.txt
sample.txt~

チルダファイルが生成されていることが確認できる。

ここで、変更したファイルに誤りがあり、
変更前のファイルに戻したいとなれば、

(コマンドプロンプトの場合)

$ move sample.txt~ sample.txt

変更後のファイルに上書きしてやるだけで、元のファイルに元通りとなる。

~(チルダ)ファイルを生成しないように設定する方法

ちなみに、このバックアップファイルがいらない場合は、
.vimrcに、下記行を追加してやればいい。

"バックアップファイルを生成しないsetnobackup

終わりに

最初は難しいと感じるVimも少しづつ、触っているうちに楽しくなってきた。
自分なりの使い方、効率よくプログラミングするためにも環境には環境にはこだわるべきだと思いました。

以上、最後までお読みいただき、ありがとうございます。

Bash on Ubuntu on WindowsからhtmlファイルをWindowsのブラウザで開く

$
0
0

素人の備忘録。
ガチの素人が試行錯誤しただけなので変なところだらけだと思います。

動機

VimでMarkdownのプレビューにPrevimを使っている。
普通なら、:PrevimOpenで編集中のMarkdownのプレビューがブラウザで開く。
Bash on Ubuntu on WindowsでもVimを使えるようにしたが、Previmがうまくいかない。

前提

wsl-terminalを使用しているので、cbwinが使える。
参考:
Bash on Ubuntu on Windows + オールインワンmintty
Bash on Ubuntu on Windowsからcmd / startを使う

wstartを使えば、UbuntuからWindowsのhtmlファイルをWindowsのブラウザで開くことはできる。

#cd /mnt/c/Users/user/Documents
# wstart test.html

ところが、Ubuntuの$HOME以下にあるhtmlファイルをWindowsのブラウザで開くことができない。

#cd ~/Documents
# wstart test.html

The system cannot find the file test.html

Previmはプレビュー用のhtmlファイルを作成し、g:previm_open_cmdで指定したコマンドで開いているらしい。
wstartを指定すればいいかと安易に考えていたが、上記のとおり開くことができない。

解決策

試行錯誤してみたところ、windowsのフルパスをwstartすれば、Windowsのブラウザで開けることがわかった。

# wstart C:/Users/user/AppData/Local/lxss/home/user/Documents/test.html

つまり、引数のファイルについてWindowsのフルパスを取得しwstartするシェルスクリプトを作り、それをg:previm_open_cmdに指定すればいいはず。
ということで~/mytoolsに以下のシェルスクリプトを作成。
参考:bash で ファイルの絶対パスを得る

~/mytool/starthtmlinwin.sh
#!/bin/bashwindir='C:/Users/user/AppData/Local/lxss'BoWpath=$(readlink -f $1)
wstart $windir$BoWpath

作成したシェルスクリプトに実行権限を与える。
参考:○○.shを./○○.shで実行できるようにする

# sudo chmod +x starthtmlinwin.sh 

~/mytoolsにパスを通す。

.zprofile
exportPATH=$PATH:$HOME/mytool

g:previm_open_cmdを設定(ついでにリアルタイムプレビューも設定)。

.vimrc
" htmlを開くコマンドを指定letg:previm_open_cmd="starthtmlinwin.sh"" リアルタイムプレビュー有効letg:previm_enable_realtime=1

無事:PrevimOpenでプレビューがWindowsのブラウザで開いた。
リアルタイムプレビューもうまく動いているようだ。

どうせ素人なのでWindowsのVimを使えばいいのではないかという気がしなくもないが…

Vim で全角スペースの強調

$
0
0

vim で全角スペースを強調する設定をしたので、メモ。

以下のように highlightを利用し、全角スペースのハイライトを試みた。
しかし、環境によっては colorshemeによってハイライトが上書きされてしまう。
(colorschemeが vim 実行中に動的に呼び出され続けるのだろうか?)
colorschemeを使わなければ解決するのだが、colorschemeは使いたい。

.vimrc(失敗例1)
" 全角スペースの背景を白に変更
highlight FullWidthSpace ctermbg=white
match FullWidthSpace / / " ← 見えないけど全角スペースがあります
" カラースキームの設定
colorscheme desert 

そこで、autocmdを使う。
そうすると colorshemeの呼び出し時に
ハイライトの状態を上書きすることができる。

.vimrc
" 全角スペースの背景を白に変更
autocmd Colorscheme * highlight FullWidthSpace ctermbg=white
autocmd VimEnter * match FullWidthSpace / /
" カラースキームの設定
colorscheme desert 

これで全角スペースが強調されるようになった。

ちなみに、以下のように colorscheme ~autocmd Colorscheme * ~
の順番を入れ替えると、vim 起動時にエラーが出る。

.vimrc(失敗例2)
" カラースキームの設定
colorscheme desert 
" 全角スペースの背景を白に変更
autocmd Colorscheme * highlight FullWidthSpace ctermbg=white
autocmd VimEnter * match FullWidthSpace / /

どうやら .vimrc の内容は上から順番に実行されるようだ。

vimコマンド 備忘録

$
0
0

はじめに

vimのコマンドをなかなか覚えられないので、メモとしてこちらに残していきたいと思います。
新しい知識が入り次第更新する予定です。

テキスト入力モードへ移行する

例えば、.sshconfigを編集したいときは、

$ vi ~/.ssh/config

ちなみにファイルを閲覧だけしたいときは、vilessに変えたら見れます。

挿入モード(INSERT)

iを押す。

挿入モードを終了する

escを押す。

内容を保存する

:wを押す。

終了する

:qを押す。

保存せずに終了する

:q!を押す。

参考

よく使う Vim のコマンドまとめ


Vim

$
0
0

ショートカット

ショートカット効果
:set columns= xxx横幅
:set lines= xxx縦幅
x削除
:Tutorialチュートリアル
:q!保存せず終了

参照サイト

用語解説

ビジュアルモード

ViとVimの大きな違いの1つに、Vimには「ビジュアルモード」と呼ぶテキスト選択機能があるということが挙げられる。ビジュアルモードではテキストを文字単位、行単位、矩形単位で選択し、選択したテキストに対してVimのコマンドを適用できる。

mac vim 8.0 バージョンアップ(neovim削除)

$
0
0

Mac OS X 10.9
vim 7.3 ー> vim 8.0 (2016 Sep 12, compiled Aug 15 2017 01:22:07)
Included patches: 1-893

1.brew install vim --with-lua

$ brew install vim --with-lua

neovimを削除して、vimに戻る。
誰か vim と neovim の具体的な比較表を作ってくれないかな。

neovimを使い続けたいけど、vimとの"大きな"違いがわからない。
neovimに問題があったわけではないが、互換性や安定性が気になる。
本当は設定ファイルもneovimと同じく .config以下にしたいし。

以上

Cloud9では、gccとvimも使おう。

$
0
0

はじめに

すぐに始められるWeb IDEとして有名な、cloud9無償版のいいところを3行で。

  • ブラウザ上でUbuntu(14.04)環境が無料で使えるよ。
  • ブラウザのエディタを用いて、プログラム開発ができるよ。
  • 親会社はAmazon。Amazon EC2などのクラウドへの移行が楽かも。

これらは既に使っている人たちには当然のことなんだろうけど、
何年か前の出たての頃のcloud9をweb上の統合開発環境的な認識で使ってみた僕は、
cloud9のエディタに特に興味を持たなかったこともあり、
cloud9のUbuntu的な側面もまったくかじる気にもならなかった。

最近、IoT開発にcloud9のgccを活用して、的な記事を見て、改めてcloud9をかじってみたところ、
少なくとも、なじみの少ないプログラム言語をお試しするにはいいな、と思った。
本エントリーでは、他のエントリーであまり言及がないように思う、
cloud9のUbuntu14.04の使い勝手をレポートしておきたい。

キャッチコピー的には、「Cloud9を、web開発だけでなく、gcc/vim環境としても使おうよ。」ということ。
実際、ブラウザ上のCloud9のvimは、普通の使用感だった。導入のお気楽感からするとこれは地味にすごいこと。
ブラウザ上のUbuntuとして、cloud9を数時間お試したした後の画面はこんな感じ。
(※元の画面の解像度高めなので詳細はクリックして見てみてください)

スクリーンショット 2017-08-20 20.17.52.png

vimが良い存在感を出していて、cloud9の方のエディタは補佐役といった感じだね(左がnim0.17,右がswift-4-dev)。小さめのテキストファイル相手の場合、動作にもっさり感なし。

cloud9ワークスペースの作成と、gccの試用

①C++のワークスペースを作成

cloud9サイトにアクセス・ログインして、「Create a new workspace」すると、
以下の画面が登場する (※cloud9にはgithubアカウント等でサインインできる):

スクリーンショット 2017-08-20 18.58.24.png

「Choose a template」のところで真っ先に目に入るのは、 HTML/node/js/PHP/django/rails などが使えるテンプレートだけど、下の方には「C++」のテンプレートもある。ruby やpythonの実行はC/C++に依存しているから、cloud9のC/C++のコードが当然に走る。cloud9のC++テンプレートがいいなと思ったのは、普通のununtu (現時点では14.04)を速攻使い始められるところ。

②Hello World!

C++テンプレートのワークスペースに入った直後はこんな感じ。
スクリーンショット 2017-08-20 19.22.52.png

上の方にhello worldの行い方が書かれた文書が開かれていて、下の方にはコンソール画面がある。文書に従いながら、makeすることで 、C/C++でhello worldできる。
コマンドとしては以下のような感じ。

~/workspace$ ls
Makefile  README.md  hello-c-world.c  hello-cpp-world.cc

~/workspace $ make
g++ -std=c++11 hello-cpp-world.cc -o hello-cpp-world
gcc hello-c-world.c -o hello-c-world

~/workspace $ ls
Makefile  README.md  hello-c-world*  hello-c-world.c  hello-cpp-world*  hello-cpp-world.cc

~/workspace $ ./hello-c-world 
Hello World!

③提供環境

提供されている環境を見ておこう。

$ df -h
Filesystem                Size  Used Avail Use% Mounted on
none                      2.2G  4.0M  2.0G   1% /
tmpfs                      26G     0   26G   0% /dev
tmpfs                      26G     0   26G   0% /sys/fs/cgroup
/dev/mapper/volg1-lvdata  1.2T  588G  594G  50% /nix
shm                        64M     0   64M   0% /dev/shm
tmpfs                      26G     0   26G   0% /sys/firmware

kmry1:~/workspace $ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.3' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 

kmry1:~/workspace $ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164)[x86_64-linux]

kmry1:~/workspace $ python3
Python 3.4.3 (default, Nov 172016, 01:08:31)[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license"for more information.
>>> 

ユーザーが使えるディスクスペースは、一番上の

none 2.2G 4.0M 2.0G 1% /

のところだ。gccのバージョンは4.8.4、C++11のコードがコンパイルできる。バージョンが若干低いが、ruby2/python3も使える。

お試し環境の構築例 〜nim0.17とswift4-devの導入

以上でだいたいの雰囲気は分かる気がするんだけど、2GBのディスクスペースで何ができるのか、イメージをつかんでもらうためにも、自分の環境構築記録をレポートしておこう。

① 環境構築の狙い

ただいま、いわゆる植物工場向けに音声サポートありのIoTシステムをスクラッチから作るための調査中(三カ年プロジェクト)。
想定しているシステム構成は環境制御端末(Raspberry pi) + 操作端末(スマフォ/音声端末 + serversideというもの。
ちょっと意識しているのは、最近登場したAlexa SDKの導入。(Raspberry pi=音声端末) + (serverside=cloud9)という開発環境ができそうだ。

※以下は、AmazonのAlexaチームのSDK発表プレゼンをキャプチャして引用(出典 AmazonがあらゆるサードパーティデバイスにAlexa機能を持たせるべくSDKを無料オープンソースで公開)。真ん中へんのサーバーのところはAmazon EC2が基本形となるだろうから、cloud9環境で開発を進めることもやりやすいと思っている。

スクリーンショット 2017-08-20 12.06.59.png

次年度に、環境制御端末(Raspberry pi)部分を作り、次々年度に全体を完成させるスケジュール感。
Raspberry piのところは、ネイティブコードとスクリプト言語(たぶんpython)という構成を予定。

※データベースは、Raspberry pi向けのredisをカスタマイズする予定(専用モジュールをCで作成)。ネイティブコードのところの生産性を高めたいと思っていて、C/C++と親和性が高いコンパイル言語のnim/swiftを活用できないかと思っている。
※まずは、redisのカスタムモジュールの作成から取り組みたい。

ということで、gcc依存のコンパイル言語nim0.17、clang依存のコンパイル言語swift4-devをcloud9に導入してみた。gccがあれば、こうした新言語のお試しもどんどん行える。
(インストールではまったときなどは、ブラウザの窓を閉じるだけで、自分のPCのローカル環境への影響なし)

②gccでのコンパイル

nimの導入

真っ先にやったことは、コンパイル言語nimのソースコードをgithubから取得して、gccでコンパイル。gitは最初から使える。

実行したコマンドは以下のとおり

wget https://nim-lang.org/download/nim-0.17.0.tar.xz
tar -Jxvf nim-0.17.0.tar.xz
cd nim-0.17.0
sh build.sh
bin/nim c koch
./koch tools

スクリーンショット 2017-08-20 11.17.12.png

当然ながらコンパイルにそこそこ時間がかかるんだけれど、一回だけだし、他の調べものとかをしてのんびりしているうちにコンパイル終了。

swift4-devの導入

swiftの方は、すでにCloud9でお試し記を書いてくださっていた方がいたので、そちらにならって導入。
Cloud9でswiftしたい方は、こちらを参考とするのが良い:
Cloud9で始めるServer Side Swift (Vapor)

参考先にあるように、 github上にCloud9導入用のスクリプトを一式あげておくのはスマートなやり方だね。

僕もfolkさせてもらい、swidt3のところをswift4-devに書き換えてインストールをトライ。ところがswift4-devについてはなぜか、Cloud9上でwgetできない。しょうがないので、ブラウザから直接にswift4-devのインストールファイルをアップロード(左下部分):
スクリーンショット 2017-08-20 14.03.15.png

アップロードはかなりちんたらしたスピードだったけれど、100MBを超えるファイルをアップロードさせてくれる
cloud9無償版をは太っ腹(githubの場合、アップロードは25MBという制限がある)。

アップル製言語swiftはclang依存なので、swiftインストール後はclangも実行できるようになる。

③vimのカスタマイズ

マイナー言語であるnimと、主にiOS向け言語であるswiftは、cloud9のエディタではシンタックスハイライトが効かない:
スクリーンショット 2017-08-20 11.51.35.png

だけれど、僕らにはvimがある。どんなマイナー言語であろうと、vimが使えればたいていはシンタックスハイライトやコード補完ができる。

nimやswift4-dev使う人は変人か根性ある人で委細はなんとかするだろうから、参考リンクと導入結果だけ載せておく。当然、rustやD言語だって、同じようにvim使えるね。

導入したnim用vimプラグイン
https://github.com/zah/nim.vim

導入直後(色はついたが配色がダメ):
スクリーンショット 2017-08-20 15.29.36.png

colorscheme lucario を導入後 かなり視認性がアップ:
スクリーンショット 2017-08-20 15.57.21.png

... swift用のシンタックスハイライトも導入したけけれど、こちらは若干微妙な感じ。swift4を使うようになったら、再調整が必要だろう。

さらにいろいろしようと思い、neovimも入れてみようかと思ったんだけれど、無償版だけに空き容量がだいぶ減ってきていた。
このままviをメインに使っていくこととした(別途 nimとneovimだけの環境も cloud9上で作ってみてはいる)。

$ df -h
Filesystem                Size  Used Avail Use% Mounted on
none                      2.2G  1.3G  766M  63% /

ということで、冒頭の環境に落ち着いた次第。まずは、redisのカスタマイズモジュールをnimで作成して見る予定。

redisのカスタムモジュール・・・neo4j互換のクエリが使えるグラフデータベースをredis上に構築するモジュールなど、気になる!
http://redismodules.com/modules/redis-graph/

まとめ

無償版のUbuntu環境のユーザー向けディスク容量は2GBしかないんだけど、その環境をいくつも作ることができる(環境のコピーも容易)。
チームでの開発実務に使う時には有償版となんだけど、無償版はプログラミングの学習や言語のお試しに良さそうだ。
ふだん、web界隈の業界にいない人にもおすすめ。

いずれ、 cloud9上で、音声記録をターゲットとしたredisベースのグラフデータベースを走らせてみた、とかのエントリーを書いてみたいかも。

Vimで読込専用と言われた時

Spacemacs Emacs 25.2(日本語入力) on Ubuntu 16.04 on VMware 8.5 on macOS Sierra

$
0
0

Screen Shot 2017-09-02 at 17.12.14.png

VMWare Fusionで動かすUbuntu 16.04上のEmacsでもmacOS Sierra上のEmacsと同じように使いたいと思い至った。特にVMWareを使う場合はなどの修飾キーが奪われたりとなにかと面倒なためメモして共有する。

Spacemacs (:octocat::star: 12664 - 2017/09/02) とは何かというと、各人が長い年月をかけてWebに点在する設定を書きためた秘伝のソースのようなものを書かずとも、Emacsを便利につかえるようにした設定&パッケージ集。Vimと同様の操作方法であるEvilを使うのかEmacsの操作方法(Holy?)を使うかを最初に問われる。そのためVimを使う人にもおすすめできる。

Prerequisite

  • macOS Sierra 10.12.6
  • VMware Fusion 8.5 Pro
    ProじゃなくてもOK。現時点ではバージョン10が発表されているため今購入すると無料アップデートの対象になる。
  • Ubuntu 16.04.3 LTS
    本家版。日本語版では試していない。リンクはこちら Ubuntu 16.04 LTS 日本語 Remix

Setup Ubuntu (with VMWare Tools)

... UbuntuのTerminalが操作可能になるまでは省略する ...

まずはパッケージを最新の状態へ

sudo apt update
sudo apt upgrade

ウィンドウのリサイズ、macOSとUbuntu間でコピペやファイル移動などをするためVMWare Toolsをインストールしておく。
1. VMWareのmacOS側ステータスバーからVirtual Machine> Install VMWare Tools
2. ダイアログが表示されるのでInstallを押す。
3. 表示されるフォルダ内のVMWareTools-10.1.6-xxxxxxx.tar.gzをダブルクリックして解凍。
4. 解凍されたvmware-tools-distribフォルダをDesktopに移動させる。
5. Terminalで以下のとおり操作する。

cd ~/Desktop/vmware-tools-distrib/
sudo ./vmware-install.pl

最初に "Do you still want to proceed with this installation? [no]"
(インストールを続けますか?)と聞かれるので yes を入力して enter
その後はすべてデフォルト値で enter してもOK

最後にUbuntuを再起動。:repeat:

reboot

Key Settings for VMWare

UbuntuのLauncherにデフォルトで当てられているキーを無効にしてEmacsで使えるようにする。
Emacs内で⌘-SPACEで入力を切り替えたり、⌘-jなどの操作に当てたい。

sudo apt install unity-tweak-tool
unity-tweak-tool

Unity Tweak Toolウィンドウ表示されるので、右上のアイコンAdditionalを開き<Super>()をダブルクリックしてキーボードのdeleteキーを押してDisabledにする。
<Alt>()も同様に無効化する。

次にVMWareのmacOS側ステータスバーからVMWare Fusion> Preferences...> Keyboard & Mouseと進む。
Key MappingsタブのControl - Option - Deleteにチェックが付いていたらはずしておく(EmacsでAltキーを2回押さないと反応しない場合があったため)。
そしてMac Host ShortcutsタブのEnable Mac OS Host Keyboard Shortcutsにチェックが付いていたらはずす。

Setup Emacs & Spacemacs

Emacs 25.2をインストールしSpacemacsの設定と日本語入力設定をする。

sudo apt install emacsとするとEmacs 24.5が入ってしまうため、レポジトリを追加してEmacs 25.2をインストール。

sudo add-apt-repository ppa:kelleyk/emacs
# 途中で enter の入力を求められる
sudo apt update
sudo apt install emacs25

Spacemacs(Emacsの設定)をインストール。

sudo apt install git
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d

Emacsを通常起動する。

emacs

Spacemacsから初回にいくつか質問されるので答えていく。

まずは操作方法について。ここではvimではなくemacsを選ぶ。:arrow_up_down:矢印で選択を変えられる。

What is your preferred editing style?
-> On the planet Emacs in the Holy control tower (emacs)
   Among the stars abord the Evil flagship (vim)

標準か最小の構成かどうか。標準が推奨されているので標準にしておく。

What distribution of spacemacs would you like to start with?
-> The standard distribution, recommended (spacemacs)
   A minimalist distribution that you build on (spacemacs-base)

強力なナビゲーションツールのhelmもしくはivyを選ぶ。自作のhelm拡張 helm-swoop(:octocat::star: 428 - 2017/09/02)も標準でSpacemacsへ組み込まれているためhelm推し。ivyはまだ試したことがない。

What type of completion framework do you want?
-> A heavy one but full-featured (helm)
   A lighter one but still very powerful (ivy)
   None (not recommended)

パッケージ群のインストールがしばらく続き、問題なく完了すると再びSpacemacsのロゴ画面が表示される。

ホームフォルダに.spacemacsという設定ファイルが構築される。今後のためにこれを.spacemacs.d/init.elに置き換えておく。
いったんEmacsを閉じてから移動。

mkdir ~/.spacemacs.d
mv ~/.spacemacs ~/.spacemacs.d/init.el

もし~/.spacemacs~/.spacemacs.d/init.elが同時に存在した場合、優先されるのは前者。

日本語入力設定

... Ubuntu側の日本語入力設定は省略(fcixt-mozcを使用) ...

Emacs用にmozcを使う。emacs-mozc-binのみを指定する(emacs-mozcとするとemacs 24.5が入ってしまうため)。

sudo apt install emacs-mozc-bin

設定ファイル~/.spacemacs.d/init.elを開く。

emacs ~/.spacemacs.d/init.el

57行目あたりのdotspacemacs-additional-packagesにmozcのパッケージをいくつか指定する。

.spacemacs.d/init.el
dotspacemacs-additional-packages'(mozcmozc-immozc-popup)

310行目あたりにdotspacemacs/user-configがあれば以下のとおりに変更する。なければ関数ごと追加する。

(defundotspacemacs/user-config()"Configuration function for user code...";; mozc(when(require'mozcnilt)(setqdefault-input-method"japanese-mozc")(global-set-key(kbd"s-j")'toggle-input-method);; [⌘ + j](defvarmozc-candidate-style);; avoid compile error(if(require'mozc-popupnilt)(setqmozc-candidate-style'popup)(setqmozc-candidate-style'echo-area))))

保存しらたEmacsを再起動する。:repeat:

ロゴ画面で以下の通りmozcがインストールされたことがわかる。

Found 3 new package(s) to install...
--> refreshing package archive: gnu... [3/3]
--> installing package: mozc-popup@dotfile... [3/3]

(global-set-key (kbd "s-j") 'toggle-input-method)の部分で⌘ + jで言語を切り替えるようにしている。
ここを⌘ + SPACEにしたい場合は
1. (global-set-key (kbd "s-SPC") 'toggle-input-method)に変更。
2. UbuntuのSystem Settings> Text Entry> Switch to next source usingSuper+Spaceとなっていないことを確認。

Ubuntuの言語設定(環境変数$LANG)が日本のときは2の操作が不要(Emacsが長年におよんで拒んでいるバグ修正に起因するらしい)。

ここまでの設定ファイルはGistにおいておく。
https://gist.github.com/ShingoFukuyama/ab8b201e6f150b4954f8d21508c58782

おまけ

フォント指定

等幅や一定比率のフォントを指定しておくと可読性が増すのでおすすめ。

候補
* :link:Source Han Code JP
* :link:Ricty Diminished

Source Han Code JPの場合ならリンク先のGitHubからzipをダウンロードして解凍、OTFフォルダのSourceHanCodeJP-Regular.oftあたりをダブルクリックしてでるウィンドウの右上のInstallで導入。

~/.spacemacs.d/init.elの140行目あたりにあるdotspacemacs-default-font"Source Code Pro"部分を"Source Han Code JP R"としてEmacsを再起動すると反映される。

dein.vim の導入してjedi-vimを入れる

$
0
0

今まで素の Vim だったのでようやくプラグイン管理を導入した時のメモ

dein.vim

https://github.com/Shougo/dein.vim
NeoBundle はバグフィックスのみの対応らしいので dein.vim を使う。

インストール

$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ sh ./installer.sh {インストールディレクトリ}

installer.sh を実行すると以下のコードが表示されるので vimrc 追記すればOK

Please add the following settings for dein to the top of your vimrc (Vim) or init.vim (NeoVim) file:


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

" Required:
set runtimepath+=/tmp/deintest//repos/github.com/Shougo/dein.vim

" Required:
if dein#load_state('/tmp/deintest/')
  call dein#begin('/tmp/deintest/')

  " Let dein manage dein
  " Required:
  call dein#add('/tmp/deintest//repos/github.com/Shougo/dein.vim')

  " Add or remove your plugins here:
  call dein#add('Shougo/neosnippet.vim')
  call dein#add('Shougo/neosnippet-snippets')

  " You can specify revision/branch/tag.
  call dein#add('Shougo/vimshell', { 'rev': '3787e5' })

  " Required:
  call dein#end()
  call dein#save_state()
endif

" Required:
filetype plugin indent on
syntax enable

" If you want to install not installed plugins on startup.
"if dein#check_install()
"  call dein#install()
"endif

"End dein Scripts-------------------------


Done.
Complete setup dein!

あとは " Add or remove your plugins here:のコメント下の様に
call dein#add('プラグインのGitHubリポジトリ')
とプラグインを書いていけばOKみたいだが、プラグインをtomlファイルで管理で出来るみたいなのでvimrcと別でプラグインを管理するファイルを作成し、読み込むことにする。

プラグインリストの作成

今回は dein.vim のインストールディレクトリを ~/.vim/dein/にしたので、この配下にuserconfigを作り、その下にtomlを書いていく。

$ cd ~/.vim/dein
$ mkdir userconfig

pulugin.toml

起動時に読み込むプラグインを指定する。

~/.vim/dein/userconfig/pulugin.toml
[[plugins]]repo='Shougo/dein.vim'[[plugins]]setexpandtabrepo='Shougo/vimproc.vim'

pulugin_lazy.toml

特定の条件でプラグインを読み込む。
例えばpythonを書く時だけpythonのプラグインを読み込むなどが出来る

~/.vim/dein/userconfig/pulugin_lazy.toml
[[plugins]]repo='Shougo/unite.vim'# unite.vim を読み込んだら一緒に読み込む[[plugins]]repo='Shougo/neomru.vim'on_source=['unite.vim'][[plugins]]repo="davidhalter/jedi-vim"on_ft=['python'][[plugins]]repo='fatih/vim-go'on_ft=['go']

条件指定などの詳細は vim を起動して:h dein-optionsで確認できる。

vimrc の修正

プラグインをtomlから読み込めるように vimrc を修正。ついでに dein.vim が無ければ自動的にインストール出来るよにする。

vimrc
"dein Scripts-----------------------------if&compatiblesetnocompatible" Be iMprovedendiflet s:dein_path = expand('~/.vim/dein')let s:dein_repo_path = s:dein_path . '/repos/github.com/Shougo/dein.vim'" dein.vim がなければ github からcloneif&runtimepath!~# '/dein.vim'if!isdirectory(s:dein_repo_path)
    execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_path
  endif
  execute 'set runtimepath^=' . fnamemodify(s:dein_repo_path,':p')endifif dein#load_state(s:dein_path)call dein#begin(s:dein_path)letg:config_dir  = expand('~/.vim/userconfig')let s:toml        =g:config_dir . '/plugins.toml'let s:lazy_toml   =g:config_dir . '/plugins_lazy.toml'  " TOML 読み込みcall dein#load_toml(s:toml,      {'lazy': 0})call dein#load_toml(s:lazy_toml, {'lazy': 1})call dein#end()call dein#save_state()endif" Required:filetype plugin indent onsyntax enable

" インストールされていないプラグインがあればインストールする" If you want to install not installed plugins on startup.if dein#check_install()call dein#install()endif"End dein Scripts-------------------------

インストールリストの確認

vim 上でインストールしされているプラグインを確認してみる。
test.py を開き、

test.py
# -*- coding: utf-8 -*-print('hello')

:Unite deinを実行すると

  Shougo/dein.vim
# cespare/vim-toml
  Shougo/vimproc.vim
# fatih/vim-go
  Shougo/neomru.vim
  Shougo/unite.vim
  davidhalter/jedi-vim

このようにリストが表示される
pulugin_lazy.toml で特定の条件で指定しているプラグインはコメントになる。 pythonファイルを開いているので、jedi-vimが起動され、vim-govim-tomlはコメントになっている。

jedi-vim

:h dediなどで以下の様なヘルプ画面が表示されればインストールされていることが確認できる。

jedi-vim.txt - For Vim version 7.3 - Last change: 2014/07/29
       __   _______  _______   __       ____    ____  __  .___  ___.
      |  | |   ____||       \ |  |      \   \  /   / |  | |   \/   |
      |  | |  |__   |  .--.  ||  |  _____\   \/   /  |  | |  \  /  |
.--.  |  | |   __|  |  |  |  ||  | |______\      /   |  | |  |\/|  |
|  `--'  | |  |____ |  '--'  ||  |         \    /    |  | |  |  |  |
 \______/  |_______||_______/ |__|          \__/     |__| |__|  |__|

          jedi-vim - awesome Python autocompletion with Vim

==============================================================================
Contents                                jedi-vim-contents

1. Introduction                         jedi-vim-introduction
2. Installation                         jedi-vim-installation
    2.0. Requirements                   jedi-vim-installation-requirements
    2.1. Manually                       jedi-vim-installation-manually
    2.2. Using Pathogen                 jedi-vim-installation-pathogen
    2.3. Using Vundle                   jedi-vim-installation-vundle
    2.4. Installing from Repositories   jedi-vim-installation-repos
3. Supported Python features            jedi-vim-support
4. Usage                                jedi-vim-usage
5. Mappings                             jedi-vim-keybindings
    5.1. Start completion               g:jedi#completions_command
    5.2. Go to definition               g:jedi#goto_command
    5.3. Go to assignment               g:jedi#goto_assignments_command
    5.4  Go to definition (deprecated)  g:jedi#goto_definitions_command
    5.5. Show documentation             g:jedi#documentation_command

※僕の場合はヘルプ画面が表示されなかったので、 helptags で runtimepath を指定して実行した。
ヘルプはdavidhalter/jedi-vim/doc/jedi-vim.txtを参照しているので、doc配下にtagsを置く。
:helptags ~/.vim/dein/repos/github.com/davidhalter/jedi-vim/doc/を実行したら参照出来るようになった。

ハマりどころ

pyenv でバージョンを切り替えていたせいなのか、Vim起動時にjedi-vimがうまくインストールされなかった。
調べたところ、pythonを再コンパイルする必要がある模様
https://rcmdnk.com/blog/2014/12/25/computer-vim/

対処法

## pythonのバージョンを system に戻す
$ pyenv global system
$ pyenv versions
* system (set by /Users/suyong/.pyenv/version)
  3.6.2

## vim の再インストール
$ brew reinstall vim --HEAD

参考サイト

NeoBundle から dein.vim に乗り換えたら爆速だった話
dein.vimにお引越し
【Python環境整備】脱NeoBundle。超便利補完プラグインjedi-vimの環境をdeinで整えて快適になる設定までやる
Vimメモ : jedi-vimでPythonの入力補完
Dein.vimをインストール、使ってみる。
dein.vimでvimのplugin管理
Mac で vim を Python の開発環境にする。

vimのINSERTモードでカーソル上下左右移動できるようにする

$
0
0

「数文字だけ移動したい、でもINSERTモードを抜けるのは面倒!」というとき、INSERTモードでもカーソルの上下左右移動をできるようにする方法です。部分的にEmacsキーバインドを採用するやりかたです。

やりかた

.vimrcに次のキーマップ定義を追加しておきます。

.vimrc
imap <C-p><Up>
imap <C-n><Down>
imap <C-b><Left>
imap <C-f><Right>

以上。


vimで行の中央へ移動する

$
0
0

vimで行の中央へ移動する

初めに

vimのカーソル移動はそのままでも便利である.しかし,横方向への移動が若干めんどくさいところがある.そのため,行の中央へ移動するコマンドがあると便利だと思い調べたが,それに当たるコマンドは見つからなかった.そこで,vimscriptの関数を利用して実装した.

実装

.vimrcに次の行を追加した.

nn gc :call cursor(0,strlen(getline("."))/2)<CR>

解説

ここでは次の3つの関数を用いてcallで呼び出し,gcにマッピングを行っている.
- cursor()
- strlen()
- getline()
これらの関数をそれぞれ説明していく.

cursor()

その名の通り,カーソルを指定した位置へ移動させる.
cursor(行数,先頭からの文字数)のように引数を指定する.
行数,文字数を0にした場合は現在の位置となる.

strlen()

引数で指定した文字数を出力する.

getline()

引数にある行の文字列を取得する.
引数では行数で指定できるが,"."と指定すると現在カーソルがある位置を指定できる.

まとめ

行の中央をカーソルがある行の文字数の半分の位置に移動させるというプログラムである.

実装自体は簡単だが,必要な関数とその使い方を調べるのに時間がかかった.
これらの関数の利用自体は簡単にできるが,情報が少なく導入するハードルが高い.
この記事で関数が手軽に利用されればと思う.

fish shellからVimPlugにインストールできるようにする

$
0
0

最近やたらと環境再構築することがあって、それに伴いVimのプラグインインストールさせられるので、どうせならfish shellから思いついたプラグインを一発でインストールできるようにしちまえと考えた。

こんなふうに

vim-plug "dag/vim-fish"

使用環境

  • Manjaro Linux KDE Edition
  • Vim 8.0
  • Fish shell 2.6.0
  • vim-plug

.vimrcを編集

vim-plugにはtomlでプラグインを記述する機能は(多分)ないので、Plug '〜'の部分を抽出し、fish scriptからでも簡単に編集できるようにする。

~/.vimrc
" Pluginscall plug#begin('~/.vim/plugged')
source ~/.vimrc.plugins
call plug#end()
~/.vimrc.plugins
Plug 'Shougo/vimproc.vim', { 'do': 'make' }
Plug 'itchyny/lightline.vim'
Plug 'tomasr/molokai'
Plug 'rhysd/vim-operator-surround'
Plug 'kana/vim-operator-user'
Plug 'Shougo/deoplete.nvim'
Plug 'Shougo/denite.nvim'
Plug 'terryma/vim-multiple-cursors'
Plug 'dag/vim-fish'

なんか不具合あるかなと思っていたが、起動が気持ち重くなるぐらいで特に大丈夫な様子。

config.fishにinstall用functionを追加

引数なしの場合、そのままプラグインリストを編集するようにしてみた。

config.fish
function vim-plug-install
    grep "Plug '$argv'" ~/.vimrc.plugins > /dev/null; or echo "Plug '$argv'" >> ~/.vimrc.plugins
end

function vim-plug-uninstall
    grep -v -F "Plug '$argv'" ~/.vimrc.plugins | tee  ~/.vimrc.plugins >> /dev/null
end

function vim-plug
    if count $argv > /dev/null
        set flag 0
        for option in $argv
            switch "$option"
                case i install
                    set flag 0
                case un uninstall
                    set flag 1
                case \*
                    set plugs $option $plugs
            end
        end

        for plug in $plugs
            if test $flag -eq 1
                vim-plug-uninstall $plug
            else
                vim-plug-install $plug
            end
        end

        if test $flag -eq 1
            vim +":PlugClean" +:qa
        else
            vim +":PlugInstall" +:qa
        end

    else
        vim ~/.vimrc.plugins
    end
end

これでインストールとアンインストールが一発でできるようになった。具体的には

インストール時
1. .vimrc.pluginsPlug '〜'を追加
2. Vimを起動し:PlugInstallを実行して終了

アンインストール時
1. .vimrc.pluginsから該当のPlug '〜'を削除
2. Vimを起動し:PlugCleanを実行して終了(このときにユーザーの確認入力が必須だが、やろうと思えばyesで回避できるかも?)

という処理を行っている。

ちゃんと動くかはわからない。

vim-plug (in(stall)) "dag/vim-fish" "mhinz/vim-startify"
vim-plug un(install) "dag/vim-fish" "mhinz/vim-startify"

Where in の条件部分を正規表現でうまいことしよう

$
0
0

概要

システムの保守やってるとwhere in のクエリをよく使います。
エクセルの表が添付されて、こいつらを消せとか調査しろみたいな指令が来たとき

ABCD1577
ABCD1618
ABCD1631

みたいなのを

'ABCD1577',
'ABCD1618',
'ABCD1631'

にしたいとか

XXXXABC37540M          R52M
XXXXABC37541M          R53M
XXXXABC37542M          R54M

みたいなの(エクセルから2列コピってくるとtabに挟まれてますね)を

('XXXXABC37540M','R52M'),
('XXXXABC37541M','R53M'),
('XXXXABC37542M','R54M')

にしたいときがあります。
正規表現使ってやってみましょう。

サクラエディタで

だいたいの現場で標準に使われてるサクラエディタでのやり方はこちら。
サクラの正規表現エンジンの所以か、行末を$で指定すると改行まで引っかかってうまくないです。なんでじゃろうな。
苦肉で改行コードを置換前後に入れてたりします。
もうちょっといいやり方があるんでなかろうか…

1項目

  • 置換前
^(.*)\r
  • 置換後
'\1',\r

2項目

  • 置換前
^(.*)\t(.*)\r
  • 置換後
('\1','\2'),\r

Vimで

Vimの正規表現での書き方はこちら。

1項目

:%s/^\(.*\)$/'\1',/g

2項目

:%s/^\(.*\)\t\(.*\)$/('\1','\2'),/g

VeryMagic使った方が良さげですね。

割とよく使うので私はvimrcに書いてキーバインドを割り当てています。
VisualModeで選択して使うので、%は抜いています。

vnoremap <Leader>k :s/^\(.*\)$/'\1',/g<CR>
vnoremap <Leader>K :s/^\(.*\)\t\(.*\)$/('\1','\2'),/g<CR>

置換結果の最後の1行はカンマ削ってね。

vimrc

$
0
0

プラグイン入れていない時の最低限のやつ

vimrc
setnocompatiblesetencoding=utf-8setlistsethiddensetbackspace=indent,eol,startsetautoindentsetsmartindentsettabstop=2setshiftwidth=2setexpandtabfiletypeonfiletype plugin indent onsyntaxonsetnumbersetlistsetbackspace=indent,eol,startsetwildmenusetshowmatch" mapping
imap { {}<LEFT><CR><ESC><S-o>
imap [ []<LEFT>
imap (()<LEFT>
command St  split
command Sv  vsplit

ターミナルとvimの設定(色、フォント)

$
0
0

ターミナル周りの設定

ターミナルをかっこよくすることがモチベに繋がると思い、いろいろやってみました。

ターミナルにSolarized(色)

Solarizedはとても人気の配色です。これにしておけば、コイツ分かってるな感が出ます(?)。

まずはgithubで公開されているデータをダウンロード。ターミナルで以下のコマンドを入力。

$ git clone https://github.com/tomislav/osx-terminal.app-colors-solarized

($はプロンプト)

その後ターミナルの環境設定で左下の+-の横の歯車マークを押すと、以下の画像のようになります。

スクリーンショット 0029-09-07 20.31.49

この赤丸をクリック

スクリーンショット 0029-09-07 20.32.20

両方開きましょう。

するとデフォルトでいろんな色設定が置いてある並びに、「Solarized ~~~」がありますね。

あとは気に入った色をデフォルトにして、色設定は終わりです。

ターミナルのフォント

Ricty Diminishedというプログラミング用のフォントと名高い(?)やつにしましょう。コイツ分かってるな感が出ます(?)。

まずは以下のページの「バージョン」から好きなバージョンをクリックしてダウンロード。

http://www.rs.tus.ac.jp/yyusa/ricty_diminished.html

ファイルを解凍して、ttfファイルをクリックしてインストール。

あとはまたターミナルの環境設定->フォントでRicty Diminishedを選べばok

簡単ですね。

vimの色設定(+NeoBundle +dein)

vimの色もSolarizedにしないとちぐはぐですからね(まあデフォルトでも良さそうだけど…)。

まずはNeoBundleというvimのプラグイン管理ツールをインストール

# 配置先のディレクトリを作成
$ mkdir -p ~/.vim/bundle
# NeoBundleをリポジトリから取得
$ git clone git://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim

(今ではdeinとかいうツールのがおすすめらしい...)

やっぱりdeinに切り替える。

$ mkdir -p ~/.vim/dein/repos/github.com/Shougo/dein.vim
$ git clone https://github.com/Shougo/dein.vim.git \ ~/.vim/dein/repos/github.com/Shougo/dein.vim

~/.vimrcに

"dein
if &compatible
  set nocompatible
endif
set runtimepath+=~/.vim/dein/repos/github.com/Shougo/dein.vim

call dein#begin(expand('~/.vim/dein'))

call dein#add('Shougo/dein.vim')
call dein#add('Shougo/vimproc.vim', {'build': 'make'})

call dein#add('Shougo/neocomplete.vim')
call dein#add('Shougo/neomru.vim')
call dein#add('Shougo/neosnippet')

  " solarized
  call dein#add ('altercation/vim-colors-solarized')
  " mustang
  call dein#add ('croaker/mustang-vim')
  " jellybeans
  call dein#add ('nanotech/jellybeans.vim')
  " molokai
  call dein#add ('tomasr/molokai')

  call dein#add ('Shougo/unite.vim')
  call dein#add ('ujihisa/unite-colorscheme')


  " Install vim-clang
  call dein#add ('justmao945/vim-clang')
  " set clang options for vim-clang
  let g:clang_c_options = '-std=c11'
  let g:clang_cpp_options = '-std=c++1z -stdlib=libc++ --pedantic-errors'


call dein#end()

と記述して(よく分かってないのもある)vimを再起動し、

:call dein#install()

コマンドを実行すると、

call dein#add で指定したパッケージがインストールされる。

call dein#add ('altercation/vim-colors-solarized')

他の色やclangとかも消すのが面倒で残っていますが、実際にsolarizedに関係するのはこの行。(他のaddの行は無くてもいい、それ以外は消しちゃダメ?)

インストール完了したら、.vimrcに

syntax enable
set background=dark
colorscheme solarized
let g:solarized_termcolors=256

と書いて再起動すれば、無事vimもsolarized darkになる。backgroundをlightにすれば、おそらくSolarized lightに。

参考にしたもの

Ricty Diminished フォントが超絶いい!!

Mac Terminal のカラー設定をSolarized にする

NeoBundleを用いたVimプラグイン管理と色設定メモ

dein.vimを使ってみる

Viewing all 5608 articles
Browse latest View live


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