[Chromeos]localhost:portをCrostini VMのIP:portにフォワードする方法

Crostiniがstableにきた!と思ってbetaからstableに変更したらLinuxVMが無くなりました。気をつけてください。。 stableに変更したのが理由なのかわかりませんが、socatでcrostiniのlocalhostのポートへのマッピングがうまくいかなくなりました。 例えば、開発時にlocalhost:3000をcrostini vm上で立ててもホストのchromeosのchromeからアクセスできなくなりました。

下記のようなエラーでうまくいきません。

This site can’t be reached
localhost refused to connect.

ERR_CONNECTION_REFUSED

解決方法をさがしているとRedditで同じようなことを聞いている人がいました。

Connection Fowarderdというextensionを入れ、forwardingを設定します。

ifconfigでVMのIPを調べてDestinationを適宜変更してください。

Vimの検索単語ハイライト時の背景色の変更方法

/で検索しているときにどれがハイライトされているかわからなかったので調べてみた。.vimrcに下記を追加。

set hlsearch
hi Search ctermbg=Cyan
hi Search ctermfg=White

色は下記で確認。

:so $VIMRUNTIME/syntax/colortest.vim

参考:https://stackoverflow.com/questions/7103173/vim-how-to-change-the-highlight-color-for-search-hits-and-quickfix-selection

Golangをgoenv経由でインストールする方法

一度、rbenv, nvmなどの言語環境設定ツールを使うとそれなしではバージョンのアップグレードなどが不安になってしまいます。 Goの場合はgoenvというものがあるようなので、これを使ってgolangを入れることにしました。

# git clone
$ git clone https://github.com/syndbg/goenv.git ~/.goenv

# add envvariables
$ echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bash_profile
$ echo 'eval "$(goenv init -)"' >> ~/.bash_profile
$ source .bash_profile

# check if it's loaded
$ echo $GOENV_ROOT

# install version 1.11.0
$ goenv install 1.11.0

# set as global
$ goenv global 1.11.0

# confirm if it's working
$ go version
go version go1.11 linux/amd64
How to install Golang with goenv

2018年のVimファイル検索・文字列検索はfzfとripgrep(rg)で決まり

sublime2 -> atom -> vscode -> sublime3 を経て5年ぶりぐらいにVimに帰ってきたわけですが、当時から色々変わっていて軽い浦島太郎状態です。ともかく大変なのはプロジェクト内のファイル検索と文字列検索。一度、sublimeのようなテキストサーチを経験してしまうとこれなしには開発できなくなってしまいました。

deinをパッケージのインストールに選び、deniteを試すも大きなプロジェクトではその遅さに困り、ctrlPとfzf両方試し、fzfを利用することに決めました。決め手はその速さ。Blazing fastというやつです。

deinを利用しているので、.vimrcにjunegunn/fzfjunegunn/fzf.vimを追加。

if dein#load_state($HOME . '/.cache/dein')
  call dein#begin($HOME . '/.cache/dein')
  ..
  call dein#add('junegunn/fzf', { 'build': './install --all', 'merged': 0 })
  call dein#add('junegunn/fzf.vim', { 'depends': 'fzf' })
  ..

あとはショートカットを追加。ctrl-Pでファイル検索。ctrl-gで文字列検索です。私はバッファ検索はタブを利用しているのであまり使わないと思っていますが、一応追加。\\でvimコマンド一覧を表示できます。

" FZF
fun! FzfOmniFiles()
  let is_git = system('git status')
  if v:shell_error
    :Files
  else
    :GitFiles
  endif
endfun

nnoremap <C-b> :Buffers<CR>
nnoremap <C-g> :Rg<Space>
nnoremap <leader><leader> :Commands<CR>
nnoremap <C-p> :call FzfOmniFiles()<CR>

私はタブを利用してて、かつ私のtmuxのprefixキーのctl-tが被って利用できなそうだったので、ctrl-oで新しいタブを開くに変更。

let g:fzf_action = {
\ 'ctrl-o': 'tab split'
\ }

文字列検索はripgrep(rg)を採用

ripgrepをインストールして、Rgコマンドにpreviewを追加。ctrl-gで:Rgが出て、検索する文字列を入れて、Enter。それから?を押すとpreviewモードスタート。ファイルが右側に表示されて便利の極みです。

command! -bang -nargs=* Rg
\ call fzf#vim#grep(
\ 'rg --column --line-number --hidden --ignore-case --no-heading --color=always '.shellescape(<q-args>), 1,
\ <bang>0 ? fzf#vim#with_preview({'options': '--delimiter : --nth 4..'}, 'up:60%')
\ : fzf#vim#with_preview({'options': '--delimiter : --nth 4..'}, 'right:50%:hidden', '?'),
\ <bang>0)

私の整理されてないvimrcはこちら