Posted: 2025-07-01
| Categories:
vim
| Tags:
vim
概要 Neovimでコピー(yy)した内容を貼り付け(p)ようとしたところ、意図しないテキストが挿入されるという現象に遭遇しました。
本記事では、OSC52ベースのクリップボード連携を導入していた際にこの問題に出会い、どのように原因を特定し、どのように理想の挙動を取り戻したかを記録します。
🐞 課題:yy でコピーしたのに p で貼れない? Neovim上で yy で行をコピーし、その後 p で貼り付けようとしたところ、**貼り付けられたのは直前の yy ではなく、古い内容(またはシステムクリップボードの内容)**でした。
この問題は特に以下の構成で再現しました:
macOS (WezTerm) tmux をホスト側とコンテナ内両方で利用 Neovimで OSC52 を使った vim.g.clipboard を定義 🔍 調査ログ 1. レジスタの状態を確認 Neovimで以下のコマンドを使って、各レジスタの状態を確認:
2. p のマッピングを確認 結果は no mapping found → p はデフォルト挙動のはず。
3. vim.opt.clipboard の影響を再確認 設定では以下を定義していた:
vim.opt.clipboard:append({ "unnamedplus" })
これは p を “+p に読み替える効果を持つ可能性があり、貼り付け元が無名レジスタではなく、+ レジスタになっていた。
4. vim.g.clipboard による外部プロバイダ使用 vim.g.clipboard = {
name = "osc-copy",
copy = {
["+"] = 'osc copy -d ' .. tty,
["*"] = 'osc copy -d ' .. tty,
},
paste = {
["+"] = 'osc paste -d ' .. tty,
["*"] = 'osc paste -d ' .. tty,
},
cache_enabled = 0,
}
この設定により、Neovimは “+ や “* レジスタをすべて osc に委ねており、p の貼り付け対象が “0(ヤンクレジスタ)ではなくなっていた。
(yyによるヤンクは正しく機能していたが、pによる貼り付け時に問題が起きていた)
Read more... Posted: 2023-05-26
| Categories:
vim
| Tags:
vim
プラグインの状況を確認する コマンドモードで :checkhealth と入力。
neovimでカラフルにする :checkhealthで次のエラーが出ていた
tmux
- OK escape-time: 1
- OK focus-events: on
- $TERM: tmux-256color
- WARNING Neither Tc nor RGB capability set. True colors are disabled. ⤷ 'termguicolors' won't work properly.
- ADVICE:
- Put this in your ~/.tmux.conf and replace XXX by your $TERM ⤷ outside of tmux:
set-option -sa terminal-features ',XXX:RGB'
- For older tmux versions use this instead:
set-option -ga terminal-overrides ',XXX:Tc'
いくつか設定に修正が必要だった。
Read more... Posted: 2023-05-26
| Categories:
vim
| Tags:
vim
とりあえず大文字の「K」を押す
| K | カーソルしたのキーワードにジャンプ |
ref-viewerの内部ではKに加えて以下のキーマップが利用できる。要はKやEnterキーで読み進めて、<C-t> か <C-o> で戻ることができる。
| Enter | カーソル下のキーワードにジャンプ |
| ダブルクリック | 同上 |
| <C-j> | 同上 |
| <C-t> | 前のページに戻る |
| <C-o> | 同上 |
| <C-i> | 次のページに進む |
Read more... Posted: 2022-09-08
| Categories:
vim
| Tags:
vim
vimというよりはneovimの話になる。
rafi/vim-config vim用のconfigのレポジトリ 個人というよりContributorsが多数いる非常に多機能なneovimの設定を目指したレポジトリ。
rafi/vim-config: Lean mean Neovim machine, carefully crafted with Use with latest Neovim.
エラーメッセージが出ている状態だと非常にもっさりする 初回インストール時に大量のプラグインがインストールされる(好みが分かれそうなポイント) インストール ~/.config/nvim 配下になるようにgit cloneすれば良い。 私はghqを使っているので
ghq get https://github.com/rafi/vim-config.git
cd ~/.config/
ln -s ~/workspace/git/github.com/rafi/vim-config ./nvim
現在の管理方針 2026年時点では、Neovim 本体の設定は rafi/vim-config を upstream として使い、個人差分は別リポジトリに分ける方針にしている。
~/.config/nvim~/.config/nvim/lua/config個人設定用リポジトリ tin-machine/nvim_config ~/.config/nvim/lua/plugins個人プラグイン設定用リポジトリ tin-machine/nvim_plugins ~/.config/nvim/lazyvim.json:LazyExtras で有効化した extras の状態rafi 側の README でも、現在の前提は Neovim 0.11 系で、ユーザー拡張は lua/config と lua/plugins に置く構成になっている。
そのため、Ubuntu Desktop でも rafi 本体を直接 fork して改造するより、upstream の lua/rafi 配下には触らず、個人差分だけを別 repo で symlink する方が追従しやすい。
Read more... Posted: 2021-07-25
| Categories:
cheatsheet
| Tags:
cheatsheet ,
vim
rafi/vim-config rafi/vim-config: Lean mean Neovim machine, carefully crafted with Use with latest Neovim.
Snacks Explorer(ファイラ) 2026年時点では rafi/vim-config / LazyVim の現行寄りに合わせて、ファイラは Neo-tree ではなく Snacks Explorer を使う。
ローカルでは lazyvim.json に lazyvim.plugins.extras.editor.snacks_explorer を明示し、個人プラグイン側の Snacks Explorer 無効化 override は削除する。
効果 キー Snacks Explorerを開く(root dir) ;e / Space e / Space fe Snacks Explorerを開く(cwd) ;E / Space E / Space fE 現在のファイルをファイラで表示 ;a 現在のファイルをファイラで表示(cwd) ;A ファイルを開く l / Enter 新しいタブで開く st 上のディレクトリに移動 Backspace ファイル/ディレクトリ作成 a ツリーを閉じる h grep gr ファイル検索 gf 水平分割で開く sv 垂直分割で開く sg プレビューのオンオフ K リネーム r 削除 d ファイル移動 m コピー c ペースト p パスをヤンク y システムアプリで開く o 更新 u
Lazygit 効果 キー gitのルートで開く Space , tg カレントディレクトリで開く Space , tg
キーバインド 効果 省略記法 文字コードを確認 :set fileencoding 保存する文字コードを変更 :set fileencoding=utf-8 前ひらいたバッファに戻る <C-^> ( 数字の6のやつ )検索で行きすぎたら戻る ; 変更してきた箇所に戻る g; 変更してきた箇所に進む g, 次のワードの頭に w 次のワードの最後に e 行頭にいきなり追加 I 上書きモード R ワード前のスペース有りヤンク yaw スペース無しヤンク yiw 文字を検索して上書き ct<key>ワード削除 diw 引数をまるっと削除 di( functionの記述をまるっと削除 di{ カーソル上の単語を消す diw カーソル上の単語を消して挿入モード diw “"(ダブルコーテーション)で囲まれた文字列を消す di” 新規ファイルを開く(横分割) :new 新規ファイルを開く(縦分割) :vnew 新規ファイルを開く(タブ) :tabnew 次のタブに切替 gt 前のタブに切替 gT これは % がカレントディレクトリ、 :h が親ディレクトリの意味 :e %:h<Tab>ウィンドウを入れ替える。 <C-w>x縦に最大化 <C-w>_横に最大化 <C-w>パイプウィンドウの大きさを揃える <C-w>=ウィンドウの幅を増やす <C-w>>ウィンドウの幅を減らす <C-w><ウィンドウの高さを増やす <C-w>+ウィンドウの高さを減らす <C-w>-縦に最大化 <C-w>_横に最大化 <C-w>パイプアクティブなウインドウを左に移動 <C-w>hアクティブなウインドウを下に移動 <C-w>jアクティブなウインドウを上に移動 <C-w>kアクティブなウインドウを右に移動 <C-w>lアクティブなウインドウそのものを左に移動 <C-w>Hアクティブなウインドウそのものを下に移動 <C-w>Jアクティブなウインドウそのものを上に移動 <C-w>Kアクティブなウインドウそのものを右に移動 <C-w>Lアクティブなウインドウを次に移動 <C-w>wバッファリストのファイル名をリスト表示 :buffers バッファリストの指定したバッファを開く :buffer :b バッファリストの次のバッファを開く :bnext :bn バッファリストの前のバッファを開く :bprevious :bp バッファリストのすべてのバッファをウィンドウを開く :ball :ba バッファリストにバッファを追加 :badd :bad バッファリストからバッファを削除 :bdelete :bd バッファリストの最初のバッファを開く :bfirst :bf バッファリストの最後のバッファを開く :blast :bl バッファリストの次の変更済みバッファを開く :bmodified :bm バッファを閉じる :bd 新規タブ :tabedit {count}で指定した番号のタブへ移動 :tabnext :tabn {count}gt 次のタブへ移動 :tabnext :tabn gt 前のタブへ移動 :tabprevious :tabp gT 現在、以外のタブを全て閉じる :tabo 開いてるファイルを削除 :call delete(expand(’%’)) 数値をインクリメント、デクリメントする C-a, C-x (ノーマルモード) 前に変更した場所へカーソルを移動する g; (ノーマルモード) パラグラフ削除 dap (ノーマルモード) プラグイン、モジュール 一覧 :scriptnames deinプラグインのアップデート :call dein#update() deinでエラーが起きtが時 :call dein#clear_state() Snacks Explorerを開く :lua Snacks.explorer() ファイルの再読込 :e ファイルを書き込んでexitする :x ショートカット一覧 :map
LSP( neovim rafi/vim-config の設定 20240630時点)のキーバインド rafi/vim-config: Lean mean Neovim machine, carefully crafted with Use with latest Neovim.
Read more... Posted: 2021-07-25
| Categories:
vim
| Tags:
vim
開いているファイルの文字コードの確認 デフォルトの文字コードをUTF8にする set encoding=utf-8
set fileencodings=utf-8
vim-refでriを検索する vim-refはRubyに限らずvimでリファレンスを参照するプラグイン、そこからRubyのリファレンス参照コマンドのriを使うプラグインが vim-ref-ri
[[Uniteを使ってriを検索できるvim-ref-riというプラグインを作った|http://yuku-tech.hatenablog.com/entry/20120429/1335628327] 使い方は簡単。vim-refとして検索するなら
:Ref ri NAME
Uniteインタフェースでインクリメンタルに検索したいなら
:Unite ref/ri
と実行する
vim-refで辞書を引く ※ 一通り、動作するように設定できてから気づいた…
これは、tmuxで範囲を選択し、翻訳できた方が汎用性が広い…
などとして、vim-refにalcが定義されていた時代もあったのだが、アルクから指摘があり、コードから削除した背景があったようだ
今のvim-refは webdictというソースに変更され、これを設定することで複数ソースに対応している(上記URLのすぐ次のエントリで対応している)
設定方法はvim-refの環境を整える を参考にした
"webdictサイトの設定
let g:ref_source_webdict_sites = {
\ 'je': {
\ 'url': 'http://dictionary.infoseek.ne.jp/jeword/%s',
\ },
\ 'ej': {
\ 'url': 'http://dictionary.infoseek.ne.jp/ejword/%s',
\ },
\ 'wiki': {
\ 'url': 'http://ja.wikipedia.org/wiki/%s',
\ },
\ }
"デフォルトサイト
let g:ref_source_webdict_sites.default = 'ej'
"出力に対するフィルタ。最初の数行を削除
function! g:ref_source_webdict_sites.je.filter(output)
return join(split(a:output, "\n")[15 :], "\n")
endfunction
function! g:ref_source_webdict_sites.ej.filter(output)
return join(split(a:output, "\n")[15 :], "\n")
endfunction
function! g:ref_source_webdict_sites.wiki.filter(output)
return join(split(a:output, "\n")[17 :], "\n")
endfunction
nmap <Leader>rj :<C-u>Ref webdict je<Space>
nmap <Leader>re :<C-u>Ref webdict ej<Space>
vimのリストいろいろ 2007-01-22 - 窓の外に出てみれば
リストいろいろ
Read more...