KAEDE Hack blog

JavaScript 中心に ライブラリなどの使い方を解説する技術ブログ。

How to Copy to Clipboard in Vim

Copy to Clipboard in Vim

Why we need this

We copy words or lines, by useing a mouce or trackpad, double click or triple click, selecting by our finger.
However using Vim, copying lines by mouce might contain line numbers or line end charactors. It's annoying to delete the extra char every paste.
Vim has a nice commands that copies lines or words.

`yy`: copies one line to `register`.  
`num yy`: copies the numbers of lines to `register`.  
`yw`: copies one word to `register`.  
`p`: paste from the `register`.  

But this register is different from clipboard what we use copy and paste Control C & Vin the browser.

"*: by MacOS

`"*yy`: copies one line to `clipboard`  

f:id:kei_s_lifehack:20190923175020p:plain
yank
In MacOS, adding "*: to prefix enable to yank(copy) to clipboard, which is different in Linux.
* Make sure your Vim can use clipboard.
If your Vim is not supporting Clipboard, you cannot type "* command.
f:id:kei_s_lifehack:20190923175120p:plain
clipboard enabled

  • If not, install MacVim

github.com

"+: by Linux

In Linux, "*: do not use clipboard.
Clipboard read the "+ register.
Use "+ instead.

unnamed, unnamed plus

stackoverflow.com

vi.stackexchange.com

This "+ can also use in Mac.

Enable Clipboard by yy

"*or "+costs finger. It is far from default position. if yy reads clipboard, it saves our time a lot.

stackoverflow.com

set clipboard=unnamed

to ~/.vimrc. Very Very Very useful!!!!!

Struggle with Vim8.1 updating ~ seeking :terminal ~

Vim8.1での苦戦とその解決策 (:terminalを求めて)

vimとの出会い

MacではずっとVisual Stadio Codeを使っていたが、gitの運用中viが自動で起動することがあって、そこからvim (vi IMproved)に興味を持ち、メインのエディタにしてみようと思った。 Vimは完全なCUI editorであり、マウスを使う必要がほとんどないから、効率的にコードが書けて捗るらしい。

vimを使ってみよう!

そこで私が最近やっているJavaScriptの勉強をVimでやってみることにした。 主にconsole.logの結果をnodeでterminalにoutputしている。

これがしたいな!

必要なのは今はeditor画面とintegrated terminalが同じ画面にあることである。 vi sample.jsで開いた後 :wqをして, node sample.jsとするのでもいいが、やはり同じ画面にコードと実行結果は同居してほしい。

参考画像:VScode

f:id:kei_s_lifehack:20190219235507p:plain
vsc terminal

そうだ聞いてみよう!

ゴリラ.vimという渋谷のDeNAで開かれたvimmerの集いで聞いたところ、それには' :terminal 'というコマンドが必要らしいが、vim8.0には入っていないらしい。 そこではvimにすごく詳しい人に直してもらったが、自分では何をしてもらったかわかっていなかったため、2台目の自宅のMacで同じ問題に挑戦してみた。

やったこと

homebrewでのupdate

そもそも参照される位置には入っていないerrorが出たため、installした。 $ brew install vim --with-override-system-vi
Error: invalid option: --with-override-system-vi
overrideに失敗しているのでbrew install vimをした。  

Python3は
/usr/local/lib/python3.7/site-packages

Ruby
export PATH="/usr/local/opt/ruby/bin:$PATH
になるとの記述が出た。VImに伴い。

でもPHP@7.1 は /usr/local/opt/
にあるのがbrewでinstallしたのとvimでinstallされたのの違いかな?

For compilers to find ruby you may need to set: export LDFLAGS="-L/usr/local/opt/ruby/lib" export CPPFLAGS="-I/usr/local/opt/ruby/include"

vim8.1のinstallには成功したが、vim --versionをしてもvim8.0のままであった 当然 :terminal コマンドも使えないままだった。

場所の確認

which -a vim で確認すると, usr/bin/vimが存在し、usr/bin/local/vimを遮っていることが判明。
この操作はPHPの環境構築でもやることになるのであった...

PATHの修正

.bash_profileにsource ~/.bashrc を追加し .bashrcを作成してexport PATH="/usr/local/bin:$PATH" を記述した。

refresh

source ~/.bash_profile で再読み込みするとvim8.1が読み込まれるようになった! :terminalも使えた!!!

f:id:kei_s_lifehack:20190220002242p:plain
vim8.1 :terminal

注意点

:terminal で開いたのはvimのなかのterminalなので、また別のものを左右に表示したい場合はexitして開いたものを消さないとおかしくなります。 そうでなければ ctrl w wでJS fileとterminalをマウスなしで移動できるので超便利です!!Vim最高!!!

