在 vim 8 中,如果你有以下字串:
package Some::Package::Name;
并且您將游標放在Sin上Some::Package::Name并執行了操作cw,它將Some用您輸入的任何內容替換文本。
在 vim 9 中,cw現在從S變為ein Name。
這種行為可能是由于
/usr/share/vim/vim90/syntax/perl.vim
肌肉記憶很難改變,如果我能恢復到 Vim8 的行為,我會更喜歡。我查看了上面的語法檔案,我完全不知道如何更改它。
有誰知道我如何在我的 vimrc 中覆寫這個更改?
我.vimrc在 vim8 和 vim9 之間保持不變。使用以下 perl 相關部分:
au BufRead,BufNewFile *.pm set filetype=perl
au BufRead,BufNewFile *.t set filetype=perl
let g:ale_perl_perl_executable = '/opt/perl/bin/perl'
let g:ale_perl_perl_options = '-c -Mwarnings -Ilib -I/opt/perl/lib'
let b:ale_linters = { 'perl': [ 'perl' ] }
let g:ale_sign_column_always = 1
uj5u.com熱心網友回復:
不,內置的語法腳本與此無關。
它是內置的檔案型別插件:
$VIMRUNTIME/ftplugin/perl.vim
添加:到:help 'iskeyword',這是告訴 Vim 下一個“單詞”從哪里開始的選項:
setlocal iskeyword =:
簡而言之,它告訴 Vim 這:是當前單詞的一部分,因此cw跳過它,因為它不再被視為分隔符。
該設定顯然是在9 年前添加的。
如果你不想要它,你可以創建這個檔案:
~/.vim/after/ftplugin/perl.vim
包含以下內容:
setlocal iskeyword-=:
它源自內置檔案型別插件,因此覆寫了您在其中設定的任何選項。
uj5u.com熱心網友回復:
我是vim-perl 專案的維護者之一,它為 vim 提供語法檔案。
你說
如果您將游標放在 Some::Package::Name 中的 S 上并執行 cw,它將用您鍵入的任何內容替換文本 Some。
在 vim 9 中,cw 現在從 S 更改為 Name 中的 e。
我沒有看到您為 vim 9 描述的那種行為。我懷疑 vim 9 中可能還有其他一些變化會干擾它。
我認為弄清楚為什么會這樣的更好地方是在描述問題的 vim-perl 專案中創建一個問題,我們會看看我們能做些什么來幫助你解決這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/513196.html
