0

Tim Pope によるプラグインでこのプル リクエストを行いました。vim-markdown1 つのバグと 1 つの不足している機能があることを除いて、すべてが機能します。この質問はバグに関するものです。

しかし、最初にプル リクエストについて簡単に説明します。

  • 自動リストを実装します
  • ユーザーがマークダウンリストにいるときに を押す<CR>と、キャレットが行のどこにあるかに応じて、新しいリスト項目が追加される場合があります (または、キャレットが行の途中にある場合は行が分割されます)。

問題は、キャレットが行末にあることを検出できないことです。キャレットが最後の 2 文字のいずれかにある場合、私が得ることができる最も近い方法は、新しいリスト項目を追加することでした。問題は、挿入モードでキャレットが最後の文字の前または後にある場合、通常モードで最後の文字がオンになるため、キャレットが最後の文字の前または後にあるかどうかを検出できないことです挿入モードの文字。

col('.')col('$')などのさまざまな組み合わせを使用してlen(getline('.'))みましたが、試したものはすべて同じ結果になりました。挿入モードで最後の文字にあるときに、キャレットの前後の位置を区別できません。

では、挿入モードでキャレットが行の最後の文字の後にあるかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

1

で挿入モードを終了すると<Esc>、カーソルは常に左に移動するため (1 列目以外)、必要な条件はこれだけです。私はこの機能を使用します:

function! IsCursorAtEndOfNonEmptyLine()
    return col('.') == col('$') && col('.') != 1
endfunction

このようなマッピングから:

inoremap <silent> <F9>   <C-\><C-O>:call Foo()<CR>
于 2013-10-23T14:08:39.353 に答える