239

Vimで単語をすばやく引用/引用解除し、引用符を変更(例:から)するにはどうすればよい'です"か?私はsurround.vimプラグインについて知っていますが、Vimだけを使用したいと思います。

4

18 に答える 18

303

Surround.vim が最も簡単な答えになるでしょう。本当にそれを使用したくない場合は、できることの例をいくつか示します。必ずしも最も効率的というわけではありませんが、それが Surround.vim が作成された理由です。

  • 一重引用符を使用して単語を引用する
    ciw'Ctrl+r"'
    • ciw- カーソルが置かれている単語を削除し、挿入モードで終了します。
    • '- 最初の引用を追加します。
    • Ctrl+r""-最後のヤンク/削除とも呼ばれるレジスタの内容を挿入します。
    • '- 締めの引用を追加します。

  • 一重引用符で囲まれた単語を引用解除する
    di'hPl2x
    • di'- 一重引用符で囲まれた単語を削除します。
    • hP- カーソルを左に 1 か所 (最初の引用の上) に移動し、削除したばかりのテキストを引用の前に置きます。
    • l- カーソルを 1 つ右に移動します (開始引用符の上)。
    • 2x- 2 つの引用符を削除します。

  • 一重引用符を二重引用符に変更する
    va':s/\%V'\%V/"/g
    • va'- 引用された単語と引用符を視覚的に選択します。
    • :s/- 交換を開始します。
    • \%V'\%V- 視覚的に選択された領域内にある単一引用符のみに一致します。
    • /"/g- それらをすべて二重引用符に置き換えます。
于 2010-01-27T15:21:40.117 に答える
39

役立つ可能性のあるマッピングを次に示します。

:nnoremap <Leader>q" ciw""<Esc>P
:nnoremap <Leader>q' ciw''<Esc>P
:nnoremap <Leader>qd daW"=substitute(@@,"'\\\|\"","","g")<CR>P

mapleader変数を変更していない場合は、\q" \q'またはを使用してマッピングをアクティブにし\qdます。カーソルの下の単語の周りに二重引用符を追加し、カーソルの下の単語の周りに一重引用符を追加し、カーソルの下の単語の周りに引用符を削除します。

于 2010-01-27T15:40:40.657 に答える
29

他のコマンドに加えて、これは行内のすべての単語を二重引用符で囲みます(コメントに従って)

:s/\(\S\+\)/"\1"/

または、バックスラッシュの数を減らしたい場合\vは、パターンの先頭に (非常に魔法の) 修飾子を配置できます

:s/\v(\S+)/"\1"/
于 2010-01-27T20:00:22.813 に答える
13

VSCodeVim、Neovim、および Macvim のユーザーは、次のことができます。

vwS"

  • "ラップしたいものに置き換えることができます。
  • w他の選択演算子に置き換えることができます
于 2018-06-04T19:50:47.473 に答える
6

このための組み込みの vim コマンドはわかりませんが、最初の ' または " に立っている場合は、' から " に変更し、"r"f'r"から ' に変更するために使用できます。このコマンドは、カーソルの下にある文字を ', に置き換えます。次へと進みます」。r'f"r'r'f"

于 2010-01-27T15:07:29.407 に答える
6

引用符の追加

私は自分の中でこの迅速で汚い関数を使い始めました.vimrc:

vnoremap q <esc>:call QuickWrap("'")<cr>
vnoremap Q <esc>:call QuickWrap('"')<cr>

function! QuickWrap(wrapper)
  let l:w = a:wrapper
  let l:inside_or_around = (&selection == 'exclusive') ? ('i') : ('a')
  normal `>
  execute "normal " . inside_or_around . escape(w, '\')
  normal `<
  execute "normal i" . escape(w, '\')
  normal `<
endfunction

だから今、私は必要なものを視覚的に選択し(通常は経由でviw- word 内で視覚的に選択します)引用符で囲みQ、二重引用符を押すかq、単一引用符を押します。

引用符の削除

vnoremap s <esc>:call StripWrap()<cr>

function! StripWrap()
  normal `>x`<x
endfunction

vim-textobj-quotesを使用して、vim が引用符をテキスト オブジェクトとして扱うようにします。これは、私ができることを意味します(引用符の周囲をvaq視覚的に選択します。これにより、最も近い引用符が見つかり、それらが視覚的に選択されます。(これはオプションであり、 のようなことを行うことができます)。次に、 を押して、選択範囲から引用符を取り除きますf"vwws

見積もりの​​変更

接吻。引用符を削除してから引用符追加します。たとえば、一重引用符を二重引用符に置き換えるには、次の手順を実行します: 1. 一重引用符を削除: vaqs、2. 新しい引用符を追加: vwQ.


于 2015-06-06T17:42:52.833 に答える
3

単語を引用または引用解除するために使用できるいくつかの簡単なマッピングを次に示します。

" 'quote' a word
nnoremap qw :silent! normal mpea'<Esc>bi'<Esc>`pl
" double "quote" a word
nnoremap qd :silent! normal mpea"<Esc>bi"<Esc>`pl
" remove quotes from a word
nnoremap wq :silent! normal mpeld bhd `ph<CR>
于 2016-05-04T22:11:54.380 に答える
1

.vimrc で nnoremap を使用しています

単語を一重引用符にするには:

nnoremap sq :silent! normal mpea'<Esc>bi'<Esc>`pl

引用符を削除するには (二重引用符でも機能します):

nnoremap qs :silent! normal mpeld bhd `ph<CR>

覚えておくべき規則: 'sq' = 一重引用符。

于 2011-12-21T15:20:29.567 に答える
1

選択したテキスト ブロックを一重引用符で囲むビジュアル モード マップの例:

:vnoremap qq <Esc>`>a'<Esc>`<i'<Esc>
于 2019-04-04T15:34:32.423 に答える
0

これはどう?

 :%s/\'/"/g
于 2010-01-27T15:08:46.527 に答える