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('.')
とすればよい
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で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問題は解決かな?
これについて教えてくれた暗黒美夢王さんのツイート
@chakku_000 はい。再実装されました。確か、GUIに依存する機能だったからなはず
— 暗黒美夢王(deo developer) (@ShougoMatsu) 2015年12月2日
@chakku_000 はい。そして、それを有効化するのに外部コマンドが必要ということなのです
— 暗黒美夢王(deo developer) (@ShougoMatsu) 2015年12月2日
教えて頂いてありがとうございます。
この記事についてというか僕の書くものについて
僕はド素人なので間違ったことを書いてしまうことがあると思います。
すみません。そのさいは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を起動したあだと色がつくのかさっぱりわからない。どなたかわかるなら教えてくださいщ(゚д゚щ)
追記(おそらくここからの方が重要)
上の問題が暗黒美夢王さんおおかげで解決することができました!!!
@chakku_000 もしかして、TERM=xterm-256colorにしてない。
— 暗黒美夢王(deoplete dev) (@ShougoMatsu) 2015, 11月 30
@chakku_000 neovimはTERMの設定が重要です。
— 暗黒美夢王(deoplete dev) (@ShougoMatsu) 2015, 11月 30
このようにTERM=xterm-color256をする必要があるらしいです(重要らしい).
そこで.zshrcと.bashrcに
export TERM=xterm-color256
と書いたらjellybeansなどのカラースキームが使えるようになりました。
暗黒美夢王さんありがとうございます。