嗨,大家好,我只需要一個快速修復,如果你可以:使用Vim和我需要我的花括號自動關閉左括號鍵入。我有inoremap { {<CR>}<ESC>ko
這工作正常。但是,當我不需要時,我需要禁用它。所以我在想一個簡單的if語句來尋找一個')',因爲前一個字符就足夠了。但是,我不知道我應該如何在這裏做到這一點。任何幫助?在.vimrc中結合條件邏輯與inoremap
回答
這可以通過調用自定義函數來完成。
預賽
:help getline()
:函數getline({lnum}行[{端}])
沒有{end}結果是一個字符串,它是線{ lnum}從當前緩衝區中刪除。當{lnum}是一個不以數字開頭的字符串時,將調用line()將該字符串轉換爲一個數字。爲了得到線光標下:函數getline
:help col()
( 「」):山口({expr}的)
結果是一個數值,即字節索引{expr}給出的列位置。
所以,你可以將光標通過getline('.')[col('.') - 2]
前右側獲得字符。
:help feedkeys()
:feedkeys({串} [{模式}])
性狀{串}排隊等待處理,就像它們來自映射或進行鍵入的由用戶。默認情況下,字符串被添加到類型提前緩衝區的末尾,因此如果映射仍在執行,字符會緊跟其後。
要在{字符串}中包含特殊鍵,請使用雙引號和「...」符號表達式引用。例如,feedkeys(「\ < CR>」)模擬按下Enter>鍵。但是,feedkeys('\ < CR>')推送5個字符。
如果{mode}不存在,則會重新映射鍵。{模式}是字符串,它可以包含這些字符國旗:
'm' Remap keys. This is default. 'n' Do not remap keys.
:help i_CTRL-O
,:help i_CTRL-\_CTRL-O
:CTRL-O execute one command, return to Insert mode i_CTRL-O CTRL-\ CTRL-O like CTRL-O but don't move the cursor i_CTRL-\_CTRL-O
的作用
首先,ko
可以減少到一個單一的命令O
。
function! s:InsertBrace()
let l:last_char = getline('.')[col('.') - 2]
if l:last_char ==# ')'
call feedkeys("{\<CR>}\<Esc>O", 'n')
else
call feedkeys('{', 'n')
endif
endfunction
inoremap { <C-\><C-O>:call <SID>InsertBrace()<CR>
當我們按下{,我們稱之爲s:InsertBrace()
。該函數檢查當前光標下的字符。如果是)
,那麼我們插入{<CR>}<Esc>O
,注意逃生。否則,我們只需插入單個{
。在exe
命令,偉馳可以讓你保持所創建的自動縮進結束
inoremap { <c-o>:call InsertCurly()<cr>
function! InsertCurly()
normal! gi{
if search(')\s*\%#')
exe "normal! o}\<esc>ko \<bs>"
endif
endf
注意的空間和\<bs>
:
下應該這樣做。
也有很好的插件來自動關閉括號,但你必須看着它們來檢查它是否有條件。
這可能不是你正在尋找的。但是不要寫一個函數,因此不要製作複雜的vimrc。我用
逃生使用按Ctrl +v映射一個簡單但有點labourous方法,只要你不希望映射
- 1. 結合使用條件邏輯函數在Scala中
- 2. 撰寫與條件邏輯
- 3. 反轉邏輯與條件
- 4. 結合兩條if語句的邏輯
- 5. 條件邏輯
- 6. 條件邏輯
- 7. 條件邏輯
- 8. 如何將OR邏輯與named_scope結合?
- 9. ILNumerics:複方試驗不合邏輯:和兩個邏輯條件
- 10. 以XML格式存儲條件邏輯(邏輯結構)
- 11. Vue.js中的條件邏輯
- 12. header.php中的條件邏輯
- 13. Docusgin中的條件邏輯
- 14. PostgreSQL中的邏輯條件
- 15. 條件邏輯在HAML
- 16. 「no_entries」條件邏輯
- 17. PHP條件邏輯
- 18. SQL條件邏輯
- 19. 斯威夫特:結合條件和邏輯或
- 20. 結合邏輯運算符
- 21. 角,內聯結合邏輯
- 22. 問題與條件邏輯 - Ruby on Rails
- 23. Excel 2010邏輯條件與'#VALUE!'
- 24. 與MATLAB條件邏輯問題
- 25. 合併if語句與邏輯相關條件
- 26. 大熊貓條件邏輯與混合dtypes
- 27. 用邏輯條件發現問題的關鍵在於哪個邏輯集合
- 28. 在ruby中重構條件邏輯
- 29. 在數據庫中存儲符合條件的邏輯
- 30. 如何將彈簧錯誤標記邏輯與jstl邏輯相結合
感謝詳細的回答有很多在這裏有用的信息! – Rhurac