849

Vim にすべての空白を文字として表示させる方法が見つかりません。私が見つけたのは、タブ、末尾のスペースなどに関するものだけでした.

4

23 に答える 23

747

他の人が言ったように、あなたは使うことができます

:set list

これは、と組み合わせて

:set listchars=...

非表示の文字を表示します。現在、空白を表示
するために使用できる明示的なオプションはありませんが、listcharsでは、空白以外のすべてに表示する文字を設定できます。たとえば、私のものは次のようになります

:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<

だから、今、あなたが使用した後

:set list

他のものとして明示的に示されていないものはすべて、実際には、単純な古い空白です。

いつものように、どのように機能するかを理解するlistcharsには、ヘルプを使用してください。表示できる文字(たとえば、末尾のスペースなど)とその方法に関する優れた情報を提供します。

:help listchars

編集中に変更を簡単に確認できるように、トグルを追加すると役立つ場合があります(ソース:VIM:set list!.vimrcのトグルとして):

noremap <F5> :set list!<CR>
inoremap <F5> <C-o>:set list!<CR>
cnoremap <F5> <C-c>:set list!<CR>
于 2009-11-04T18:30:28.607 に答える
330

パッチ7.4.710 以降、listcharsを使用してスペースの代わりに表示する文字を設定できるようになりました!

:set listchars+=space:␣

したがって、すべての空白文字を文字として表示するには、次のようにします。

:set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
:set list

終了したら、非表示の文字を非表示にするには、次のようにします。

:set nolist

メーリング リストでのディスカッション: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q

于 2015-04-22T03:46:19.227 に答える
272

:set list有効にする。

:set nolist無効にします。

于 2009-11-04T19:43:48.023 に答える
204

ここでの他の回答はより包括的だと思いますが、タブとスペースを視覚的に区別するために通常使用するトリックを共有すると思いました。

:syntax on
:set syntax=whitespace

これらは、Whitespace プログラミング言語の構文強調表示規則です。タブは緑で、スペースは赤で表示されます。:)

他の多くの回答で言及されているように組み合わせることができます:set listが、タブは緑のハイライトなしで ^I として表示されますが、スペースは赤で表示されます。

于 2013-09-25T18:27:55.757 に答える
101

:set listすべての空白を文字として表示します。スペース以外はすべて、通常の状態とは異なって見えます。つまり、まだ普通の古いスペースが表示されている場合、それは本当に普通の古いスペースです:)

于 2009-11-04T18:20:22.647 に答える
76

設定した場合:

:highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none

スペースの検索を実行すると、すべてのスペース文字が下線文字として表示されます。

このコマンドは、スペースの「アンダースコア」を切り替える便利な機能で使用できます。

set hls
let g:HLSpace = 1
let g:HLColorScheme = g:colors_name
function ToggleSpaceUnderscoring()
    if g:HLSpace
        highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none
        let @/ = " "
    else
        highlight clear
        silent colorscheme "".g:HLColorScheme
        let @/ = ""
    endif
    let g:HLSpace = !g:HLSpace
endfunction

次のコマンドを使用して、関数をショートカット キーにマップします。

nmap <silent> <F3> <Esc>:call ToggleSpaceUnderscoring()<CR>

注意:カラースキームが設定された後、vimrc で関数を定義してください。

于 2009-11-04T18:33:03.243 に答える
47
于 2011-06-08T13:18:45.913 に答える
31

私はこれを使います

/\s
:set hlsearch

空白を強調します。すべての空白を検索し、ハイライトを有効にしてそれらを飛び出させます。ただし、特殊文字は出力されません。

于 2011-11-26T17:18:10.437 に答える
25

空白で「 」文字を意味する場合、私の提案は単なる検索/置換です。他の人が示唆しているように、印刷されていない文字を で構成されている可視文字にset list変更します。listchars

スペースを他の文字として明示的に表示するには、以下のようなものがうまくいくはずです:

:%s/ /█/g

次に、変更を元に戻すだけで元に戻ります。

(█ を取得するために、私はこの正確なキー シーケンスを押しました: :%s/ /CTRL-KFB/g)

于 2009-11-04T20:50:51.233 に答える
16

以下のコードは Christian Brabandt の回答に基づいており、OP が望んでいることを実行しているようです。

function! Whitespace()
    if !exists('b:ws')
        highlight Conceal ctermbg=NONE ctermfg=240 cterm=NONE guibg=NONE guifg=#585858 gui=NONE
        highlight link Whitespace Conceal
        let b:ws = 1
    endif

    syntax clear Whitespace
    syntax match Whitespace / / containedin=ALL conceal cchar=·
    setlocal conceallevel=2 concealcursor=c
endfunction

augroup Whitespace
    autocmd!
    autocmd BufEnter,WinEnter * call Whitespace()
augroup END

これらの行をあなた~/.vimrcに追加し、新しい Vim セッションを開始して、まだ不完全な魔法が起こるのを見てください。

