5

.vimrcに次のコマンドがあります。

vip:normal @g<CR>

このようにバッファに入力してレジスタ'g'を設定すると、次のように機能します。

qg<CR>jq

:registersと入力すると、次のように表示されます。

--- Registers ---

"g   ^Mj

その後、@ gと入力するとキャリッジリターンが返され、カーソルが次の行に移動します。^Mは特別な色で表示されます。

ただし、vimrcでsetregコマンドを使用するときに、@ gと入力しても、何も起こりません。

call setreg('g','^Mj')

:registersと入力すると、次のように表示されます。

--- Registers ---

"g   ^Mj

^Mは特別な色ではありません。

.vimrcには次のものがあります。

map <CR> :call MyFunction<CR>

レジスタに格納したいキャリッジリターンは、MyFunctionを実行することです。setregを使用せずに手動でバッファを埋める限り、MyFunctionは完全に呼び出されます。

どこが間違っているのですか?私のプラットフォームはLinuxです。

4

3 に答える 3

10

あなたが探している、"\<cr>"または"\r"

call setreg('g',"\<cr>j")
call setreg('g',"\rj")

またはもっと簡単に

let @g = "\<cr>j"
let @g = "\rj"

さらにヘルプが必要な場合

:h expr-quote
:h let-@
于 2011-12-07T20:44:46.693 に答える
5

原則として、vim スクリプトの行内に ASCII 制御文字 (0x20 未満) を含めないようにします。十分な行がない場合に再度読み取るとvimrc、vim は不適切な行終端パターンを検出する可能性があります (mac?)

文字列リテラルに anr2char(13)を含めるために使用します。^M

call setreg('g', nr2char(13).'j')

それ以外の場合は、sidyl がコメントで説明したように、挿入モードで CTRL-V を使用して制御文字を入力できます。

于 2011-12-07T16:24:37.737 に答える