ビジュアルモードでテキストを選択した場合、選択したテキストをコマンドラインに挿入するにはどうすればよいですか?vim:選択したテキストをコマンドラインに挿入しますか?
たとえば、現在選択されているテキストを検索する場合は、y/<c-r>"
を使用できます。ただし、最初に選択したテキストをヤンクしないで行う方法はありますか?
編集:より良い例、選択範囲を拡大する、ビジュアルモード中に検索など:私は、選択したファイル名の一部を持っている、と私は、その名に付加新しいエディタで開きたい場合。
ビジュアルモードでテキストを選択した場合、選択したテキストをコマンドラインに挿入するにはどうすればよいですか?vim:選択したテキストをコマンドラインに挿入しますか?
たとえば、現在選択されているテキストを検索する場合は、y/<c-r>"
を使用できます。ただし、最初に選択したテキストをヤンクしないで行う方法はありますか?
編集:より良い例、選択範囲を拡大する、ビジュアルモード中に検索など:私は、選択したファイル名の一部を持っている、と私は、その名に付加新しいエディタで開きたい場合。
ビジュアルモードを有効にしてテキストを選択した後、/
を押して前方を検索し、<C-R>*
を押すと、選択したテキストがコマンドラインに挿入されます。
別の方法(少なくともLinuxでは)<S-Insert>
を押して、現在の選択内容をX11に挿入します(たとえば、firefoxで何かを選択し、他のアプリケーションで<S-Insert>
を選択してコピーすることもできます)。少なくともLinuxでは)。
特定の例では、/
コマンドの後にテキストを挿入すると、視覚的な選択肢が拡大して、次に何が検索されているかが表示されます。
編集:私はGVimを想定していました。視覚選択をX11選択バッファにコピーします(詳細は:help x11-selection
を参照)。
コンソールでVimを使用している場合は、Shift
を押しながらマウスで使用するテキストを選択してから<S-Insert>
を使用してそのテキストをコピーすることをお勧めします。コマンドライン。これはLinuxやおそらくOSXでも動作します。私はWindowsについては知らない、申し訳ありません。
vimの中から!commandを入力してもよいでしょう。コピー&ペーストではありませんが、sshを使用している場合は、少なくともあなたのバッファを表示させますあなたはあなたのコマンドを打ち込んでいます。
例:!それは本当にすべてあなたがしているものを環境に依存
を作る。..
あなたは窓からパテを使用している場合は、あなたが実際にそれからテキストを強調表示し、コピーすることができます(のように設定可能よくputty内に)、別のputtyセッションまたは別のウィンドウに貼り付けます(screenまたはtmuxを使用している場合)。
実際に箱に入っていてグラフィカルな環境であれば、コピー&の貼り付けはかなり簡単です(この位置にいないと思います)。
お手数ですが、ご迷惑をおかけして申し訳ございません。
申し訳ありませんが、どのように役立つか分かりません。私は、視覚モードで選択されたテキストに特に興味があります(マウスよりも視覚モードを使用するほうが簡単です)。 –
私はこの問題を解決するために視覚モードで:
を再マッピングしました。次のマッピングで、私は、コマンドライン、Bに選択したテキストを貼り付けることができます - 責任 - 左端の位置にカーソルを移動:
vnoremap : y:<C-r>"<C-b>
一つの小さな欠点は、私が見ることができます - :
を押すと、今の選択を解除します。
を使用して、コマンドラインに貼り付けることができます正規表現で使用する。
クレジット:ierton(このページ)によって考えに基づき
Vim search and replace selected text
" Escape special characters in a string for exact matching.
" This is useful to copying strings from the file to the search tool
" Based on this - http://peterodding.com/code/vim/profile/autoload/xolox/escape.vim
function! EscapeString (string)
let string=a:string
" Escape regex characters
let string = escape(string, '^$.*\/~[]')
" Escape the line endings
let string = substitute(string, '\n', '\\n', 'g')
return string
endfunction
" Get the current visual block for search and replaces
" This function passed the visual block through a string escape function
" Based on this - https://stackoverflow.com/questions/676600/vim-replace-selected-text/677918#677918
function! GetVisual() range
" Save the current register and clipboard
let reg_save = getreg('"')
let regtype_save = getregtype('"')
let cb_save = &clipboard
set clipboard&
" Put the current visual selection in the " register
normal! ""gvy
let selection = getreg('"')
" Put the saved registers and clipboards back
call setreg('"', reg_save, regtype_save)
let &clipboard = cb_save
"Escape any special characters in the selection
let escaped_selection = EscapeString(selection)
return escaped_selection
endfunction
" Start the find and replace command across the entire file
vmap <leader>z <Esc>:%s/<c-r>=GetVisual()<cr>/
" When in visual mode,
" before command mode is entered by using :
" Put the contents of any selected text into
" the default register
" leave the text highlighted.
" Based on ierton - https://stackoverflow.com/questions/4878980/vim-insert-selected-text-into-command-line
vnoremap : "pygv:
"Map ctrl-P to paste escaped contents of default register in command mode
" Based on bryan kennedy - https://stackoverflow.com/questions/676600/vim-search-and-replace-selected-text
cnoremap <C-P> <c-r>=GetVisual()<cr>
から取られたコードのほとんどは私が解決策を見つけました。 「:」の代わりに「:<」「」と表示されます。だからあなたはいつものようにコマンドを書くためにこれを消去する必要があります。 選択したテキストに展開するには< C-r> *がうまくいきます。
vnoremap <M-8> :<BS><BS><BS><BS><BS>NGrep <C-r>*<CR>
あなたはそれだけで< CR>を末尾の削除起動する前にコマンドを編集したい場合。
残念ながら、X11が利用可能な場合(OSX上やSSH上では動作しないなど)にのみ動作します。ただし、検索の場合はまったく同じことをしないというのは良い点です。私は良い例で私の質問を更新しました。 –
David、SSHを使って作業するとき、私は「シフト・マウスとシフト・インサートで選択する」テクニックを使っています:)それについて考えると、Vimだけで(外部の助けなしに)バッファから何かをコマンドラインはレジスタを介して行われます。あなたの質問は、これを避ける方法でした。その答えは、オペレーティングシステムやグラフィックス環境の設備にあります。シフトインサートは1つです。 –
あなたは「Vimだけで(外部の助けなしに)バッファからコマンドラインに何かをコピーすることができるのはレジスタを介してです」というのはなぜですか? –