Special Thanks: cateye, Stan_Dma, stmtk, pepper_leaf

追記感想

Desktop, Laptopで二度環境構築をするのは時間の無駄に感じていたが、2台目に同じ操作をするときは手探りでコピペしてやるのではなく、ある程度どうなるかわかりながらできるので、二台環境構築するのはとても勉強になった。 またこの環境構築に手こずらなければMacOSの.bash_profileはもちろん、/usr/local以下のフォルダも見ることはなかったので低いレイヤのことが少しはわかって嬉しくなった。

add 2019.06.18

Exchanged Title ja to en.

Vim Plug-In 苦戦

経緯

  • ES2015を勉強するのにnode.jsでterminalでjs fileを実行するのを覚えた
  • それならvi 使えばterminalから動かないで実行できるし、なんかカッコいいし \ VScodeみたいにみやすくハイライトとかできるように.vimrc弄ってみるか!

結果

  • ハイライトはできた。
    f:id:kei_s_lifehack:20190204003501p:plain
    ハイライトvim

しかしmolokaiを参照した時のErrorが消えない。

  • copy をした時に行番号まで取り込んでしまう。
  • ctrl nなどのMac key bindをした時に過去のコマンドを持ってきてしまい不快。

Referred

qiita.com

pyoonn.hatenablog.com

qiita.com

source code

Apple-no-Air:~ Apple$ vi .vimrc Error detected while processing /Users/Apple/.vimrc: line 55: E185: Cannot find color scheme 'molokai' Press ENTER or type command to continue

1 "#####表示設定#####↲ 2 set number "行番号を表示する↲ 3 set title "編集中のファイル名を表示↲ 4 set showmatch "括弧入力時の対応する括弧を表示↲ 5 syntax on "コードの色分け↲ 6 ↲ 7 "##Tab Settings"↲ 8 set expandtab " タブ入力を複数の空白入力に置き換える↲ 9 set tabstop=4 " 画面上でタブ文字が占める幅↲ 10 set softtabstop=4 " 連続した空白に対してタブキーやバックスペースキーでカーソルが動く幅↲ 11 set autoindent " 改行時に前の行のインデントを継続する↲ 12 set smartindent " 改行時に前の行の構文をチェックし次の行のインデントを増減する↲ 13 set shiftwidth=4 " smartindentで増減する幅↲ 14 ↲ 15 "List setting"↲ 16 set list↲ 17 set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%↲ 18 set virtualedit=block "文字のないところにカーソル移動できるようにする"↲ 19 set whichwrap=b,s,[,],<,>↲ 20 set backspace=indent,eol,start↲ 21 set wildmenu↲ 22 ↲ 23 ↲ 24 "#####検索設定#####↲ 25 set ignorecase "大文字/小文字の区別なく検索する↲ 26 set smartcase "検索文字列に大文字が含まれている場合は区別して検索する↲ 27 set wrapscan "検索時に最後まで行ったら最初に戻↲ 28 ↲ 29 "# vim plug in settings↲ 30 if has('vim_starting')↲ 31 " 初回起動時のみruntimepathにNeoBundleのパスを指定する↲ 32 set runtimepath+=~/.vim/bundle/neobundle.vim/↲ 33 ↲ 34 " NeoBundleが未インストールであればgit cloneする・・・・・・①↲ 35 if !isdirectory(expand("~/.vim/bundle/neobundle.vim/"))↲ 36 echo "install NeoBundle..."↲ NORMAL .vimrc unix | utf-8 | vim 1% 1:1
".vimrc" 82L, 3373C

Add

映画, 'POLAR' 感想

f:id:kei_s_lifehack:20190129222350p:plain
POLAR

Netflix Original Movie

POLAR

を観ました!

久しぶりに1h54minもの映画を観た。集中力続かないから昼と夜で二回に分けてだったけど。だがその分、映画は「追体験」を得られるようにできているなぁ。

もともとこの2019にできた映画は知らなかったが、Netflixをデスクトップで開いた時に出てきた画面上部の自動再生のPVでt

f:id:kei_s_lifehack:20190129232326p:plain
PV

見入ってしまってそのまま観ました。 撮影も自然を壮大に映していて素晴らしかった。

f:id:kei_s_lifehack:20190129232429p:plain
nature

とりあえず主人公の50代の男の顔がいいし観ててしあわせでした.....

f:id:kei_s_lifehack:20190129232540p:plain
face

組織の電話担当も格好良かった、私も 'Speak.'って言って電話出ようかな???

f:id:kei_s_lifehack:20190129232705p:plain
tel

ストーリーは深くは言いませんが、テンポが良くて先が読めなくて、終わり方も心に染みました。ああ、そうなるのか..... と。

