ちゃっくのメモ帳

ちゃっくがメモしときたいことをメモしとくよ

vimで使ってる/使いそうなコマンド一覧なんだよっ

基本的には使ってるコマンド一覧。
あとはマッピングすることで使えそうなコマンドとか普通に知らなかったコマンドとかも随時追加していく予定。
ただこの手の記事はあふれるほどあるのであえてここを見る必要は僕以外は無いぞ!

移動系

コマンド 説明
h,j,k,l それぞれ左,下,上,右に移動する
gj,gk それぞれ表示されている行単位での下上の移動(set wrapされて1つの行が2行以上で表示されている時に便利
$ 現在の行の一番後ろに移動
^ 現在の行で空白以外で一番前に移動
0 現在の行の先頭に移動
gg 先頭の行に移動
G 一番後ろの行に移動

移動+モード変更

コマンド 説明
s 一文字消してインサートモードに入る(NormalModeで)(xiと同じ)
S 一行消してインサートモードに入る(NormalModeで)

結合系

コマンド 説明
J 下の行を現在の行の後ろにスペースを一つ開けて結合

折り畳み機能

コマンド 説明
za 折り畳みの開閉
zm 全ての折り畳みマークを閉じる
zf ヴィジュアルモードで選択した部分に折り畳みマークをつける

折り畳みマークは3重括弧で
{{{
ここが折りたたまれる
}}}
となってる。
折り畳み機能を使う際は
set foldmethod=marker
としておくのが良さそう。

画面分割

コマンド 説明
:sp(split) 水平分割
:vs(vsplit) 垂直分割
<C-w>h,j,k,l 分割したウィンドウ間の移動
<C-w>H,J,K,L 分割したウィンドウの場所を移動

タブ

コマンド 説明
:tabnew 新しくタブを作る
gt 次のタブ
gT 前のタブ

なんか偶然見つけた

コマンド 説明
K カーソル下のmanを表示

VimScript -- バッファを操作する関数 --

VimScriptを書こうと思って
:commandname
としたら行の適当な位置に何らかの文字列を出力したいと思った。
どうやらappendとかsetlineとか使えばいいらしい。

挿入系の関数

append

append(行番号,文字列)
で[行番号]行目の次の行に[文字列]が挿入される。つまり[行番号+1]行目に[文字列]が挿入される。
もともと[行番号+1]行目以降にあったテキストは後ろにずれる。

現在の行の次の行を指定するためには
append('.',文字列)
とすればよい。

setline

setline(行番号,文字列)
[行番号]の位置に[文字列]を挿入する。もともと[行番号]の位置にあった文字列は上書きされる。

現在の行を指定するためには
setline('.',文字列)
とすればよい。

取得系の関数

getline

getline(行番号)
で[行番号]の文字列を取得できる。
現在の行を指定するためには
getline('.')
とすればよい

2015年を振り返るんだよっ

2015年を振り返ります。

3月
学科所属。なんで情報工学科に出したのかよくわかってない。

5か6月
運転免許取得。学科試験に2回落ちたから受かった時は嬉しかった。

12月
今。今年何をしたか思い出してる。

追記

今年何をしていたのか驚くくらい覚えていない。
誰か知ってたら教えて下さい。

来年は

来年は艦これの劇場版があるらしいからとても期待してる。

vim(neovim)でvim-autocloseでダブルクオーテーションが補完されなくなったんだよ

まあ、タイトルの通り。
Townk/vim-autocloseにお世話になってたんだけどなんかいきなりダブルクオーテーションの補完がされなくなった(・へ・)
なんでだろう???
とりあえずvim-autocloseのissueをみてみたらそれっぽい現象の人がいた
解決方法はこれなのかな?github.com

はい。英語。辛い。

なんとなく理解すると特定のカラースキーム("String","Chracter"のsyntax regions(何それ?)を再定義するようなカラースキーム)を使った時に発生する現象らしい。

僕が使ってるカラースキームはhybridだった。

とりあえずdefaultに変更してみたら確かにちゃんと動く。

解決方法も書いてくれてた。助かる。

具体的には
AutoClose.vimの369行目にある
'AutoCloseProtectedRegions': ["Comment", "String", "Character"],

'AutoCloseProtectedRegions': ["Comment"],
にすればいいのかな?

これをしてみたら一応今のところは動いた。

ただ僕の英語力は酷いから誤訳してて間違った方法なのかもしれない

間違ってたらごめんねm(_ _)m

追記

なんか僕の環境だとNeovimだとこれが発生してvimだと発生しなかった。(同じカラースキームを使ってる)

もしかしたら違う問題なのかもしれない????

NeovimでEscのあとに変な文字がはいっちゃったんだよ

解決できなかった問題。
2016/1/14解決確認してる気がする!(解決方法は一番下あたり)
環境はubuntu15.04,Neovim 0.1.0-devNeovim0.1.1
termial:gnome-terminal
使用:tmux,zsh

.tmux.conf

set -g default-terminal "xterm-256color"
set -g escape-time 10

~/.config/nvim/init.vim

set ttimeout
set ttimeoutlen=0

問題

Neovimのinsert modeでEsc(C-[でも同様)を押してからnormal modeに移行するのにラグが発生する。そしてそのラグの間に別のキーを入力するとº,èといったよくわからない文字が入力されnormal modeに移行もしない。どうやらこれはtmux上でneovimを使うと発生するらしい.実際にtmuxを止めてからnvimを起動するとこの問題は発生しなかった(・へ・)
調べてみると同じ問題に遭遇する人がいるらしい。issueをいくつか見つけた。
github.com
github.com
github.com

この辺は多分同じ問題じゃないかな???(詳しいことがわからない。もしかしたら違うのかもしれない?)
読んでみた。英語だ。。。。。読めない。。。。(-_-;)
頑張る。
※以下誤訳による誤解が多分に含まれた文章。
まあ、おそらく、Escを押したあと一定時間に入力されたキーはalt+(キー)として認識されなんかよくわからない文字(ºèなど)が入力されているらしい。

提示されていた解決法を試した

解決法として提示されていたのが.tmux.confでescape-timeを設定することだ。(・・)

これをまずやってみた。
推奨として0,10~20があったので0,10,15,20msで設定してみた。
結果、どの値にしても問題は解決しなかった。

別の解決法として提示されていたのが.init.vim
set ttimeout
set ttimeoutlen=100

とすることだったのでやってみた。
結果だめだった。
set ttimeoutlen=100
にしてる人がいた。
やってみた。
何も変わらない。
set timeout
を加えてる人もいた。結果なにもかわらない。

さらに
run nvim -u NONE
で起動する人もいた。init.vimを読み込まないならnvimを使う意味がない。

結果

具体的な解決策は見つけられなかった。
一時的な応急処置的な解決策としてC-cを使うとラグ無しでノーマルモードに移行できる。
しかしこれは強制的な移行なのでEscの代替ではない。

解決している方がいるならぜひ教えてくださいm(_ _)m

解決した話???

Neovim0.1.1になってから.tmux.confに
set -sg escape-time 0
と書いたら上の問題が発生しなくなった。
neovimのバージョンアップで何が変更されたのかは何処を見ればいいかわからなかったからこれがneovimのバージョンアップによって解決したのかなんか別の要因があって解決したのかわからないけどこれでtmux上でneovimが使えるやったね(._.)!!!

neovimのclipboardを有効にしたんだよっ

環境ubuntu15.04
neovimのバージョン NVIM 0.1.0-dev

(注)正確には「clipboardを有効にした」というのは間違っているらしいです.clipboardにアクセス可能にしたというのがもう少し正しい表現なのかな?

Vimではclipboardを有効化する際に

set clipboard=unnamed,unnamedplus

とかすればよかった。(その辺の方法は適当にググった方がいい)

これをそのままneovimのinit.vimに加えると次のようなエラーが出てきた
clipboard: No clipboard tool available. See:help nvim-clipboard

うーん。困った(._.)。困ったとツイートしたら暗黒美夢王さんから:help nvim-clipboardを読めとのお達しが。。。

読んだ。

https://neovim.io/doc/user/nvim_clipboard.html

なるほど。英語だ(-_-;)。まあ拙い英語力で解釈すると「neovimは直接clipboardにつなげるシステムを持っていない。その代わりnvim-providerを使うとアクセスできる。それはshell commandでクリップボードにアクセスできる」
この訳があっているかは知らない。

そのまま読むと「-xclip -xsel (pbcopy/pbpasteはmac用)」というtool名が出てきた。

とりあえずこれをインストールしてみよう。xclipとxselのどちらをするべきかわからないからいっそのこと両方インストールしてみた。

sudo apt-get install xclip xsel

試しにnvim上で書いた文章をコピーして別のエディタ(gedit)にでも貼り付けたら動いた!!!やったー(゚∀゚)!!!

これにて今のところひとまずclipboard問題は解決かな?

これについて教えてくれた暗黒美夢王さんのツイート


教えて頂いてありがとうございます。

この記事についてというか僕の書くものについて

僕はド素人なので間違ったことを書いてしまうことがあると思います。
すみません。そのさいはtwitterとかで教えいただけると(僕の理解が及ぶ範囲ならば)訂正するか間違っていることを明記します。

あとneovimはまだバージョン0.1.0とかそんなんなので後ろのバージョンで同じ方法が通用するかは知らないです。

NeoVimを入れてみたんだよっ

NeoVimを入れてみた。
環境はUbuntu15.04
参考にしたのはここのページgithub.com

まずは、
export XDG_CONFIG_HOME = ~/.config
をした。
なんかvimでは~/.vimrcにいろいろ書けばよかったんだけどneovimでは~/.config/nvim/init.vimに書かなきゃいけないとかどっかにいてあった。
とりあえず最低限にも満たない設定としてinit.vimに下のように書いておいた

syntax on
colorscheme desert
set number
tnoremap <Esc> <C-\><C-n>

これでもう一度init.vimを起動してみるとちゃんと色がついてる。

ここからが問題。
やっぱカラースキームはjellybeansにしたいな〜っておもって~/.config/nvim/colorsにjellybeans.vimをコピーして、init.vim

syntax on
colorscheme jellybeans
set number
tnoremap 
<Esc> <C-\><C-n>

としてみた。
そして適当なソースコードを開いてみると、あれ?文字がすべて白になっていた。
:colorscheme
をしてみると
jellybeans
になっているから読み込まれてはいるようだ。
ふと、tmuxを起動してその上でそのソースコードを開いてみたらちゃんとjellybeansの色が付いている。。。
.tmux.confがなにかしてくれてるのかな?と考え、.tmux.confを消してみる。terminalを再起動。tmuxを起動しないでソースコードを開いてみるとさっきと同様色がついてない。tmuxを起動(.tmux.confは存在していない)してソースコードを読み込んでみたらjellybeansで色がついていた(・へ・)。
どうなっているのだろう?なぜtmuxを起動したあだと色がつくのかさっぱりわからない。どなたかわかるなら教えてくださいщ(゚д゚щ)

追記(おそらくここからの方が重要)

上の問題が暗黒美夢王さんおおかげで解決することができました!!!



このようにTERM=xterm-color256をする必要があるらしいです(重要らしい).
そこで.zshrcと.bashrcに

export TERM=xterm-color256

と書いたらjellybeansなどのカラースキームが使えるようになりました。
暗黒美夢王さんありがとうございます。