vimのチートシート
わたしのメモシステムからフィルターで取り出したもの
#使い方vv
#vimで行を逆順に並べ替えるvv
:global コマンドと :move コマンドを組み合せて、全ての行を 1 行目の上に移動することで、行を逆順に並べ替えたファイルを作ることができます。コマンドは次の通りです:
:global/^/m 0
短縮して書くこともできます:
:g/^/m 0
"^" という正規表現は行の先頭に (それが空行であっても) マッチします。:move コマンドはマッチした行を 0 行目 (実際には存在しない仮想的な行) の下に移動します。つまり、マッチした行がファイルの先頭行になります。:global コマンドは行番号が変更されても処理を継続できます。そして、マッチしたすべての行が、順番にファイルの先頭に移動していきます。
@#ある一定の範囲だけ並べ替えることもできます。#@
まず、並べ替えたい範囲の一行上に移動し、"mt" でマークします。そして、範囲の末尾に移動し、次のように入力します:
:'t+1,.g/^/m 't
--- 2017-12-20 08:27:12 +0800 ---
#使い方vv
#vimで行の順番を単純に逆に並び替える方法vv
ヴィジュアルモード(Shift-v)で行を選択してから、
:'<,'>!tac
例)
pivot-test-wuliaozu-addrank-v2.py
pivot-bunnseki-agariritu.py
pivot-test.py
ke30-kehu-wuliaozu.py
下のように並び替わる
ke30-kehu-wuliaozu.py
pivot-test.py
pivot-bunnseki-agariritu.py
pivot-test-wuliaozu-addrank-v2.py
--- 2018-03-02 08:53:00 +0800 ---
#使い方vv
#vimで計算vv
<C-r>=printf("%.0f", round(2800*1.08))
--- 2018-03-29 07:47:38 +0800 ---
#使い方vv
#vimで「<>」を検索するには、\vを書いてからvv
「\<\>」、検索文字を書く。
--- 2018-07-09 16:00:30 +0900 ---
#使い方vv
#vimで改行を検索、改行へ置換するvv
改行を検索するには、「\n」。
改行へ置換するには、「C+v、C+m」あるいは「\r」。
#vimで置換の時には「\n」でないことに注意vv
例:"%s/\v /^M/gc" or "%s/\v /\r/gc"
--- 2018-07-16 12:14:14 +0800 ---
#使い方vv
#vimで検索して置換の例vv
'<,'>s/\v\t'(.*)',/#\1/gc
--- 2018-09-07 22:00:57 +0800 ---
#使い方vv
#vimで複数の置換コマンドを一括で行うvv
置換コマンドsはexコマンドなので、これを連続して行うにはexコマンド同士をパイプで繋げる。例えばhtmlエスケープをすることを考える。つまり以下の順番で置換を行う。
&を&、>を>、<を<。これを1行で行うには、以下のように入力する。
:'<,'>s/&/&/g | :'<,'>s/>/>/g | :'<,'>s/</</g
--- 2018-11-23 11:26:04 +0800 ---
#使い方vv
#vimで開いているファイル名をクリップボードへコピーするvv
:let @*=expand('%:t')
:let @*=expand('%:p')
:let @*=expand('%:p:h')
--- 2018-11-27 12:10:30 +0800 ---
#使い方vv
#vimでファイルタイプ(filetype)を変更する方法vv
:set filetype=python
--- 2018-11-28 13:55:42 +0900 ---
#使い方vv
#vimでメモファイルからタグで始まらないブロックを取得する正規表現vv
\(^--- \d\{4}.* ---\n\{2,}\)\%(#.*$\)\@!\%(\d\{4}-\d\{2}-\d\{2}-iPhone6+memo\)\@!
\(^--- \d\{4}.* ---\n\{2,}\)%(\d\{4}-\d\{2}-\d\{2}-iPhone6+memo\)\@!\%(#.$\)\@!
\%(^--- \d\{4}.* ---\n\{2,}\d\{4}-\d\{2}-\d\{2}-iPhone6+memo\n\n[^#].*vv$\)
--- 2018-12-06 07:06:55 +0800 ---
#使い方vv
#vimで正規表現で最短マッチvv
*? {-} 直前のアトムの繰り返し(0回以上) 最短マッチ
+? {-1,} 直前のアトムの繰り返し(1回以上) 最短マッチ
?? {-0,1} 直前のアトム(0回、または1回) 最短マッチ
{n,m}? {-n,m} 直前のアトムの繰り返し(n回以上m回以下) 最短マッチ
--- 2019-05-21 11:05:54 +0900 ---
#使い方vv
#vimで正規表現で最長マッチvv
. 同じ任意の1文字
* 同じ直前のアトムの繰り返し(0回以上) 最長マッチ
+ 同じ直前のアトムの繰り返し(1回以上) 最長マッチ
? 同じ(=も同じ)直前のアトム(0回、または1回) 最長マッチ
{n,m} 同じ直前のアトムの繰り返し(n回以上m回以下) 最長マッチ
^ 同じ先頭にマッチ
$ 同じ末尾にマッチ
(...) 同じグループ化してアトムにする
| 同じ選択の区切り
[...] 同じ[...]内の任意の1文字にマッチ
--- 2019-05-21 11:05:59 +0900 ---
#使い方vv
#vimで開いているすべてのバッファからvimgrepで検索する方法vv
すべてのバッファで同じコマンドを実行するには、 bufdoコマンドを利用します。
vimgrepaddは、vimgrepの結果に検索結果を加えていきます。
bufdoとvimgrepaddを利用することで、すべてのバッファをgrepで検索することが可能になります。
:bufdo vimgrepadd /foo/ %
vimgrepaddは、既存の検索結果に検索結果を加えていってしまいます。
検索結果を一度クリアするには、cexprを利用します。
:cexpr ""
--- 2019-05-21 12:57:58 +0900 ---
#使い方vv
#vimで複数のキーワードを同時にgrepする方法vv
vimgrepの検索するパターンを正規表現で指定します。
:vimgrep /\(fopen\|fclose\)/ *.c
QuickFix のウィンドウを自動的に開かない設定の場合は、
:vimgrep /\(fopen\|fclose\)/ *.c | cwin
とするか
:vimgrep /\(fopen\|fclose\)/ *.c
:cwin
としてください。
--- 2019-05-21 12:59:03 +0900 ---
#使い方vv
#vimで既存の検索結果にvimgrepの結果を追加するvimgrepaddvv
vimgrepの結果に対して、別のvimgrepの結果を加えることができます。
一度検索した後に、別の検索結果を合わせてみたいときに便利です。
fopenを検索したあとで、fopenの検索結果にさらにfprintfの検索結果を加える例を考えてみます。
vimgrep で fopen を探します。
:vimgrep fopen %
fopenの検索結果に、さらに別の検索の結果を加えます。
:vimgrepadd fprintf %
デフォルトのvimでは、QuickFixのウィンドウが自動的に開かないため、検索後に :cwin を実行してください。
--- 2019-05-21 13:00:16 +0900 ---
#使い方vv
#vimで複数行を最短マッチで検索、置換する方法vv
vimgrep /^#.*?\n.*?$/ %
%s/\(^#.\{-}\n\)#\(.\{-} \d\{2}ch \)/\1\2\r#\2/gc
--- 2019-09-07 09:48:32 +0900 ---
#使い方vv
#vimで複数行を最長マッチで検索する方法vv
Matches any single character or end-of-line.
Careful: "\_.*" matches all text to the end of the buffer!
要は\_.は改行と文字種全てにマッチします。
[改行を含む最長マッチ検索版]
/hoge\_.*hoge
[改行最短マッチ検索版]
/hoge\_.\{-}hoge
--- 2019-09-07 09:55:08 +0900 ---
#使い方vv
#vimで最短マッチする方法vv「.{-}」を使うvv
%s/^,,\(.\{-},\),/\1/gc
%s/\(".\{-}\),\(.\{-}"\)/\1\2/gc
%s/\(".\{-}\),\(.\{-}"\)/\1_\2/gc
--- 2020-01-14 15:52:00 +0900 ---
#使い方vv
#vimでvimdiffで差分を反映する方法vv
#vimでvimdiffの色設定を変更して見やすくする方法vv
dpで、現在のバッファから他のバッファへコピーします。
doで、現在のバッファに他のバッファからコピーします。
]cで、次の差分へジャンプする。
[cで、前の差分へジャンプする。
" vimdiffの色設定
highlight DiffAdd cterm=bold ctermfg=10 ctermbg=22
highlight DiffDelete cterm=bold ctermfg=10 ctermbg=52
highlight DiffChange cterm=bold ctermfg=10 ctermbg=17
highlight DiffText cterm=bold ctermfg=10 ctermbg=21
--- 2020-01-15 10:14:11 +0900 ---
#使い方vv
#vimでvimdiffで見やすいようにカラースキーム(badwolf)を設定する方法vv
DiffAdd xxx term=bold cterm=bold ctermfg=1 ctermbg=236 guibg=#35322d
DiffChange xxx term=bold cterm=bold ctermfg=1 ctermbg=235 guibg=#242321
DiffDelete xxx term=bold cterm=bold ctermfg=16 ctermbg=16 gui=bold guifg=#000000 guibg=#000000
DiffText xxx term=reverse cterm=bold ctermfg=15 ctermbg=236 gui=bold guifg=#ffffff guibg=#35322d
" vimdiffの色設定
autocmd ColorScheme * highlight DiffAdd cterm=bold ctermfg=10 ctermbg=236
autocmd ColorScheme * highlight DiffChange cterm=bold ctermfg=10 ctermbg=235
autocmd ColorScheme * highlight DiffDelete cterm=bold ctermfg=16 ctermbg=16
autocmd ColorScheme * highlight DiffText cterm=bold ctermfg=15 ctermbg=236
--- 2020-03-03 09:24:01 +0900 ---
#使い方vv
#vimでpythonのjupyternoteのipynbファイルからプログラムソース部分だけ抽出する正規表現vv
^ .*"source": [\n\(\_.\)\{-\}\n \]$
改行と文字種全てにマッチの\_.と最小マッチ、最短マッチの\{-}が肝。
--- 2020-05-05 11:49:42 +0800 ---
#使い方vv
#vimでmemoファイルを開くてすぐにメモを追加する行に移動する方法vv
vim memo.txt +'1/\n^%editlineend' -c noh
--- 2021-02-20 10:39:40 +0900 ---
#使い方vv
#bashでvimでテレビ番組を間違って移動してしまった時に元に戻す方法vv
#vimでテレビ番組を間違って移動してしまった時に元に戻す方法vv
%s/^renamed \(\'.\{-}\'\) -> \(\'.\{-}\'\)/mv -vi \2 \1/gc
--- 2021-03-01 11:06:32 +0900 ---
#使い方vv
#vimでmemo.txtの目次インデックスを作る方法vv
vim /^#.\{-}vv$/ %
%s/\(^memo.\{-}|.\{-}| \)\(#.\{-}vv.\{-}$\)/\2||\1/gc|sort
%s/\(^#.\{-}vv.\{-}\)||\(memo.\{-}|.\{-}| \)/\2||\1/gc
--- 2021-04-06 12:37:14 +0900 ---
#使い方vv
#vimでファイル名、ファイルパス情報の取得するvv
:echo expand("%")
"# => カレントファイルの名前を出力
:echo expand("%:p")
"# => カレントファイルのフルパスを出力
:echo expand("%:r")
"# => カレントファイルの名前、拡張子抜きを出力
:echo expand("%:e")
"# => カレントファイルの拡張子を出力
--- 2021-04-11 18:22:17 +0900 ---
#使い方vv
#vimで全角を半角にする方法vv
'<,'>!nkf -Wwm0 -Z1
--- 2021-04-13 12:24:17 +0900 ---
#使い方vv
#vimでxselでクリップボードへコピー、tmuxのバッファへ格納する方法vv
コピーしたい範囲でヤンクして、コマンドモードで外部コマンドを実行する。
tmux set-buffer "$(xsel -op)"
一旦vimのクリップボードからシステムのクリップボードへコピーしてから。
echo "$(xsel -op)"|xsel -ib
tmux set-buffer "$(xsel -ob)"
echo "$(xsel -op)"|xsel -ib|tmux set-buffer "$(xsel -op)"
ssh X@X.X.X.X "/usr/local/bin/tmux set-buffer '$(xsel -ob)'"
ssh X@X.X.X.X "/usr/local/bin/tmux set-buffer '$(tmux show-buffer)'"
--- 2021-05-11 14:02:13 +0900 ---
#使い方vv
#vimで設定ファイルを読み込まずに起動する方法vv
vim --clean
--- 2021-09-19 13:12:12 +0900 ---
#使い方vv
#vimでquickfixでvimgrepの結果をファイルに保存して再利用する手順vv
vimgrepの結果をgrepResult.txtに保存したとして、それをvimに読み込んで再度Quickfixで使う方法です。
vimを起動します。
エラーフォーマットをセットします。
:set errorformat=%f\|%l\ col\ %c\|\ %m
エラーファイルを開きます。
開くだけ。
:cgetfile <ファイル名>
開いて1つめの検索結果にジャンプする。
:cfile <ファイル名>
quickfixウインドウを開きます。
:copen
--- 2022-04-18 11:58:31 +0900 ---
#使い方vv
#vimでメモを追加するときの区切り文字を入力するマクロvv
c "z ojj33i-jjojjo#使い方vvjjojj
nnoremap 'zz :let @z='ojj33i-jjojjo#使い方vvjjojj'<CR>@z
--- 2022-05-31 15:09:08 +0900 ---
#使い方vv
#vimで文字コードを指定するあれこれvv
指定の文字コードでファイルを開き直す
Shift JIS でファイルを開き直す
:edit ++encoding=sjis
:e ++enc=cp932
UTF-8 でファイルを開き直す
:e ++enc=utf-8
指定の文字コードでファイルを保存する
Shift JIS /UTF-8でファイルを保存
:setlocal fileencoding=sjis
:setl fenc=cp932
:setl fenc=utf-8
現在のエンコードを確認する
Vim のエンコード
:se enc?
ファイルのエンコード
:se fenc?
開いたファイルがutf-8でなくて文字化けた場合、
ファイルの文字コードを確認して、
:se fenc?
確認した文字コードで開き直し、
:e ++enc=sjis
文字コードをutf-8にして保存すると、
次回からは文字化けしなくなる。
:setl fenc=utf-8
:ZZ
--- 2022-06-02 16:10:50 +0900 ---
#使い方vv
#vimでリモートからローカルのファイルを開く方法vv
vim sftp://X@X.X.X.X/mm.txt
vim sftp://X@X.X.X.X/mm.txt "+norm Go'$(export DISPLAY=:0;xsel -ob)'"
--- 2022-08-06 17:59:13 +0900 ---
#使い方vv
#vimで検索結果のハイライト表示を切り替える方法vv
常にハイライトを消す場合
検索結果のハイライトを非表示にしたい場合は、nohlsearchコマンドを入力します。
:set nohlsearch
ハイライトの表示を戻す場合
ハイライト表示に戻すには、hlsearchコマンドを入力します。
:set hlsearch
デフォルトで検索結果をハイライト表示する
vimrcファイルに以下を追記します。
set hlsearch
デフォルトで検索結果のハイライトを消す
vimrcファイルに以下を追記します。
set nohlsearch
ハイライトの色を変更する方法
検索のハイライトの現在の設定を確認するには、Vimエディタで以下のコマンドを実行します。
:hi Search
「hi」がハイライト用のコマンドで、「Search」がハイライトされる対象です。
ハイライトカラーの設定値の内容は、それぞれ次のとおりです。
ctermfg: ハイライトの文字色(Vimエディタ上)
ctermbg: ハイライトの背景色(Vimエディタ上)
guifg・・・ハイライト文字色(gVimなどのGUI用のツール上)
guibg・・・ハイライトの背景色(gVimなどのGUI用のツール上)
ハイライトのカラーを変更するには、必要に応じて上記のカラーを次のコマンドで変更します。
Vimエディタの場合
:hi Search ctermfg=文字色(色番号) ctermbg=背景色(色番号)
gVimの場合
:hi Search guifg=文字色(16進数カラー) guibg=背景色(16進数カラー)
色番号を設定する場合は、『256 Terminal colors and their 24bit equivalent』のページを参考にして下さい。
http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html
デフォルトの色を変更する場合
デフォルトのハイライト色を変更したい場合は、vimrcに設定を追記する必要があります。
vimrcに次のように「hi Search」に続いて文字色のctermfg、背景色のctermbgを設定します。
Vimエディタの場合
hi Search ctermfg=文字色(色番号) ctermbg=背景色(色番号)
gVimの場合
hi Search guifg=文字色(16進数カラー) guibg=背景色(16進数カラー)
--- 2022-09-18 13:00:25 +0900 ---
#使い方vv
#vimでファイル化したquickfixを読み込んで再利用する方法vv
:set errorformat=%f\|%l\ col\ %c\|\ %m
:cgetfile index.txt
:cgetfile index.txt|copen
--- 2022-12-23 14:19:16 +0900 ---
#使い方vv
#vimでウィンドウ操作、分割、移動とかいろいろvv
Vim のウィンドウ内を分割すると、複数のファイルの内容を同時に表示しながら作業することができます(同一ファイル内の2か所を表示することもできます)。
ウィンドウを分割する
:sp[lit]
-- 上下に分割(編集中のファイルを開く) = Ctrl-w s
:vs[plit]
-- 左右に分割(編集中のファイルを開く) = Ctrl-w v
:new
-- 上下に分割(空のファイルを開く) = Ctrl-w n
:vnew
-- 左右に分割(空のファイルを開く)
:sview [file]
-- 閲覧用にファイルを開く = :split + :view
ウィンドウを閉じる
Ctrl-w c
-- カレントウィンドウを閉じる = :q
Ctrl-w q
-- カレントウィンドウを閉じる
Ctrl-w o
-- カレントウィンドウ以外を閉じる
ウィンドウを切り替える
Ctrl-w w
-- 次のウィンドウへ移動(★最低限これだけ覚えておく)
Ctrl-w h
-- 左のウィンドウへ移動
Ctrl-w j
-- 下のウィンドウへ移動
Ctrl-w k
-- 上のウィンドウへ移動
Ctrl-w l
-- 右のウィンドウへ移動
ウィンドウサイズの変更
<NUM>z
-- 指定した行数にウィンドウサイズを変更
Ctrl-w =
-- すべて同じサイズにする(★これが基本)
Ctrl-w +
-- ウィンドウを縦に大きくする
Ctrl-w -
-- ウィンドウを縦に小さくする
Ctrl-w _
-- ウィンドウを縦に最大化
Ctrl-w >
-- ウィンドウを横に大きくする
Ctrl-w <
-- ウィンドウを横に小さくする
Ctrl-w |
-- ウィンドウを横に最大化
ウィンドウサイズを大きくするときに、数値を先に指定すると、何行大きくするかを指定できます。
例: 現在のウィンドウを3行分大きくする
3 Ctrl-w +
ウィンドウの上下左右交換
vimで複数ウィンドウ開いている時の上下/左右交換/移動についてのメモです。
C-W + {J,K,H,L} → 今いるウィンドウを「jkhl方向」のウィンドウと交換.
※JKHLは大文字注意.
横分割(上下に分かれてる)の場合.
いま上側にいる → C-WJ → 下側と交換 → 下側にいく
いま下側にいる → C-WK → 上側と交換 → 上側にいく
縦分割(左右に分かれてる)の場合.
いま左側にいる → C-WL → 右側と交換 → 右側にいく
いま右側にいる → C-WH → 左側と交換 → 左側にいく
同じコマンドで縦横分割変換も
縦分割で左にいる時 → C-WK → 横分割して上に.C-WJ → 横分割して下に
横分割で上にいる時 → C-WH → 縦分割して左に.C-WL → 縦分割して右に
分割ウィンドウの「列」または「行」で回転するには、C-wC-r
2画面だけだったら、こっちの方が単純です。
ただし行き先のウインドウがさらに分割されていると断られます。
--- 2022-12-23 14:42:04 +0900 ---
#使い方vv
#vimで正規表現で先読み、後読みを使用するvv
Hack #70 で、正規表現においてマッチする範囲を制限する方法を紹介しましたが、他の正規表現エンジンで同じようなことをしたい場合、肯定先読みや否定先読みと言った機能が使われます。 そして当然、Vim にも肯定先読みや否定先読みの機能は備わっています。
肯定先読み/否定先読み/肯定後読み/否定後読み
先読み、後読みとはすなわち、特定のパターンが対象のパターンの後ろに来る(先読み)、もしくは前に来る(後読み)ことを条件付けることです。否定の場合は逆に来ないことを条件付けます。
肯定の場合は単に続けて正規表現を構成した場合でもマッチする個所は同じですが、マッチする対象が異なります。先読み、後読みの部分はあくまで条件なのでマッチ対象には含まれません。
Vim では以下のパターンを置くことで直前の文字、もしくはグループを先読み、後読みに指定します。
肯定先読み \@=
否定先読み \@!
肯定後読み \@<=
否定後読み \@<!
例えば、
\w+\%(()\)\@=
とすると直後に "()" が来る単語にマッチします。また、
\%(function\s\+\)\@<!\w\+
とすると直前に "function" と空白文字が来ない単語にマッチします。
\zs \ze との関係
\zs や \ze は肯定先読み/肯定後読みの省略形と考える事ができます。すなわち、
foo\zsbar\ze\baz
と
\%(foo\)\@<=bar\%(baz\)\@=
は同義になります。ただし、読み易さや処理速度を考えると可能ならば前者を使う方が良いでしょう。
Perl との比較
Vim の先読み/後読みは他の正規表現エンジンとは少し違う書き方をします。 例えば Perl の正規表現エンジンでは () でグループを作り、グループに対して先読み、後読みの指定をします。 対して Vim では、直前の文字、もしくはグループに対して先読み、後読みを指示する指定子があります。 Perl の書き方に慣れた人にとっては最初はわかりづらいかもしれませんが、慣れれば大した違いはありません。
Vim Perl
肯定先読み \%(pattern\)\@= (?=pattern)
否定先読み \%(pattern\)\@! (?!pattern)
肯定後読み \%(pattern\)\@<= (?<=pattern)
否定後読み \%(pattern\)\@<! (?<!pattern)
また、Vim の後読みは Perl と違い可変長パターンも扱えます。ただし後読みは少々重いので処理速度には注意が必要です。
--- 2022-12-26 20:56:31 +0900 ---
#使い方vv
#vimでデフォルトキーバインドを無効化する方法vv
nnoremap <C-l> <Nop>
inoremap <C-l> <Nop>
--- 2023-01-13 18:32:07 +0900 ---
#使い方vv
#vimでデフォルトキーバインドは次のファイルを参照vv
vim_keybinds.txt
--- 2023-01-13 19:09:26 +0900 ---
#使い方vv
#vimで書かれたhtml文書をブラウザで表示する方法vv
:r!python3 -c "import webbrowser as wb;wb.get('firefox').open_new_tab('file://'+'$(echo '%:p:r.html')')"
--- 2023-05-05 10:07:43 +0900 ---
#使い方vv
#vimでウィンドウ操作、分割、移動とかいろいろvv
#vimでquickfix-windowが開かれている時にウィンドウ分割を均等にする方法vv
preview-windowとquickfix-windowに対してはデフォルトで'winfixheight'、'wfh'、'equalalways'がオンになっているので、
分割されたウィンドウを均等にするには、これをオフにする必要がある。
:set nowfh
その後、Ctrl+W =で均等にできるようになる。
#--- 2022-12-23 14:42:04 +0900 ---
追加(quickfix-windowのとき均等にできなかったので、対応方法を追加)
--- 2023-06-27 10:17:04 +0900 ---
#使い方vv
#vimで移動してきた場所に戻る方法vv
jump-motions - <C-o>
vimで:help jump-motionsと打つとhelpが表示されます。
8. Jumps jump-motions
A "jump" is one of the following commands: "'", "`", "G", "/", "?", "n","N", "%", "(", ")", "[[", "]]", "{", "}", ":s", ":tag", "L", "M", "H" andthe commands that start editing a new file. If you make the cursor "jump"with one of these commands, the position of the cursor before the jump isremembered. You can return to that position with the "''" and "``" command,unless the line containing that position was changed or deleted.CTRL-O Go to [count] Older cursor position in jump list
(not a motion command).
{not in Vi}
{not available without the +jumplist feature}
<Tab> or CTRL-I <Tab>
CTRL-I Go to [count] newer cursor position in jump list
(not a motion command).
{not in Vi}
{not available without the +jumplist feature}
gg(topへ移動)やG(末尾へ移動)などへ移動(これをジャンプという)した後に、元いた場所に戻りたいことがあります。
ここで<C-o>(Ctrl+o)と打つ事でジャンプ元へ戻ります。
逆は<C-i> (Ctrl+i)
--- 2023-06-27 10:22:23 +0900 ---
#使い方vv
#vimでマーク機能の使い方vv
:marks mark一覧を表示する
m[a-zA-Z] カーソル位置をmarkする
`` 直前のマークへ移動
C-o 古いマークへ移動
C-i 新しいマークへ移動
`[a-zA-Z] 指定のマークに移動
'[a-zA-Z] 指定のマークの行頭に移動
:delmarks [a-zA-Z] マークの削除
:delmarks! マークの一括削除
--- 2023-07-01 14:11:38 +0900 ---
#使い方vv
#vimでスクロールする方法で忘れやすいコマンドvv
z+ [count]が無い時: 現在のウィンドウの最下行を最上行にして再描画する。カーソルはその行の、最初の非空白文字に合わせられる。[count]が有る時: ちょうど "z<CR>" と同じ。
z^ [count]が無い時: 現在のウィンドウの最上行を最下行にして再描画する。カーソルはその行の、最初の非空白文字に合わせられる。[count]が有る時: まず[count]行がウィンドウの最下行になるようにスクロールし、次にウィンドウの最上行になった行を最下行にして再描画する。カーソルはその行の最初の非空白文字に合わせられる。
z<CR> [count]行(省略時はカーソルのある行)をウィンドウの最上行にして再描画する。カーソルは行内の最初の非空白文字に置かれる。
zt "z<CR>" と同様だが、カーソルは同じカラムに留める。
z{height}<CR> ウィンドウを高さ{height}行に変更して再描画する。スクリーンの更新が非常に遅い時に、高さを減らすと有効である。物理的なスクリーンの高さよりも高くすることはできない。
z. [count]行(省略時はカーソルのある行)をウィンドウの中心にして再描画する。カーソルは行内の最初の非空白文字に置かれる。
zz "z." と同様だが、カーソルは同じカラムに留める。注意:caps-lockが有効になっていると、このコマンドは "ZZ" になり、バッファを書き出し終了してしまう。
z- [count]行(省略時はカーソルのある行)をウィンドウの最下行にして再描画する。カーソルは行内の最初の非空白文字に置かれる。
zb "z-" と同様だが、カーソルは同じカラムに留める。
z<Right> or zl z<Right>
zl スクリーンを[count]文字右へ移動する。従ってテキストは[count]文字左へスクロールする。これはwrapがオフの時にだけ働く。
z<Left> or zh z<Left>
zh スクリーンを[count]文字左へ移動する。従ってテキストは[count]文字右へスクロールする。これはwrapがオフの時にだけ働く。
zL スクリーンの幅の半分右へスクロールする。従ってテキストはスクリーンの幅の半分左へスクロールする。これはwrapがオフの時にだけ働く。
zH スクリーンの幅の半分左へスクロールする。従ってテキストはスクリーンの幅の半分右へスクロールする。これはwrapがオフの時にだけ働く。
zs カーソルのある位置がスクリーンの始まり(左側)に来るようにテキストを水平にスクロールする。これはwrapがオフの時にだけ働く。
ze カーソルのある位置がスクリーンの終わり(右側)に来るようにテキストを水平にスクロールする。これはwrap がオフの時にだけ働く。
--- 2023-11-02 10:38:21 +0900 ---
#使い方vv
#vimでpythonでローカルからリモートへクリップボードを転送する方法vv
$ :!python3 -c "import shlex,subprocess as subp, pyperclip as cb;cl_=cb.paste().encode('utf-8').decode('utf-8',errors='ignore');s_='ssh X@X.X.X.X';s1_='export DISPLAY=:0;echo \"'+cl_+'"|xsel -ib';ans_=subp.run(shlex.split(s_),input=s1_,capture_output=True,encoding='utf-8').stdout.split('\n')[9:];ans_='\n'.join(ans_);cb.copy(ans_);print(ans_)"
--- 2024-01-16 10:05:49 +0900 ---
#使い方vv
#vimで開いているファイルをリモートへ転送する方法vv
:let @+=expand("%:p")|!rsync -auvhAXP $(xsel -ob) -e'ssh -J XX@XXX.XXX.XXX.XXX,XX@XXX.XXX.XXX.XXX' XX@XXX.XXX.XXX.XXX:/XXX/XXX/XXX
--- 2024-05-31 10:50:18 +0900 ---
#使い方vv
#vimでvimの中のpythonでvimのコピーをシステムのクリップボードとtmuxのバッファにコピーする方法vv
@#長年トライをし続けてやっと解決した#@
$" vimのコピーをtmuxのバッファにコピーする
$command! PP :py3 import subprocess as subp,shlex,vim;a_=vim.eval("@\"");z_=subp.run(['tmux','set-buffer',a_.encode('utf-8')],capture_output=True,encoding='utf-8');zz_=subp.run(['xsel','-ib'],input=a_.encode('utf-8').decode('utf-8'),capture_output=True,encoding='utf-8');print('')
$" ------------------------------
$ pn -c "$imt;subp.run(shlex.split('vim ${HOME}/snipe.txt'));pr(cb.paste())" #pysni__
--- 2024-06-04 20:36:56 +0900 ---