デフォルトの色を自由に編集して、文字を隠してください。


警告:*FuncBodyいくつかの言語の構文グループの何かによって、中央のドットが表示されなくなります。そのソリューションをより信頼できるものにする方法を(まだ?)知りません。

于 2014-10-23T13:09:05.047 に答える
16

スペースを強調表示するには、検索するだけです。

/<スペース>

ノート:

  • <space> は、スペース文字を入力することを意味します。
  • :set hlsearch で検索結果の強調表示を有効にする

    スペースとタブをハイライトするには:

    /[<スペース><タブ>]

    ハイライトを削除する簡単な方法は、他のものを検索することです: /asdf

    (ランダムな文字の短いリストを入力するだけです)

  • 于 2012-07-15T11:12:57.777 に答える
    11

    この質問に対する他のすべての回答には不満がありました。スペース文字を有用な方法で強調しているものがないからです。スペースを文字として表示することは、タブとスペースを混在させることが有害な空白形式の言語で特に役立ちます。

    私の解決策は、タブを表示し、複数のスペースに下線を引くことです。mrucci's answerthis tutorialから借りています。構文の強調表示を使用するため、永続的です。

    set list listchars=tab:\|\ 
    highlight Whitespace cterm=underline gui=underline ctermbg=NONE guibg=NONE ctermfg=yellow guifg=yellow
    autocmd ColorScheme * highlight Whitespace gui=underline ctermbg=NONE guibg=NONE ctermfg=yellow guifg=yellow
    match Whitespace /  \+/
    

    これを使用すると、タブは として表示され|、スペースは として表示されます_。これにより、コード スタイルを混在させている場合に非常に簡単にわかります。

    私が見つけた唯一の欠点は、このスニペットがコンテキストに合わせて背景色を調整しないことです (コメントのように)。

    于 2012-06-26T07:23:29.127 に答える
    9

    上記のすべての回答は、vim 内からスペースを見えるようにしようとしています。目に見えるスペースをドットとして表示することを本当に主張する場合は、別のアプローチがあります...

    vim でできない場合は、フォントを完全に変更してください。Ubuntu One Mono フォントをコピーし、FontForge を使用して編集しました。別のフォントとして使用するには、フォントのフルネーム、ファミリ、優先ファミリ、互換性のあるフル (FontFoge では、フォント情報の TTF 名の下にあります) を変更することを忘れないでください。スペース文字を編集して真ん中にドットを入れ、フォントを ~/.fonts に保存するだけで、gvim または端末全体で使用できます... "!" をコピーしました 文字、行を削除し、ドットを中央に移動しました。5分以上かかりました…

    注: スペース文字 (0x20) を変更すると、vim 画面全体にドットが表示されるという不都合が生じます... (ただし、スペースとタブが分離されます...)

    于 2014-01-30T10:36:43.817 に答える
    9

    既存の回答から、私が望んでいたものを正確に見つけられませんでした。以下のコードは、すべての末尾のスペースを明るい赤で強調表示します。以下を.vimrc

    highlight ExtraWhitespace ctermbg=red guibg=red
    match ExtraWhitespace /\s\+$/
    autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
    autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
    autocmd InsertLeave * match ExtraWhitespace /\s\+$/
    autocmd BufWinLeave * call clearmatches()
    
    于 2016-11-21T20:37:03.840 に答える
    5
    :match CursorLine /\s\+/
    

    「スペースを表示するにはスペースを検索する必要があります」ビットを回避しますが、スペースに対して非強調表示を行うように構成することはできません。CursorLine は任意の強調表示グループにすることができ、デフォルトのテーマではプレーンな下線です。

    于 2011-06-06T07:53:32.690 に答える
    4

    ハイライト検索

    :set hlsearch 
    

    その中.vimrc

    スペースタブと改行を検索します

    / \|\t\|\r
    

    またはすべての空白文字を検索します

    /\s
    

    すべての非空白文字の検索 (空白文字は表示されないため、単語間の空白文字は表示されますが、末尾の空白文字は表示されません)

    /\S
    

    すべての末尾の空白文字を表示するには - 行末に

    /\s$
    
    于 2014-10-29T20:40:29.370 に答える
    4

    あなたが使用することができます

    :set list
    

    ラインの構造を実際に見ることができます。タブと改行が明示的に表示されます。ブランクを見ると、それは本当にブランクです。

    于 2009-11-04T18:21:54.123 に答える
    1

    スペースを強調表示することもできます (スペースをブロックに置き換えます)。

    :%s/ /█/g
    

    (書き込む前に元に戻す)

    于 2013-07-24T18:00:32.140 に答える
    1

    これを .vimrc に追加するとうまくいきます。他に競合するものがないことを確認してください..

    autocmd VimEnter * :syn match space /\s/
    autocmd VimEnter * :hi space ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
    
    于 2014-10-29T19:36:30.467 に答える