何Vimコマンドとして表示することができます引用符で囲む場合に使用される/unquoteかがでしょうか。

StackOverflow https://stackoverflow.com/questions/2147875

  •  23-09-2019
  •  | 
  •  

質問

どのように私はすぐに引用/unquote言葉の変化を引用例から '" にVim?知っての サラウンド.vim プラグインが思いった、状況に応じた使い分けVim.

役に立ちましたか?

解決

サラウンド.vimではのおも簡単に答えます。の場合は真のセットを使用で詳しくご紹介しますために何ができる。必ずしも最も効率的なものはそのサラウンド.vimでした。

  • 見積もりの言葉は、シングルクォーテーション
    ciw'Ctrl+r"'
    • ciw -削除の単語にカーソルがたすことができず、挿入モードになります。
    • ' -すべての料金プランをお見積させていただきます。
    • Ctrl+r" インフォメーションの内容 " 登録は、別名前のヤンク/削除します。
    • ' -追加の閉会にお見積させていただきます。

  • Unquote、言葉に囲まれたシングルクォーテーション
    di'hPl2x
    • di' -削除に囲まれたシングルクォーテーション.
    • hP 移動カーソルを左に一(上の見積もり)のテキスト削除される前にお見積させていただきます。
    • l 移動カーソルを右に一(上の引用符)を入力します。"
    • 2x -削除になります

  • 変化のシングルクォーテーションをダブルクォート
    va':s/\%V'\%V/"/g
    • va' -視覚的に選択し、引用した語になります
    • :s/ スタートに交換できます。
    • \%V'\%V み合シングルクォーテーション内の視覚的に選択される。
    • /"/g -することになすべてのダブルクォート.

他のヒント

  

タグの単一引用符を使用して、単語を引用      

ciw'Ctrl+r"'

私はこのようにそれを行うすることは簡単だった。

ciw '' Esc P

ここに助けることができるいくつかのマッピングがあります:

:nnoremap <Leader>q" ciw""<Esc>P
:nnoremap <Leader>q' ciw''<Esc>P
:nnoremap <Leader>qd daW"=substitute(@@,"'\\\|\"","","g")<CR>P
あなたはmapleader変数を変更していない場合は、

は、その後、\q"\q'または\qdとのマッピングを有効にします。彼らは、カーソルの下の単語の前後に二重引用符を追加し、カーソルの下の単語の周りの単一引用符は、それぞれカーソルの下の単語の周りに任意の引用符を削除します。

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

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

あなたはバックスラッシュの数を減らしたい場合、あなたはパターンの先頭に修飾\v(非常に-魔法)を置くことができますか。

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

包み込むシングルクォート(例えば) ciw'<C-r>"'<esc> 作品が 繰り返し います。う:

ciw'<C-r><C-o>"'<esc>

その内容をデフォルトの登録"を文字通り".現することができ . 任意の単語をラップします。詳細を見 :h[elp] i_ctrl-r に関する詳細テキスト-オブジェクトで :h text-objects

ソース: http://vimcasts.org/episodes/pasting-from-insert-mode/

マクロを記述方法

  1. プレス qq 記録にq登録し利用"q"のマークとしてショートカット記憶"引用").

  2. プレス シフト + b カーソルを移動前の単語

  3. プレス i タイプ ' (シングルクォーテーション)

  4. プレス esc を押す e 移動単語の末尾

  5. プレス a を押す ' 再度サラウンドに検索したいキーワードます。

  6. 最後にプレス q 記録で q 登録できます。

使い方は:

  1. カーソルを移動で任意の言葉です。
  2. プレス @q 囲は、検索したいキーワードます。
  3. プレス @@ したい場合は繰り返しでも言葉です。

ます。 step 4 と好きなものを{線、ワードで見つけた文字など}.入 vim variables.vimrc 繰り返し下さい。

私は、このための任意の組み込みvimのコマンドを知っていますが、「最初の」または上に立つならば作品「に 『からの変更へとr"f'r"』へ」から変更にr'f"r'を使用しないでください。文字が何であれ、コマンドr'の置き換えを「「、およびf"の動きとカーソルの下のあなた前方の横へ。

ユーザーのVSCodeVimいます

vwS"

  • 交換可能です " あいラップです。
  • 交換可能です w その他の選択オペレーター

追加の引用

を使い始めるこのク汚れた機能マ .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 -視覚的選択 内部の言葉 に引用符を押し Q のための二重引用符、またはプレス q のためのシングルクォーテーション.

引用符を除去す

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

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

使ってい vim-textobj-引用符 そのvim扱い引用符としてテキストオブジェクト。これによって全然違います vaq (視覚的選択 周辺に引用符.これは、最寄りの見積りを視覚的に選択します。(このオプションできるため、次のように f"vww).そのプレ sストリップ の引用にすることができます。

見積書の変更

ドキドキするでしょう。I 引用符を削除 その 引用符に追加.例えば、交換単一引用符と二重引用符で囲いを行うステップ1.除去シングルクォーテーション: vaqs, であること、2.新規追加を引用: vwQ.


ここで言葉を引用し、UNQUOTEするために使用することができますいくつかの簡単なマッピングがあります:

" '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>

私は自分の.vimrc

でnnoremapを使用しています

単一引用する単語ます:

nnoremap sq :silent! normal mpea'<Esc>bi'<Esc>`pl
引用符(二重引用符の作品だけでなく)を削除するには、

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

覚えておくべきルール: 'SQ' =単一引用符を

VIM awsomelyそれをしないをvscodeため。あなたがvscodeを使用しない場合には、一つののvim-サラウンドに基づいています。

  

いくつかの例:

     

引用符の内側にカーソルで「テスト」は 『試験「で終わるために』」CSを入力します。

     

試験で終わるために「引用符型DS内のカーソルで「テスト」

     引用符内のカーソルで

「試験」まで終了する> CS」Tを入力して123を入力し   <123>試験

     で終了する

ワードテストタイプysaw上のカーソルを用いた試験)(試験)

これはどう?

 :%s/\'/"/g

私はこれを行うスクリプトを書きました

function! WrapSelect (front)
    "puts characters around the selected text.
    let l:front = a:front
    if (a:front == '[')
        let l:back = ']'
    elseif (a:front == '(')
        let l:back = ')'
    elseif (a:front == '{')
        let l:back = '}'
    elseif (a:front == '<')
        let l:back = '>'
    elseif (a:front =~ " ")
        let l:split = split(a:front)
        let l:back = l:split[1]
        let l:front = l:split[0]
    else
        let l:back = a:front
    endif
    "execute: concat all these strings. '.' means "concat without spaces"
    "norm means "run in normal mode and also be able to use \<C-x> characters"
    "gv means "get the previous visual selection back up"
    "c means "cut visual selection and go to insert mode"
    "\<C-R> means "insert the contents of a register. in this case, the
    "default register"
    execute 'norm! gvc' . l:front. "\<C-R>\""  . l:back
endfunction
vnoremap <C-l> :<C-u>call WrapSelect(input('Wrapping? Give both (space separated) or just the first one: '))<cr>
その後、使用することを

、ちょうどハイライト何か、ヒット制御リットル、および文字を入力します。それは機能が知っている文字の一つだ場合、それは正しい終端文字を提供します。そうでない場合は、両側に挿入するために同じ文字を使用します。

Surround.vim以上ただこれ以上行うが、これは私のニーズに十分であったことができます。

ビジュアルモードのマップの例では、テキストの選択したブロックの周りに単一引用符を追加します:

:vnoremap qq <Esc>`>a'<Esc>`<i'<Esc>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top