相当観て良かったと思える作品なのでぜひ皆さんも POLAR, みてください。

----END----------------

Permission to 'newUserName/repsitory.git denied to oldUserNameの解消法

Permission to kaede0902/KAEDE_GAMES.git denied to KaedeAPK. fatal: unable to access 'https://github.com/kaede0902/KAEDE_GAMES.git/': The requested URL returned error: 403

のエラーメッセージが出てしまった。pushじに 古いアカウントじゃなくて新しいアカウントでpushするのをわからせる、コンピュータわからせ棒(line)として viで.git / configの [remote "origin"] url = https://github.com/kaede0902/KAEDE_GAMES.git を url = https://kaede0902@github.com/kaede0902/KAEDE_GAMES.git にすればpushできるようになる

以上、備忘録

REF

Basic Auth Basic認証 - Wikipedia

C_language and Header_19/01/25

C言語とheader, MacOS

Links

Situation

  • Mid or low company向けのMicro serviceのソフトを作るアルバイト
  • 12/15くらいからで1.5monthめ。
  • Python入門 => Django Girls Tutorial => C言語の絵本 をやっている

  • 今日はChap04, Array and Pointerをやっていた

Problem(PB)

//#include <malloc.h>を本の通りにheaderに書いていたら

#include <malloc.h>
         ^~~~~~~~~~
1 error generated. ```
と出た。

これ自体はググったらMacOSではmalloc()はstdlib.hに入っているし、malloc.hはサポートされていないと出た.
それよりも問題は社長にこう言われてしまったことだ。
''headerの動きや.hフォルダの位置がわかっていないのに書くのはプログラマとしておかしい"
"プログラマが理解できていないものは動きが保証できるとは言えないので売れないぞ"
"それは自分で選ぶライブラリについても同じだぞ"

....正直headerなんて関数に応じて呼び出せばいいだけだと思っていた.
そこから理解するのはレイヤが低すぎてキリがないと思う。
動くから書いている、ではダメなのであろうか。だがそれはキリがないのではないか
コンピュータを理解してプログラムを書くのなんて、実践できている人間がいるのか

MacOSを使っている嫌味のように感じたが、同じ関数なのに呼び出している標準Libraryの場所が違ったり、そのlibraryのファイル構造を詳しく伝えられないと、Win環境で動作保証がされないことになるのだろうか。
そもそもコンパイルしたものをソフトとして(.exeか?)提出するのだから、ソースをwinで保証する必要があるのか、headerの動作を詳しく理解していないとどう信頼性のなさに繋がるのか、それがどう「信頼性の無さ」に繋がるのだろうか。

具体的に言って欲しいものだ.... その結果, 「MacOSは禁止だ、巷世間一般で使われているwinで開発しなさい。」
とか言われたらかなり効率が落ちてフラストレーションがたまるが。

「わかっていないのに作るな」と言われるのはかなりストレスが溜まる。見返したいものだよ...

<EOF>

Git usage

Gitの使い方, 差分管理など

git add, commit, push,

自明なので省略

git log

Terminalで

commit: 123456abcdef...

author: kaede0902hoge@mail.com

Date: Thu May 21...

commit message

のようにcommit logを一覧にできる

コミットメッセージが適当だったら意味がないがな

git status

f:id:kei_s_lifehack:20200625143619p:plain

local(自分のPCのストレージ)でコードを変更したりしたら

remoteにpushする前に変更点を洗い出したい時には

' git status' コマンドで変更 file がどのくらいあるか見ることができる

fetch, diff

fetch, diff, でremoteの変化を見れるらしい,未検証

git diff

各自のgit repositoryのなかのpushしてremoteに送っていない 差分が表示される??要検証

  • hogehoge

  • hugahug

と表示される

github in browser

f:id:kei_s_lifehack:20200625143413p:plain

結局

githubのcommitのページに飛んで差分確認するのが一番楽

checkout

www.atmarkit.co.jp

branchを分ける際はcheckoutコマンドを使用する

f:id:kei_s_lifehack:20200702193753p:plain

このようにGUIから作成

それをterminalからいじるためには

「git checkout ブランチ名」で、ワークツリーの内容を指定したブランチに切り替えることができます。

RYOs-MBP:07 kaede$ git checkout 20200702-daily-reoprt
error: pathspec '20200702-daily-reoprt' did not match any file(s) known to git

ダメそう....

branchリストを出してみると

RYOs-MBP:07 kaede$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

になるので,GUIで作ったはずのbranchが反映されない.

qiita.com

作るのはこっちみたいだ

git checkout -bで作成

git checkout -b hoge
Switched to a new branch 'hoge'
 git branch -a
* hoge
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

できてるしそこにいる!

これでpushしたのをwebのgithubからPRすれば良し!