I know my title is not that descriptive/clear so let me explain.
Yesterday I can across Vimgrep and copen so I added the below line in .vimrc
nnoremap <silent> ,/ :execute 'vimgrep /'.@/.'/g %'<CR>:copen<CR>
What it does is open a quickfix list for the searched(highlighted) word in vim.
Now when you press Enter<CR> in quickfix list it takes you to a corresponding line in the main Vim Window.
Now, the problem I am facing is I have mapped my <CR like map <CR> o<Esc> which creates a new line just below the current line.
So, as you can see there is a conflict b/w the two. So, what I am trying is to come up with a vim function like
Pseudo Code
function IfNotInsideQuickFix()
    if buffer != QuickFix
        then map <CR> o<Esc>
    elif buffer == QuickFix
         Normal behaviour
Call function
Here is the output of :buffers 
:buffers
  1 #a   "test.cs"                      line 0
  2 %a-  "[Quickfix List]"              line 1
Press ENTER or type command to continue
I have no experience in writing vim functions. So, can someone please guide me to it.
PS: I know that I can change my Vim mapping to create a new line but I want to learn how to do it via Vim function
Pressing Alt-F12 opens a window listing the buffers, and you can press Enter on a buffer name to go to that buffer. Or, press F12 (next) or Shift-F12 (previous) to cycle through the buffers.
Creating keymaps To map a sequence of keys to execute another sequence of keys, use the ':map' command. For example, the following command maps the <F2> key to display the current date and time. The ':map' command creates a key map that works in normal, visual, select and operator pending modes.
<silent> tells vim to show no message when this key sequence is used. <leader> means the key sequence starts with the character assigned to variable mapleader -- a backslash, if no let mapleader = statement has executed yet at the point nmap executes.
You can keep your global <CR> mapping as-is, but locally in quickfix windows restore the original behavior. This is done via an :autocmd (triggered when the quickfix window opens) that maps (without remapping) <CR> (locally via <buffer>) onto itself.
:autocmd BufReadPost quickfix nnoremap <buffer> <CR> <CR>
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With